Token导航 LogoToken导航

MCP Server · AI代理

Streamable MCP Server Template

一个用于构建MCP服务器的模板,支持Node.js和Cloudflare Workers双运行时,包含多种认证策略和加密令牌存储,适用于需要快速部署MCP协议服务器的开发场景。

未说明官方级别未说明来源级核验工具 0
服务器模板TypeScriptAI代理

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
iceener
提供方
iceener

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

129

仓库热度

收录来源

2 个

MCP World

选型结论

Streamable MCP Server Template 属于AI代理类 MCP Server,公开资料标注 0 个工具,通过传输方式未标注接入,客户端适配情况以官方文档为准,没有现成的安装命令;接入前要先准备 OAuth 授权。

分类

AI代理

传输方式

未说明

认证方式

OAuth 授权

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

公开资料仍需确认:安装命令

详细介绍

MCP流式HTTP服务器模板

这是什么?

用于构建MCP服务器的模板。克隆它,剥离你不需要的东西,连接你的API客户端,定义工具。它的设计是可读的,易于构建。

附带双运行时支持(来自同一代码库的Node.js和Cloudflare Workers)、五种身份验证策略、加密令牌存储以及最新MCP规范支持的几乎所有内容。

什么是MCP?

模型上下文协议是JSON-RPC 2.0有线协议,其中服务器公开类型化功能(操作工具、数据资源、模板提示),客户端(IDE、代理、聊天应用程序)根据LLM决策调用它们。

双方都不实现对方的逻辑:服务器对哪个LLM使用它们一无所知,客户端对工具的内部工作方式一无所知。这种解耦解决了N×M积分问题。一个服务器为任何兼容的客户端提供服务,一个客户端消耗任何兼容的服务器。

支持什么?

特性Node.jsWorkers注释
工具(列表、调用)✅✅核心能力,包括运行时
资源(列表、阅读、模板)✅✅静态和动态资源
提示(列表,获取)✅✅基于模板的提示生成
进度通知✅✅长时间运行的工具反馈
取消✅✅基于信号的中止
分页✅✅基于光标的大型列表
日志记录✅✅服务器→客户端日志消息
采样(服务器→客户端LLM)✅❌需要持久的SSE流
启发(用户输入)✅❌需要持久的SSE流
根目录(文件系统访问)✅❌需要客户端能力检查

支持的协议版本: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05.

入门

首先,生成一个加密密钥(两个运行时都需要这个密钥):

openssl rand -base64 32 | tr -d '=' | tr '+/' '-_'

Node.js

bun install
cp .env.example .env          # Configure PROVIDER_*, AUTH_*, OAUTH_* vars
                              # Set RS_TOKENS_ENC_KEY with generated key
bun dev                       # MCP: localhost:3000/mcp, OAuth: localhost:3001

Cloudflare员工

bun install
wrangler kv:namespace create TOKENS                    # Note the ID
# Update wrangler.toml with KV namespace ID

wrangler secret put PROVIDER_CLIENT_ID
wrangler secret put PROVIDER_CLIENT_SECRET
wrangler secret put RS_TOKENS_ENC_KEY                  # Paste generated key

wrangler dev                  # Local: localhost:8787/mcp
wrangler deploy               # Production: your-worker.workers.dev/mcp

服务器端点

端点方法目的
/mcpPOST、GET、DELETEMCP协议(JSON-RPC)
/healthGET健康检查+准备就绪
/.well-known/oauth-authorization-serverGETOAuth AS元数据
/.well-known/oauth-protected-resourceGET受保护的资源元数据
/authorizeGET启动OAuth流
/oauth/callbackGET提供程序重定向目标
/tokenPOST令牌交换
/registerPOST动态客户端注册
/revokePOST令牌撤销

发现端点也可在 /mcp/.well-known/* 前缀。

Node.js vs Cloudflare Workers

该模板从同一代码库生成两个运行时。以下是你需要知道的:

Node.js(HONO+@HONO/noe-srver)

  • 条目: src/index.ts
  • 传输:SDK StreamableHTTPServerTransport
  • 会议: MemorySessionStore (默认)或 SqliteSessionStore 为了坚持
  • 完整的MCP功能,包括双向请求(采样、启发、根)
  • 地方发展: bun dev

Cloudflare员工

  • 条目: src/worker.ts
  • 传输:自定义JSON-RPC调度器(shared/mcp/dispatcher.ts)
  • 会议: KvSessionStore 具有内存回退功能(在请求之间持续存在)
  • 请求→仅回复;没有服务器发起的消息
  • 部署: wrangler deploy

共享代码 住在 src/shared/ (工具、存储接口、OAuth流、实用程序)。运行时特定的适配器 src/adapters/http-hono/ 和 src/adapters/http-workers/.

何时使用哪个:

  • Node.js:本地开发,完整的MCP功能,自托管服务器
  • 工人:生产部署、全球优势、简单的工具包装

授权

命名约定(重要!)

使用 **通用的 PROVIDER_* 名字**,而不是特定于服务的名称。这使模板在所有MCP服务器上保持可移植性和配置一致性。

✅ 正确❌ 错了
PROVIDER_CLIENT_IDSPOTIFY_CLIENT_ID, LINEAR_CLIENT_ID
PROVIDER_CLIENT_SECRETSPOTIFY_CLIENT_SECRET, GMAIL_SECRET
PROVIDER_ACCOUNTS_URLSPOTIFY_ACCOUNTS_URL
PROVIDER_API_URLLINEAR_API_URL, GITHUB_API_URL

为什么?

  • 相同的环境变量名称适用于所有服务器(Spotify、Linear、Gmail等)
  • 部署脚本不需要特定于服务的逻辑
  • .env.example 和 wrangler.toml 保持通用模板
  • 更容易审计安全性(检查一种模式)

示例 .env:

# Generic provider config — same vars for any OAuth provider
PROVIDER_CLIENT_ID=your-client-id
PROVIDER_CLIENT_SECRET=your-client-secret
PROVIDER_ACCOUNTS_URL=https://accounts.spotify.com   # or github.com, etc.
PROVIDER_API_URL=https://api.spotify.com             # optional, for API calls

例外情况: 如果服务器同时集成多个提供程序(罕见),请在前面加上提供程序名称: GITHUB_CLIENT_ID, GITLAB_CLIENT_ID。单一提供商服务器应始终使用 PROVIDER_*.

认证策略

五种身份验证策略,通过配置 AUTH_STRATEGY env 是:

策略标题用例
oauthAuthorization: Bearer 使用RS令牌的完整OAuth 2.1 PKCE流→ 提供者令牌映射
bearerAuthorization: Bearer 静态令牌来自 BEARER_TOKEN env
api_keyX-Api-Key: (可配置)静态密钥来自 API_KEY env
custom多个标题来自的自定义标题 CUSTOM_HEADERS env
none--无身份验证

OAuth流(策略=OAuth):

  1. 客户端通过以下方式发现AS元数据 /.well-known/oauth-authorization-server
  2. 客户端启动PKCE流→ /authorize → 提供商登录
  3. 提供商回调→ 服务器发出RS令牌(访问+刷新)
  4. 客户端发送RS令牌→ 服务器映射到提供者令牌→ 工具使用提供程序API执行

令牌存储 (RS令牌→ 提供者令牌映射):

  • FileTokenStore --Node.js,基于文件,可选加密
  • MemoryTokenStore --两个运行时都在带TTL的内存中
  • KvTokenStore --工人,Cloudflare KV,可选加密
  • 所有支持AES-256-GCM加密 RS_TOKENS_ENC_KEY

会话

会话支持多租户操作。一个服务器实例可以为多个处于隔离状态的用户提供服务。两个运行时都使用 SessionStore 为了这个。

什么会议给你:

  • API密钥→ 会话绑定(谁拥有此连接)
  • 每个API密钥的会话限制(默认值:5,LRU逐出)
  • 对每个请求进行会话验证(无效/过期会话为404)
  • 每个会话的协议版本跟踪
  • 服务器→客户端请求路由(采样/启发需要知道哪个客户端)

哪些会话不会给你(这取决于代理):

  • 对话记忆(“回复该电子邮件”)
  • 工作流状态(草稿延续,最后一个问题ID)
  • 工具调用之间的上下文传递

存储实施:

存储运行时后端持久性
MemorySessionStore两者内存映射进程生存期
SqliteSessionStoreNode.js通过Drizzle实现SQLite磁盘
KvSessionStore工人Cloudflare KV全球

会话生命周期(根据MCP规范):

  1. 客户端发送 initialize 请求没有 Mcp-Session-Id 头球
  2. 服务器通过以下方式创建会话 SessionStore.create(sessionId, apiKey),在响应标头中返回会话ID
  3. 客户端发送 initialized 通知与 Mcp-Session-Id → 服务器将会话标记为已初始化
  4. 所有后续请求必须包括 Mcp-Session-Id (400错误请求,如果丢失)
  5. 服务器在每个请求上验证会话是否存在(如果无效/过期,则为404 Not Found)
  6. TTL(默认值:24小时)或客户端发送DELETE请求后会话过期

API密钥解析 (用于会话绑定):

  • X-Api-Key 或 X-Auth-Token 头(直接API密钥身份验证)
  • 持有者代币来自 Authorization 标头(OAuth RS令牌)
  • 静态 API_KEY 从配置(回退)
  • "public" (未经身份验证)

多租户模式:

User A (api_key_1) ──┐
                     │
User B (api_key_2) ──┼──▶ Single MCP Server ──▶ Provider API
                     │    (sessions isolate users)
User C (api_key_3) ──┘

添加工具

地点: src/shared/tools/

图案: 模式→ 元数据→ 处理器→ 注册

// 1. Define input schema with Zod
export const myToolInputSchema = z.object({
  query: z.string().describe('Search query'),
});

// 2. Create tool with defineTool()
export const myTool = defineTool({
  name: 'my_tool',
  title: 'My Tool',
  description: 'What it does',
  inputSchema: myToolInputSchema,
  outputSchema: { result: z.string() },  // optional
  annotations: {
    readOnlyHint: true,
    destructiveHint: false,
  },
  handler: async (args, context) => {
    // 3. Implement handler
    return {
      content: [{ type: 'text', text: args.query }],
      structuredContent: { result: args.query },  // required if outputSchema defined
    };
  },
});

// 4. Add to sharedTools array in registry.ts
export const sharedTools: RegisteredTool[] = [
  asRegisteredTool(healthTool),
  asRegisteredTool(echoTool),
  asRegisteredTool(myTool),  // ← add your tool here
];

注释 控制客户端如何显示/调用: readOnlyHint, destructiveHint, idempotentHint, openWorldHint.

服务: 对于复杂的集成,请将业务逻辑放入 src/shared/services/.提取时:处理程序超过30行,多个工具共享逻辑,或外部API需要速率限制/重试。简单的工具可以保持逻辑内联。

已知限制

Node.js运行时 --完整的MCP支持,包括服务器→通过SDK的客户端请求(采样、启发、根) StreamableHTTPServerTransport.会话通过以下方式持续 MemorySessionStore (默认)或 SqliteSessionStore 用于磁盘持久性。

Cloudflare Workers运行时 --请求→仅响应模式。会话通过以下方式持续 KvSessionStore 跨请求,但传输状态是无状态的(没有SSE流)。服务器→客户端请求(采样、启发、根)不可用,因为它们需要一个主动的SSE流,而Workers无法维护。将Workers用于简单的工具服务器;要获得完整的MCP功能,请使用Node.js或实现持久对象。

许可证

麻省理工学院

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

MCP协议TypeScript本地部署服务器模板双运行时支持认证策略加密存储

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 需要自备OAuth 授权,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 暂时拿不到OAuth 授权的人。
  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Streamable MCP Server Template

MCP World · 本页

0未说明未标注2 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Streamable MCP Server Template 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Streamable MCP Server Template 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Streamable MCP Server Template 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Streamable MCP Server Template 需要 API Key 吗?

公开资料标注的认证方式是OAuth 授权,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Streamable MCP Server Template 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP