此 MCP 服务器提供现代运行时环境下的 JavaScript 执行能力。
executeJS 工具提供:
console.log()、console.error()、console.warn()(内置)serve() 用于创建服务器(通过 require('http/server'))fetch(),包括 Request、Response、Headers、FormData(全局可用)setTimeout()、setInterval()、clearTimeout()、clearInterval()(全局可用)require('crypto'))require('cache'))go install github.com/mark3labs/codebench-mcp@latest
codebench-mcp
# 只启用特定模块
codebench-mcp --enabled-modules http,fetch
# 禁用特定模块(启用其他所有模块)
codebench-mcp --disabled-modules timers
# 设置自定义执行超时时间(秒)
codebench-mcp --execution-timeout 600 # 10 分钟
# 显示帮助
codebench-mcp --help
可用模块:
http - 创建 HTTP 服务器和客户端请求(需 require('http/server'))fetch - 现代 fetch API,包括 Request、Response、Headers、FormData(全局可用)timers - setTimeout、setInterval、clearTimeout、clearInterval(全局可用)buffer - 处理二进制数据的 Buffer、Blob、File API(全局可用)cache - 支持 TTL 的内存缓存(需 require('cache'))crypto - 加密函数(哈希、加密、HMAC)(需 require('crypto'))encoding - 文本编码/解码的 TextEncoder、TextDecoder(全局可用)url - URL 和 URLSearchParams API(全局可用)默认情况下所有模块都已启用。您可以使用 CLI 标志选择性地启用或禁用模块。
注意: executeJS 工具描述会动态更新以仅显示启用的模块,并包含每个模块提供的详细信息。
package main
import (
"log"
"github.com/mark3labs/codebench-mcp/server"
"github.com/mark3labs/mcp-go/server"
)
func main() {
// 创建一个新的 JavaScript 执行器服务器
jss, err := server.NewJSServer()
if err != nil {
log.Fatalf("无法创建服务器:%v", err)
}
// 处理请求
if err := server.ServeStdio(jss); err != nil {
log.Fatalf("服务器错误:%v", err)
}
}
package main
import (
"context"
"log"
"github.com/mark3labs/codebench-mcp/server"
"github.com/mark3labs/mcp-go/client"
"github.com/mark3labs/mcp-go/mcp"
)
func main() {
// 使用自定义模块配置创建 JS 服务器
config := server.ModuleConfig{
EnabledModules: []string{"fetch", "crypto", "buffer"},
}
jsServer, err := server.NewJSServerWithConfig(config)
if err != nil {
log.Fatalf("无法创建服务器:%v", err)
}
// 创建一个进程内客户端
mcpClient, err := client.NewInProcessClient(jsServer)
if err != nil {
log.Fatalf("无法创建客户端:%v", err)
}
defer mcpClient.Close()
// 启动客户端
if err := mcpClient.Start(context.Background()); err != nil {
log.Fatalf("无法启动客户端:%v", err)
}
// 初始化客户端
initRequest := mcp.InitializeRequest{}
initRequest.Params.ProtocolVersion = mcp.LATEST_PROTOCOL_VERSION
initRequest.Params.ClientInfo = mcp.Implementation{
Name: "my-app",
Version: "1.0.0",
}
_, err = mcpClient.Initialize(context.Background(), initRequest)
if err != nil {
log.Fatalf("初始化失败:%v", err)
}
// 执行 JavaScript 代码
callRequest := mcp.CallToolRequest{}
callRequest.Params.Name = "executeJS"
callRequest.Params.Arguments = map[string]any{
"code": `
console.log("来自 JavaScript 的问候!");
const result = Math.sqrt(16);
console.log("16 的平方根是:", result);
result;
`,
}
result, err := mcpClient.CallTool(context.Background(), callRequest)
if err != nil {
log.Fatalf("调用工具失败:%v", err)
}
if result.IsError {
log.Printf("JavaScript 执行错误:%v", result.Content)
} else {
log.Printf("JavaScript 执行结果:%v", result.Content)
}
}
要将此服务器与支持 MCP 的应用程序集成:
{
"mcpServers": {
"javascript": {
"command": "codebench-mcp"
}
}
}
您可以使用 Docker 运行 JavaScript 执行器 MCP 服务器:
docker run -i --rm ghcr.io/mark3labs/codebench-mcp:latest
要将 Docker 镜像与支持 MCP 的应用程序集成:
{
"mcpServers": {
"javascript": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mark3labs/codebench-mcp:latest"
]
}
}
}
在现代运行时环境中执行 JavaScript 代码。
参数:
code(必需):要执行的 JavaScript 代码配置:
--execution-timeout <秒数> CLI 标志进行配置示例:
console.log("你好,世界!");
// 基本的 JavaScript 执行
const result = 2 + 3;
console.log('结果:', result);
// Fetch API(启用时全局可用)
const response = await fetch('https://api.example.com/data');
const data = await response.json();
// HTTP 服务器(需导入)
const serve = require('http/server');
serve(8000, async (req) => {
return new Response('你好世界');
});
// 缓存操作(需导入)
const cache = require('cache');
cache.set('key', 'value');
console.log(cache.get('key'));
// 加密操作(需导入)
const crypto = require('crypto');
const hash = crypto.md5('hello').hex();
console.log('MD5 哈希:', hash);
// 计时器(全局可用)
setTimeout(() => console.log('一秒后问候'), 1000);
// 缓冲区操作(全局可用)
const buffer = Buffer.from('hello', 'utf8');
console.log(buffer.toString('base64'));
// URL 操作(全局可用)
const url = new URL('https://example.com/path?param=value');
console.log('主机:', url.host);
console.log('路径名:', url.pathname);
go build -o codebench-mcp .
详情见 LICENSE 文件。