使用说明

项目简介

'mcp-workers-ai' 是一个轻量级的 MCP(Model Context Protocol)服务器 SDK,专为在 Cloudflare Workers 环境中运行而设计。它简化了在 Cloudflare Workers 上构建 MCP 服务器的过程,主要用于向大型语言模型(LLM)提供工具调用功能。该 SDK 允许开发者轻松集成和管理各种工具,供 LLM 在推理过程中调用,从而增强 LLM 的能力。

主要功能点

  • 工具加载与管理: 允许动态加载和管理各种工具,扩展 LLM 的功能边界。
  • 工具调用: 支持接收和处理来自 LLM 的工具调用请求,并执行相应的工具。
  • Cloudflare Workers 集成: 无缝集成 Cloudflare Workers 平台,利用其 Serverless 特性,实现高可用和弹性伸缩的 MCP 服务。
  • 简化开发流程: 提供易于使用的 API,降低在 Cloudflare Workers 上构建 MCP 服务器的复杂性。

安装步骤

  1. 安装 npm 包: 在你的 Cloudflare Workers 项目中,使用 npm 或 yarn 安装 'mcp-workers-ai' 包:

    yarn add mcp-workers-ai
    # 或
    npm install -S mcp-workers-ai
  2. 配置 Cloudflare Workers 环境变量 (可选): 某些工具可能需要环境变量进行配置,例如 'GITLAB_PERSONAL_ACCESS_TOKEN' 用于 GitLab 工具。在你的 'wrangler.toml' 文件中配置 '[vars]' 部分:

    [vars]
    GITLAB_PERSONAL_ACCESS_TOKEN = "YOUR_GITLAB_PERSONAL_ACCESS_TOKEN"

服务器配置

由于 'mcp-workers-ai' 是一个 SDK,它本身并不提供独立的服务器启动命令。你需要将其集成到 Cloudflare Workers 的 'fetch' 函数中。以下是一个配置示例,展示了如何在 'wrangler.toml' 中配置 Cloudflare Worker,并加载和使用工具:

name = "your-mcp-worker-name"  # 你的 Worker 名称,自定义
main = "src/index.ts"        # 入口文件,通常是 src/index.ts

[ai]
binding = "AI"               # Cloudflare AI binding 名称,用于 LLM 推理

[vars]
GITLAB_PERSONAL_ACCESS_TOKEN = "YOUR_GITLAB_PERSONAL_ACCESS_TOKEN" # 工具所需的任何环境变量

[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" # 可选,用于路径别名简化

配置信息 (JSON 格式,用于 MCP 客户端):

{
  "serverName": "cloudflare-workers-mcp-server",
  "command": "wrangler",
  "args": [
    "dev"  // 或 "publish" 用于部署
    // 如果需要指定配置文件,可以添加 "--config wrangler.toml"
  ],
  "description": "Cloudflare Workers MCP Server (Tool-focused)",
  "transport": "HTTP" // 客户端应通过 HTTP 与 Cloudflare Worker 交互
}

参数注释:

  • 'serverName': MCP 服务器的名称,自定义即可。
  • 'command': 启动服务器的命令,这里使用 'wrangler' 是 Cloudflare Workers 的 CLI 工具。
  • 'args': 'wrangler' 命令的参数。 'dev' 用于本地开发, 'publish' 用于部署到 Cloudflare Workers。
  • 'description': 服务器的描述信息,方便客户端识别。
  • 'transport': 指明客户端与服务器通信的传输协议,Cloudflare Workers 通常通过 HTTP 协议对外提供服务。

注意: MCP 客户端需要配置能够访问你的 Cloudflare Worker URL 的方式,例如通过 'wrangler dev' 提供的本地 URL 或部署后 Cloudflare 分配的域名。

基本使用方法

  1. 编写 Cloudflare Worker 代码 (例如 'src/index.ts'):

    import { loadTools, callTool } from "mcp-workers-ai";
    
    export default {
      async fetch(request: Request, env: any): Promise<Response> {
        // 设置工具所需的环境变量 (例如从 Cloudflare Workers 环境变量中获取)
        process.env.GITLAB_PERSONAL_ACCESS_TOKEN = env.GITLAB_PERSONAL_ACCESS_TOKEN;
    
        // 加载工具,例如 GitLab 工具
        const tools = await loadTools([
          import("@modelcontextprotocol/server-gitlab/dist/"),
          // 可以加载更多工具...
        ]);
    
        const prompt = await request.text(); // 从请求体中获取用户 prompt
    
        // 调用 Cloudflare Workers AI 进行 LLM 推理,并传入工具列表
        const response = await env.AI.run(
          "@hf/nousresearch/hermes-2-pro-mistral-7b", // LLM 模型 ID
          {
            messages: [{ role: "user", content: prompt }],
            tools,
          }
        );
    
        // 处理工具调用
        if (response.tool_calls && response.tool_calls.length > 0) {
          const selected_tool = response.tool_calls[0];
          const toolResult = await callTool(selected_tool); // 调用 MCP 工具执行器
    
          // ... (后续处理工具调用结果,例如再次调用 LLM) ...
    
          return new Response("Tool called and processed."); // 简化的返回示例
        } else {
          return new Response(response.response); // 返回 LLM 的普通响应
        }
      },
    };
  2. 部署或本地运行 Cloudflare Worker: 使用 'wrangler dev' 在本地开发环境中运行,或使用 'wrangler publish' 部署到 Cloudflare Workers。

  3. MCP 客户端与 Worker 交互: MCP 客户端需要配置 Worker 的 URL 作为服务器地址,并按照 MCP 协议发送请求,例如工具列表请求或工具调用请求。客户端通常会发送 HTTP 请求到你的 Cloudflare Worker URL,Worker 的 'fetch' 函数会处理这些请求并返回响应。

注意事项

  • 'mcp-workers-ai' 主要关注工具功能的实现,可能不包含完整的 MCP 服务器所有功能(例如资源管理、Prompt 模板等),请根据实际需求评估。
  • 你需要安装并配置相应的工具包 (例如 '@modelcontextprotocol/server-gitlab') 才能使用对应的工具。
  • 确保 Cloudflare Workers 环境配置正确,包括 AI binding 和环境变量等。

信息

分类

AI与计算