mcp服务器远程
这个存储库是一个远程MCP服务器的演示,它使用谷歌作为身份提供者,用TypeScript编写。看这个 2分钟视频 查看概述。
入门指南
- 第一步是通过以下步骤获取OAuth客户端ID和客户端密钥 本指南建议使用以下授权重定向URI:
- http://localhost:6274/oauth/callback/debug-由MCP检查员授权流程使用,如 测试区 在......下面 - http://localhost:6274/oauth/callback-由MCP检查员使用 - https://developers.google.com/oauthplayground-由谷歌使用 OAuth 2.0游乐场 如果你 使用您自己的凭据.
- 一旦你有了客户端ID和客户端密码,复制 .env.示例 到
.env.local并替换假值。
- 跑
pnpm install随后pnpm run dev。您应该在终端中看到以下输出:
Authorization Server listening on port 3001
MCP Streamable HTTP Server listening on port 3000- 跟随 测试区 下面测试您的MCP服务器。
(OPTIONAL) Claude Code setup
- CLAUDE.md 希望你有https://github.com/modelcontextprotocol/typescript-sdk克隆到
../mcp-typescript-sdk这使得Claude更容易引用SDK源代码,而不必深入node_modules。
- 创建
.claude/settings.local.json基于以下内容:
{
"permissions": {
"additionalDirectories": [
"/path/to/mcp-typescript-sdk" // TODO
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Read",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-env-files.sh"
}
]
}
]
}
}测试
- 通过启动服务器
pnpm run dev - 启动 MCP检查员 通过
npx @modelcontextprotocol/inspector并在左侧窗格中设置以下选项:
- 传输类型:流式HTTP - 网址:http://localhost:3000/mcp - 连接类型:直接
- 要测试身份验证,请执行以下操作 _不_ 单击“连接”按钮。相反,
- 单击“打开身份验证设置”按钮 - 在OAuth身份验证卡中,单击引导令牌刷新 - 使用“继续”按钮单击
- 要测试MCP服务器,请单击连接按钮。
发展
编码结构
- index.ts -启动MCP和授权服务器
- 谷歌-作者提供者 -通过Google OAuth处理身份验证
- 断开连接ts -支持 优雅关闭
- get_mcp-server.ts -定义MCP工具、资源等。
授权方式
由于谷歌不支持动态客户端注册(DCR),我们需要在使用我们预先注册的谷歌OAuth客户端凭据的同时,向MCP客户端提供符合DCR的接口,从而弥合这一差距。这种方法的灵感来自 FastMCP的OAuthProxy.
优雅关闭
这 断开模块 充当中央注册表,其他模块可以在其中注册其清理方法。这对于创建有状态资源(例如数据库连接、HTTP服务器)的模块非常有用,这些资源需要在Node.js退出之前进行适当的清理。
如果没有中央注册表,我们需要:
- 跟踪所有有状态的资源
- 记得给每个人打电话进行清理
- 分别处理每次清理中的错误
- 呼叫 进程退出 这是不推荐的
使用此模块,我们只需要调用一个 disconnect() 功能正常,一切正常关闭。
历史
此代码是从以下位置初始化的 simple无状态流Http.ts MCP TypeScript SDK中的示例。
