这是一个基于Rust的模型上下文协议(MCP)服务器,它提供了一个V8 JavaScript运行时作为AI代理(如Claude和Cursor)的工具。支持通过S3或本地文件系统持久化堆快照,并且准备好与现代AI开发环境集成。
使用提供的安装脚本安装mcp-v8:
curl -fsSL https://raw.githubusercontent.com/r33drichards/mcp-js/main/install.sh | sudo bash
这将自动下载并安装最新版本到你的平台的/usr/local/bin/mcp-v8(可能需要输入密码)。
高级用户:如果你希望从源码构建,请参阅本文档末尾的从源码构建部分。
mcp-v8支持以下命令行参数:
--s3-bucket <bucket>:使用AWS S3进行堆快照。指定S3桶名。(与--stateless冲突)--directory-path <path>:使用本地目录进行堆快照。指定目录路径。(与--stateless冲突)--stateless:以无状态模式运行 - 不保存或加载任何堆快照。每次JavaScript执行都从一个新的V8隔离区开始。(与--s3-bucket和--directory-path冲突)--http-port <port>:在指定端口启用HTTP传输。如果没有提供,则服务器使用stdio传输(默认)。--sse-port <port>:在指定端口启用SSE(服务器发送事件)传输。(与--http-port冲突)注意:对于堆存储,如果未提供--s3-bucket、--directory-path或--stateless,服务器将默认使用/tmp/mcp-v8-heaps作为本地目录。
安装后,你可以直接运行服务器。选择以下选项之一:
# 使用S3进行堆存储(推荐用于云/持久使用)
mcp-v8 --s3-bucket my-bucket-name
# 使用本地文件系统目录进行堆存储(推荐用于本地开发)
mcp-v8 --directory-path /tmp/mcp-v8-heaps
# 使用无状态模式 - 不进行堆持久化(推荐用于一次性计算)
mcp-v8 --stateless
HTTP传输使用HTTP/1.1升级机制从HTTP切换到MCP协议:
# 在端口8080启动HTTP服务器,使用本地文件系统存储
mcp-v8 --directory-path /tmp/mcp-v8-heaps --http-port 8080
# 在端口8080启动HTTP服务器,使用S3存储
mcp-v8 --s3-bucket my-bucket-name --http-port 8080
# 在端口8080启动HTTP服务器,使用无状态模式
mcp-v8 --stateless --http-port 8080
HTTP传输适用于:
服务器发送事件(SSE)传输用于流式响应:
# 在端口8081启动SSE服务器,使用本地文件系统存储
mcp-v8 --directory-path /tmp/mcp-v8-heaps --sse-port 8081
# 在端口8081启动SSE服务器,使用无状态模式
mcp-v8 --stateless --sse-port 8081
--stateless)无状态模式在每个JavaScript执行中使用新的V8隔离区,没有堆持久化。
优点:
示例用例:简单的计算、数据转换或任何不需要在执行之间持久化状态的场景。
有状态模式使用S3或本地文件系统存储在执行之间持久化V8堆状态。
优点:
示例用例:增量构建数据结构、维护会话状态或重用昂贵的计算。
claude_desktop_config.json:有状态模式与S3:
{
"mcpServers": {
"js": {
"command": "/usr/local/bin/mcp-v8 --s3-bucket my-bucket-name"
}
}
}
无状态模式:
{
"mcpServers": {
"js": {
"command": "/usr/local/bin/mcp-v8 --stateless"
}
}
}
.cursor/mcp.json:有状态模式与本地文件系统:
{
"mcpServers": {
"js": {
"command": "/usr/local/bin/mcp-v8 --directory-path /tmp/mcp-v8-heaps"
}
}
}
无状态模式:
{
"mcpServers": {
"js": {
"command": "/usr/local/bin/mcp-v8 --stateless"
}
}
}
你也可以使用Railway上的托管版本而不需本地安装:
选项1:使用Claude设置
https://mcp-js-production.up.railway.app/sse选项2:使用Claude Code CLI
claude mcp add mcp-v8 -t sse https://mcp-js-production.up.railway.app/sse
然后通过运行claude并询问:“运行这个JavaScript:[1,2,3].map(x => x * 2)”来测试。
1 + 2”你可以使用以下命令行参数配置堆存储:
--s3-bucket <bucket>
mcp-v8 --s3-bucket my-bucket-name--directory-path <path>
mcp-v8 --directory-path /tmp/mcp-v8-heaps--stateless
mcp-v8 --stateless注意:一次只能使用一种存储选项。如果提供了多个选项,服务器将返回错误。
尽管mcp-v8提供了一个强大且持久的JavaScript执行环境,但其运行时存在一些限制。
async/await或Promises:不支持异步JavaScript。所有代码必须是同步的。fetch或网络访问:没有内置的方式进行HTTP请求或访问网络。console.log或标准输出:console.log或其他类似函数的输出不会显示。要返回结果,请确保你想要的值是代码的最后一行。npm install或外部包:不能安装或导入npm包。只有标准JavaScript(ECMAScript)内置功能可用。setTimeout和setInterval这样的函数不可用。window、document或其他特定于浏览器的对象的访问。如果你希望从源码构建而不是使用安装脚本:
cd server
cargo build --release
构建好的二进制文件位于server/target/release/server。如果需要,可以在上面的集成步骤中使用此路径代替/usr/local/bin/mcp-v8。