Token导航 LogoToken导航TokenDH.com
MCP Server Worker logo
搜索检索未说明官方级别未说明来源级核验

MCP Server Worker

MCP Server

一个部署在Cloudflare Workers上的生产级语义搜索服务器,通过HTTP提供基于AI和向量化的语义搜索功能。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
搜索Cloudflare WorkersAI搜索HTTP服务器

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

dannwaneri

提供方

dannwaneri

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Cloudflare Workers上的MCP服务器

部署到Cloudflare Workers的生产就绪模型上下文协议(MCP)服务器,通过Workers AI和Vectorize提供基于HTTP的语义搜索。

建筑

Any Client ──HTTP──> Workers MCP Server ──> Workers AI + Vectorize

这是一个 完全远程MCP服务器 -不需要本地依赖关系。可通过HTTP从任何地方访问。

特性

  • HTTP到MCP适配器:自定义实现(MCP SDK需要stdio,我们使用HTTP)
  • 语义搜索:具有向量相似性的自然语言查询
  • 智能搜索工具:使用AI驱动的合成上下文进行搜索(新增!)
  • 边缘部署:在Cloudflare的网络上全球运行
  • 工人AI集成: bge-small-en-v1.5 嵌入(384个维度)
  • 矢量化搜索:HNSW索引用于快速相似性搜索
  • CORS已启用:适用于web应用程序和API客户端
  • 生产就绪:包括错误处理、正确响应

为什么采用这种方法?

官方MCP SDK使用 stdio传输 (标准输入/输出),适用于本地进程,但不适用于无服务器Workers。我们构建了一个自定义HTTP适配器,通过HTTP实现MCP协议。

先决条件

  • 启用Workers的Cloudflare帐户
  • Wrangler CLI已安装
  • 创建并填充矢量化索引

设置

1.克隆并安装:

git clone https://github.com/dannwaneri/mcp-server-worker.git
cd mcp-server-worker
npm install

2.创建矢量化索引:

wrangler vectorize create mcp-knowledge-base --dimensions=384 --metric=cosine

3.配置 wrangler.jsonc:

{
  "name": "mcp-server-worker",
  "main": "src/index.ts",
  "compatibility_date": "2025-12-02",
  "compatibility_flags": ["nodejs_compat"],
  "observability": {
    "enabled": true
  },
  "ai": {
    "binding": "AI"
  },
  "vectorize": [
    {
      "binding": "VECTORIZE",
      "index_name": "mcp-knowledge-base"
    }
  ]
}

4.部署:

wrangler deploy

您的MCP服务器将在以下网址提供: https://mcp-server-worker.YOUR-SUBDOMAIN.workers.dev

填充数据

您需要先填充Vectorize索引。使用 矢量化mcp工作者 要做到这一点:

curl -X POST https://vectorize-mcp-worker.YOUR-SUBDOMAIN.workers.dev/populate

API终点

GET /health

健康检查端点。

答复:

{
  "status": "ok",
  "server": "mcp-server-worker",
  "version": "1.0.0"
}

POST /mcp

MCP协议端点。接受JSON-RPC风格的请求。

列出工具

请求:

{
  "method": "tools/list",
  "params": {}
}

答复:

{
  "tools": [
    {
      "name": "semantic_search",
      "description": "Search the knowledge base using semantic similarity...",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string" },
          "topK": { "type": "number", "default": 5 }
        },
        "required": ["query"]
      }
    }
  ]
}

呼叫工具

请求:

{
  "method": "tools/call",
  "params": {
    "name": "semantic_search",
    "arguments": {
      "query": "vector databases",
      "topK": 3
    }
  }
}

答复:

{
  "content": [
    {
      "type": "text",
      "text": "{\"query\":\"vector databases\",\"resultsCount\":3,\"results\":[...]}"
    }
  ]
}

使用示例

卷曲

列出工具:

curl -X POST https://mcp-server-worker.YOUR-SUBDOMAIN.workers.dev/mcp \
  -H "Content-Type: application/json" \
  -d '{"method":"tools/list","params":{}}'

语义搜索:

curl -X POST https://mcp-server-worker.YOUR-SUBDOMAIN.workers.dev/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "method": "tools/call",
    "params": {
      "name": "semantic_search",
      "arguments": {"query": "AI embeddings", "topK": 5}
    }
  }'

JavaScript/TypeScript

const response = await fetch('https://mcp-server-worker.YOUR-SUBDOMAIN.workers.dev/mcp', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    method: 'tools/call',
    params: {
      name: 'semantic_search',
      arguments: { query: 'vector databases', topK: 3 }
    }
  })
});

const data = await response.json();
const results = JSON.parse(data.content[0].text);
console.log(results);

python

import requests

response = requests.post(
    'https://mcp-server-worker.YOUR-SUBDOMAIN.workers.dev/mcp',
    json={
        'method': 'tools/call',
        'params': {
            'name': 'semantic_search',
            'arguments': {'query': 'vector databases', 'topK': 3}
        }
    }
)

data = response.json()
print(data['content'][0]['text'])

HTTP到MCP适配器实现

关键创新是将HTTP请求映射到MCP协议:

// HTTP POST /mcp
{
  "method": "tools/list",
  "params": {}
}

// Maps to MCP ListToolsRequestSchema
// Returns tools array

// HTTP POST /mcp
{
  "method": "tools/call",
  "params": {
    "name": "semantic_search",
    "arguments": {...}
  }
}

// Maps to MCP CallToolRequestSchema
// Executes tool, returns result

演出

全球边缘部署提供:

  • 47毫秒 平均查询延迟(拉各斯到旧金山)
  • 23毫秒 来自伦敦
  • 31毫秒 来自旧金山
  • 52毫秒 来自悉尼

故障:

  1. 生成查询嵌入:~18ms
  2. 矢量化相似性搜索:~8ms
  3. 格式化和返回:~21ms

生产改进

添加身份验证

const apiKey = request.headers.get("Authorization");
if (apiKey !== env.API_KEY) {
  return new Response("Unauthorized", { status: 401 });
}

将API密钥存储为机密:

wrangler secret put API_KEY

添加速率限制

使用耐用对象或跟踪KV中的请求:

const clientId = request.headers.get("CF-Connecting-IP");
const rateLimitKey = `ratelimit:${clientId}`;
const count = await env.KV.get(rateLimitKey);

if (parseInt(count || "0") > 100) {
  return new Response("Rate limit exceeded", { status: 429 });
}

await env.KV.put(rateLimitKey, String(parseInt(count || "0") + 1), {
  expirationTtl: 3600
});

添加监控

使用Workers分析引擎:

ctx.waitUntil(
  env.ANALYTICS.writeDataPoint({
    blobs: ["semantic_search", clientId],
    doubles: [latency, score],
    indexes: [Date.now()]
  })
);

地方发展

wrangler dev

访问地址: http://localhost:8787

故障排除

“未连接”错误:

  • 确保 nodejs_compat 旗帜在 wrangler.jsonc
  • 检查AI和Vectorize绑定是否已配置
  • 验证索引是否存在: wrangler vectorize list

没有搜索结果:

  • 首先填充索引(请参阅“填充数据”)
  • 检查索引是否有向量:使用Cloudflare仪表板

响应缓慢:

  • 检查Workers Analytics是否存在瓶颈
  • 考虑在KV中缓存嵌入
  • 使用最近的Cloudflare数据中心进行验证

技术栈

  • Cloudflare员工:无服务器执行
  • 工人AI: @cf/baai/bge-small-en-v1.5 (384个暗嵌入)
  • 矢量化:HNSW索引,余弦相似度
  • TypeScript:类型安全开发

成本估算

每月100000次搜索:

  • 人工智能嵌入:0.40美元
  • 矢量化:包含在工人计划中(每月5美元)
  • 工人要求:免费(1000万以下)

总计:约5.40美元/月

与其他架构的比较

架构可访问性延迟设置复杂性
本地(stdio)仅限克劳德桌面即时简单
混合(桥接)仅限克劳德台式机~100ms中等
工作者(HTTP)任何地方20-50ms中等

这种Workers方法最适合:

  • 生产应用
  • 网络/移动应用程序
  • 团队协作
  • API集成
  • SaaS产品

相关项目

了解更多

阅读完整教程: 使用语义搜索在Cloudflare Workers上构建MCP服务器

许可证

麻省理工学院

作者

丹尼尔·恩瓦内里- | Upwork

目录标签

目录标签

搜索Cloudflare WorkersAI搜索HTTP服务器语义搜索TypeScript本地部署向量化搜索CloudflareWorkers

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP