远程MCP服务器示例实现
此项目包括:本地MCP服务器和远程MCP服务器的规格化距离的幂函数。Model Context Protocol (MCP)的多个实现模式TypeScript版、Python版、Go版、Rust版中所述方法的备选方法。
🎯 项目目标
- 本地MCP(stdio版本)和远程MCP(HTTP/SSE版本)的安装差异
- 为正式部署提供实施示例
- Cloudflare Workers中的边缘部署示例
- TypeScript版、Python版、Go版、Rust版の4言语で提供扩大语言的选择
📁 项目配置
remote-mcpserver-sample/
├── src/ # TypeScript版
│ ├── shared/
│ │ ├── tools/ # 共通ツール実装
│ │ └── types/ # 型定義
│ ├── local/
│ │ └── server.ts # ローカルMCPサーバー(stdio版)
│ ├── remote/
│ │ ├── express/
│ │ │ └── server.ts # リモートMCPサーバー(Express版)
│ │ └── cloudflare/
│ │ └── worker.ts # リモートMCPサーバー(Cloudflare Workers版)
│ └── utils/
│ ├── auth.ts # 認証ユーティリティ
│ └── logger.ts # ログ
├── python/ # Python版 🐍
│ ├── src/
│ │ ├── shared/
│ │ │ └── tools/ # 共通ツール実装
│ │ ├── local/
│ │ │ └── server.py # ローカルMCPサーバー(stdio版)
│ │ └── remote/
│ │ └── fastapi/
│ │ └── server.py # リモートMCPサーバー(FastAPI版)
│ ├── requirements.txt
│ └── README.md
├── go/ # Go版 🚀
│ ├── cmd/
│ │ ├── local/
│ │ │ └── main.go # ローカルMCPサーバー(stdio版)
│ │ └── remote/
│ │ └── main.go # リモートMCPサーバー(Gin版)
│ ├── internal/
│ │ ├── mcp/ # MCPプロトコル実装
│ │ └── tools/ # 共通ツール実装
│ ├── go.mod
│ └── README.md
├── rust/ # Rust版 🦀
│ ├── mcp-core/ # コアライブラリ
│ │ └── src/
│ │ ├── types.rs # MCP型定義
│ │ ├── server.rs # サーバーロジック
│ │ └── tools/ # ツール実装
│ ├── mcp-local/ # ローカルMCPサーバー(stdio版)
│ ├── mcp-remote/ # リモートMCPサーバー(Axum版)
│ ├── Cargo.toml
│ └── README.md
├── client/ # MCPクライアント実装
├── chat-ui/ # Web UI (Next.js)
├── config/ # Claude Desktop設定ファイル
├── deploy/ # デプロイ設定
├── docs/ # ドキュメント
└── README.md🔑 本地和远程的主要区别
| |项目|本地MCP | 远程MCP (Express) | 远程MCP (Cloudflare) | |
|---|---|---|---|
| 通信方式 | stdio | HTTP/SSE | HTTP/SSE(边缘) |
| 认证 不需要API密钥必需API密钥必需 | |||
| 起动方法 | Claude Desktop自动启动|需要手动启动|部署后自动运行| | ||
| 设置复杂性 |简单|中等|高度| | |||
| 网络 | 不要 | 必要 | 必要 |
| 缩放 单进程|垂直缩放|自动全局缩放| | |||
| 安全性 仅本地HTTPS、CORS、汇率限制HTTPS、CORS、DDoS保护 | |||
| 状态管理 内存/内存Redis | Durable Objects | ||
| 部署 | 不要 | VPS、铁路、渲染 | Cloudflare Workers |
| 成本 免费|收费(托管费用)|有免费名额| |
🚀 快速启动
前提条件
TypeScript版:
- Node.js 18以上
- npm 或yarn
Python版:
- Python 3.10以上
- 点
安装
TypeScript版
# リポジトリのクローン
git clone https://github.com/your-username/remote-mcpserver-sample.git
cd remote-mcpserver-sample
# 依存関係のインストール
npm install
# ビルド
npm run buildPython版
cd python
# 仮想環境の作成(推奨)
python3 -m venv venv
source venv/bin/activate
# 依存関係のインストール
pip install -r requirements.txtGo版
cd go
# 依存関係のインストール
go mod download
# ビルド
make buildRust版
cd rust
# ビルド(依存関係のダウンロードも自動)
cargo build1.本地MCP服务器(stdio版)
特徴:最简单的实现。Claude Desktop中所述修改相应参数的值。
# 開発モード
npm run dev:local
# または本番ビルド版
npm run start:localClaude Desktop设定 (config/claude_desktop_local.json):
{
"mcpServers": {
"local-mcp-sample": {
"command": "node",
"args": ["/absolute/path/to/dist/local/server.js"]
}
}
}2.远程MCP服务器(高速版)
特徴: HTTP/SSE通信、API密钥验证CORS对应。最适合开发和测试。
# .envファイルの作成
cp .env.example .env
# API_KEYを設定
# .envファイルを編集して API_KEY=your-secret-key を設定
# サーバーの起動
npm run dev:remote服务器是 http://localhost:3000 中所述修改相应参数的值。
Claude Desktop设定 (config/claude_desktop_remote.json):
{
"mcpServers": {
"remote-mcp-sample": {
"url": "http://localhost:3000/sse",
"headers": {
"Authorization": "Bearer your-secret-key"
},
"transport": "sse"
}
}
}3.远程MCP服务器(Cloudflare Workers版)
特徴:在边网络上运行、全局展开和自动缩放。面向生产环境。
# Cloudflare アカウントでログイン
npx wrangler login
# API_KEYの設定
npx wrangler secret put API_KEY
# デプロイ
npm run deploy:cfClaude Desktop设定 (config/claude_desktop_cloudflare.json):
{
"mcpServers": {
"remote-mcp-cloudflare": {
"url": "https://remote-mcp-server.your-subdomain.workers.dev/sse",
"headers": {
"Authorization": "Bearer your-api-key"
},
"transport": "sse"
}
}
}🛠️ 交付工具
所有实现都可以使用以下工具:
1. Calculator (计算机)
// 使用例
{
"operation": "add",
"a": 10,
"b": 5
}
// 結果: { "result": 15, "operation": "10 add 5 = 15" }2. Storage (简单KV存储)
// 保存
storage_set({ "key": "name", "value": "Alice" })
// 取得
storage_get({ "key": "name" })
// 削除
storage_delete({ "key": "name" })
// 一覧
storage_list()3. System Info (系统信息)
// プラットフォーム、アーキテクチャ、メモリ使用量などを取得
system_info()4. Echo (调试用)
// メッセージをエコーバック
echo({ "message": "Hello, MCP!" })📦 部署方法
Railway 部署到
- 铁路 创建帐户
- GitHub连接存储库
- 设置环境变量:
- API_KEY:任何强密码 - PORT: 3000
- 运行部署
详细: 文档/DEPLOY.md
Render 部署到
deploy/render.yaml使用- 渲染 在中连接存储库
- 环境变数
API_KEY的规格化距离的幂函数 - 自动部署
Cloudflare Workers 部署到
# ログイン
npx wrangler login
# デプロイ
npm run deploy:cf
# APIキーの設定
npx wrangler secret put API_KEY🔒 安全性
本地MCP服务器
- 本地运行无需验证
- 依赖于系统安全性
远程MCP服务器
- 必须: API密钥验证
- CORS设定
- 汇率限制(DoS对策)
- HTTPS推奨(本番环境)
- 在动态输入提示中API密钥管理
重要: .env 文件是Git不要承诺!
📖 文档
- 差异S.md -本地和远程的详细区别
- 部署.md -部署指南
- 故障排除.md -故障排除
- config/README.md - Claude Desktop配置指南
🧪 开発
构建
npm run build开发模式(热重载)
# ローカル版
npm run dev:local
# リモート版
npm run dev:remoteCloudflare Workers 本地开发
npm run cf:dev🎓 学习资源
📝 许可证
麻省理工学院
🤝 分发
欢迎拉式点播!
- 用叉子叉
- 创建特征分支(
git checkout -b feature/amazing-feature) - 提交(
git commit -m 'Add amazing feature') - 推动(
git push origin feature/amazing-feature) - 创建拉式请求
💡 用例
本地MCP如果服务器适合
- 个人利用
- 处理敏感数据
- 不需要网络连接时
- 简单的工具集
远程MCP如果服务器适合
- 团队共享
- 多设备访问
- 需要高级认证授权
- 需要可扩展性
- 访问远程资源
Cloudflare Workers适合的版本
- 需要全局部署
- 需要高可用性
- 需要自动缩放
- 利用边缘计算
- 企业级基础架构
🔧 故障排除
如果出现问题 docs/TROUBLESHOOTING.md 来修改标记元素的显示属性。
📞 支持
- 问题:
- MCP公式Discord: 参与链接
