使用说明
SimpleMCP - 基本的MCP集成示例
一个简单且具有教育意义的项目,展示了如何与(某系统/平台)进行集成 人类模型上下文协议(MCP) 同时使用两者 STDIO(标准输入输出) 并且 HTTP/SSE(服务器发送事件) 交通。
📖 这是什么?
SimpleMCP 是一个最小示例,展示了如何构建一个与任何MCP兼容客户端都能协同工作的MCP服务器。它实现了一个简单的讲故事服务,通过 两种运输方式:
- STDIO(标准输入输出) (stdin/stdout) - 用于本地MCP客户端
- HTTP/SSE(服务器发送事件) (服务器发送事件)- 用于远程MCP客户端和Web应用程序
非常适合学习如何构建MCP服务器并将其与任何MCP客户端集成!
🎯 你将学到的内容
- 如何使用官方的Anthropic MCP SDK
- 实现带有STDIO传输的MCP服务器
- 使用HTTP/SSE传输实现MCP服务器
- 业务逻辑与协议层之间的清晰分离
- 测试MCP服务器
⚡ 快速启动
1. 安装
# Clone the repository
git clone https://github.com/dondetir/simpleMCP.git
cd simpleMCP
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
2. 运行测试
pytest tests/
3. 试一试
选项A:STDIO客户端(例如,Claude桌面版)
# See CLIENT_SETUP.md for full instructions
# Add to your MCP client configuration and restart
选项B:HTTP服务器
# Start the HTTP server
python mcp_http_server.py
# Server runs on http://localhost:8000/sse
选项C:测试客户端
# Use the example test client
python examples/test_mcp_client.py --stdio
python examples/test_mcp_client.py --http
🏗️ 项目结构
SimpleMCP/
├── mcp_server.py # STDIO transport server
├── mcp_http_server.py # HTTP/SSE transport server
├── story_manager.py # Core business logic (transport-independent)
├── stories/stories.json # Sample data
├── tests/ # Unit and integration tests
├── examples/ # Example clients and configs
└── requirements.txt # Python dependencies
🔧 它的工作原理
建筑
┌─────────────────────────┐
│ Any MCP Client │
│ (Desktop/CLI/Web/etc) │
└──────────┬──────────────┘
│
│ MCP Protocol (JSON-RPC 2.0)
│
┌──────▼───────┐
│ Transport │
│ STDIO or SSE │
└──────┬───────┘
│
┌──────▼────────┐
│ MCP Server │
│ (this project)│
└──────┬────────┘
│
┌──────▼─────────┐
│ Business Logic │
│story_manager.py│
└────────────────┘
可用工具
两台服务器都提供了相同的两个MCP工具:
list_stories- 返回所有可用的故事(ID和标题)get_story- 通过ID返回完整故事
示例故事
服务器包含5个示例故事:
squirrel_and_owl《好奇的小松鼠和智慧的猫头鹰》bear_loses_roar- 失去咆哮的熊turtle_wants_to_fly《想飞的乌龟》lonely_firefly- 孤独的萤火虫rabbit_and_carrot- 兔子与神奇的胡萝卜
📚 文档
- QUICK_START_MCP.md 翻译为中文是:“快速入门指南_MCP.md” 或 “MCP快速启动手册.md”(具体翻译可能根据上下文略有调整,但基本意思保持一致) - 快速参考指南
- `CLIENT_SETUP.md` 翻译为中文是:“客户端设置说明文件” - 详细的MCP客户端设置指南
- 示例/README.md(注:这里的“examples”通常翻译为“示例”,“README.md”是一个文件名,直接保留原样) - 示例客户端和配置
🧪 测试
# Run all tests
pytest tests/
# Run with coverage
pytest tests/ --cov=. --cov-report=term-missing
# Run specific test file
pytest tests/test_mcp_servers.py -v
💡 扩展这个例子
想搭建自己的MCP服务器吗?方法如下:
- 定义你的业务逻辑 (像
story_manager.py) - 创建工具函数 (与)……一起/带着
@mcp.tool()装饰器 - 选择您的交通工具 (本地使用STDIO,远程使用HTTP/SSE)
- 使用MCP Inspector进行测试 或者例如客户
请参阅代码注释以获取详细解释!
🛠️ 技术栈
- Python 3.8或更高版本
- MCP SDK(MCP软件开发工具包) (
mcp>=1.17.0) - 官方Anthropic软件开发工具包(SDK) - FastAPI(快速API) & Uvicorn(通常指一个用于Python的异步ASGI服务器,全称可能是“Uvicorn Hypercorn”等,但直接翻译为“乌维康”并不常见,一般直接使用其英文名或根据上下文解释其功能) - 对于HTTP/SSE服务器
- pytest - 测试框架
🤝 贡献
这是一个教育性质的示例项目。欢迎贡献!
- 通过 GitHub Issues 报告错误
- 提交包含改进的拉取请求
- 分享您自己的MCP服务器示例
看 `CONTRIBUTING.md` 翻译成中文是:“贡献指南/贡献规范文件”。这个文件通常用于说明如何为某个项目或组织做出贡献,包括贡献的流程、规范、注意事项等 作为指南。
📄 许可证
MIT 许可证 - 详见 许可证 详情请查阅文件。
🔗 资源
🙋 常见问题解答 (FAQ)
问:使用这个我需要特定的MCP客户端吗? A: 不!这适用于任何与MCP兼容的客户端,包括Claude Desktop、Claude Code或自定义实现。
问:我可以添加自己的工具吗?
A: 是的!用……添加新功能 @mcp.tool() 装饰器。请参阅现有工具以获取示例。
问:STDIO 和 HTTP/SSE 之间有什么区别? A: STDIO 用于本地 MCP 客户端(如桌面应用程序),HTTP/SSE 用于基于网络的客户端(如网页应用或远程集成)。
问:我要如何添加更多故事?
A: 编辑 stories/stories.json 并添加新的故事对象 id, title,和 text 领域。
构建用于展示人类中心模型上下文协议 🚀 表情符号“🚀”在中文中通常被理解为“火箭”或“快速前进”的意思,但直接翻译时,由于它是一个图形符号,没有固定的中文文字对应,所以可以简单地描述为“火箭”或根据上下文意译为“快速进展”、“飞速发展”等。如果仅作为表情使用,可以保留原符号或用“火箭”来示意。
有问题吗?请在GitHub上提交一个议题!
