workers-mcp从Claude Desktop连接到Cloudflare Worker!
[!警告]
您应该从这里开始——并构建一个远程MCP服务器。您可以从Claude Desktop、Cursor和其他客户端使用mcp-remote连接到远程MCP服务器。
workers-mcp是什么?此包提供了CLI工具和在Worker中的逻辑,以将Claude Desktop(或任何MCP客户端)连接到您账户上的Cloudflare Worker,因此您可以根据需要自定义它。它是通过一个构建步骤来工作的,该步骤可以将您的Worker中的TypeScript方法翻译成如下形式:
export class ExampleWorkerMCP extends WorkerEntrypoint<Env> {
/**
* 生成一个随机数。这个随机数特别随机,因为它必须经过长途跋涉到达您最近的Cloudflare POP进行计算,这……某种东西的灯泡?
*
* @return {string} 包含超级随机数的消息
* */
async getRandomNumber() {
return `您的随机数是 ${Math.random()}`
}
// ...等等
}
...转换成本地Node.js服务器可以暴露给MCP客户端的MCP工具。Node.js服务器充当代理,处理本地的stdio传输,并调用在Cloudflare上运行的您的Worker的相关方法。这允许您将应用程序中的任何函数或API,或者Cloudflare开发者平台中的任何服务,暴露回您的编码代理Claude Desktop或其他MCP客户端。
<sub>是的,我知道
Math.random()在Worker和本地机器上工作方式相同,但不要告诉Claude</sub> 🤫
使用create-cloudflare生成一个新的Worker。
npx create-cloudflare@latest my-new-worker
我建议选择一个“Hello World”Worker。
workers-mcpcd my-new-worker # 我总是忘记这一步
npm install workers-mcp
setup命令npx workers-mcp setup
注意:如果出现问题,请运行npx workers-mcp help
更改您的Worker代码后,只需运行npm run deploy即可更新Claude关于您的函数的元数据以及您的实时Worker实例。
然而,如果您更改了方法名称、参数,或添加或删除了方法,Claude将不会看到这些更新,直到您重新启动它。
您不应该需要重新运行npx workers-mcp install:claude,但如果要排除Claude配置作为错误来源,这样做是安全的。
要在Cursor中使您的Cloudflare MCP服务器工作,您需要将配置文件中的'command'和'args'合并成一个字符串,并使用类型'command'。
例如,如果您的配置文件如下所示:
{
"mcpServers": {
"your-mcp-server-name": {
"command": "/path/to/workers-mcp",
"args": [
"run",
"your-mcp-server-name",
"https://your-server-url.workers.dev",
"/path/to/your/project"
],
"env": {}
}
}
}
在Cursor中创建一个MCP服务器条目:
command/path/to/workers-mcp run your-mcp-server-name https://your-server-url.workers.dev /path/to/your/project对于Windsurf和其他MCP客户端,更新您的配置文件以包含您的worker,这样可以直接从客户端使用工具:
{
"mcpServers": {
"your-mcp-server-name": {
"command": "/path/to/workers-mcp",
"args": [
"run",
"your-mcp-server-name",
"https://your-server-url.workers.dev",
"/path/to/your/project"
],
"env": {}
}
}
}
确保替换占位符为您实际的服务器名称、URL和项目路径。
查看examples目录以获取一些使用此功能的想法:
examples/01-hello-world是在上述安装说明之后拍摄的快照examples/02-image-generation使用Workers AI运行Flux图像生成模型。Claude非常擅长提出提示,并且实际上可以解释结果并决定尝试哪些新的提示以实现您想要的结果。