MCP Workers AI
用于Cloudflare Workers的MCP服务器SDK。
MCP Workers AI Quick Start Guide
适用于 Cloudflare Workers 的 MCP 服务器 SDK
基本安装
yarn add mcp-workers-ai
# 或者
npm install -S mcp-workers-ai
核心功能
1. 加载工具
import { loadTools } from "mcp-workers-ai"
const tools = await loadTools([
import("@modelcontextprotocol/server-gitlab"),
import("@modelcontextprotocol/server-slack"),
]);
// 将 tools 传递给 LLM 推理请求
2. 调用工具
import { callTool } from "mcp-workers-ai"
// LLM 选择的工具示例
const selected_tool = {
arguments: {
project_id: 'svensauleau/test',
branch: 'main',
files: [ /* 文件内容 */ ],
commit_message: 'added unit tests'
},
name: 'push_files'
};
const res = await callTool(selected_tool)
// 将 res 传回 LLM 推理请求
完整工作流示例
Wrangler 配置 (wrangler.toml)
name = "test"
main = "src/index.ts"
[ai]
binding = "AI"
[vars]
GITLAB_PERSONAL_ACCESS_TOKEN = "glpat-aaaaaaaaaaaaaaaaaaaa"
[alias]
"@modelcontextprotocol/sdk/server/index.js" = "mcp-workers-ai/sdk/server/index.js"
"@modelcontextprotocol/sdk/server/stdio.js" = "mcp-workers-ai/sdk/server/stdio.js"
Worker 示例代码
import { loadTools, callTool } from "mcp-workers-ai"
export default {
async fetch(request: Request, env: any): Promise<Response> {
// 设置工具所需的环境变量
process.env.GITLAB_PERSONAL_ACCESS_TOKEN = env.GITLAB_PERSONAL_ACCESS_TOKEN;
// 加载所需工具
const tools = await loadTools([
import("@modelcontextprotocol/server-gitlab/dist/"),
]);
const prompt = await request.text();
// 初始 AI 调用
const response = await env.AI.run(
"@hf/nousresearch/hermes-2-pro-mistral-7b",
{
messages: [{ role: "user", content: prompt }],
tools,
},
);
// 处理工具调用
if (response.tool_calls && response.tool_calls.length > 0) {
const selected_tool = response.tool_calls[0];
const res = await callTool(selected_tool)
// 最终 AI 调用整合工具执行结果
const finalResponse = await env.AI.run(
"@hf/nousresearch/hermes-2-pro-mistral-7b",
{
messages: [
{ role: "user", content: prompt },
{ role: "assistant", content: "", tool_call: selected_tool.name },
{ role: "tool", name: selected_tool.name, content: res.content[0].text },
],
tools,
},
);
return new Response(finalResponse.response);
} else {
return new Response(response.response);
}
}
};
使用示例
curl http://example.com -d "在项目 svensauleau/test 的主分支上创建一个名为 'joke.txt' 的文件,内容为你最喜欢的笑话。使用提交信息 'added unit tests'"
结果将显示 AI 已成功在指定项目中创建了文件。