使用说明
简单MCP服务器项目
概述
本项目演示了使用Python构建和测试模型上下文协议(MCP)服务器。它包括具有基本工具的简单MCP服务器的本地(stdio)和远程(SSE)实现。
什么是MCP?
模型上下文协议(MCP)是一种标准化的协议,允许人工智能助手(如克劳德)与外部工具和数据源进行交互。MCP服务器公开了AI模型可以发现和使用的工具。
项目目标
- 使用简单的工具(echo、add)构建基本的MCP服务器
- 使用MCP Inspector v0.14测试服务器
- 远程部署服务器以进行测试
- 与Claude Desktop集成以供本地使用
项目结构
mcp-servers/
├── simple_mcp_server.py # Stdio MCP server (for Claude Desktop)
├── simple_mcp_sse.py # SSE MCP server (for remote deployment)
├── simple_mcp_http.py # Basic HTTP API (not MCP protocol)
├── requirements.txt # Python dependencies
├── runtime.txt # Python version for deployment
└── README.md # This file
先决条件
- 已安装Python 3.13+
- 已安装Node.js和npm(用于MCP检查器)
- Git已安装
- Claude Desktop(可选,用于本地集成)
- Render或Vercel帐户(可选,用于部署)
第1部分:构建简单的MCP服务器
1.1安装依赖项
pip install mcp starlette uvicorn sse-starlette
1.2理解服务器代码
这 simple_mcp_server.py 实施:
- 回声工具:返回前缀为“Echo:”的输入文本
- 添加工具:将两个数字相加并返回结果
关键部件:
from mcp.server import Server
from mcp.types import Tool, TextContent
import mcp.server.stdio
# Create server instance
server = Server("simple-mcp")
# Define tools
@server.list_tools()
async def list_tools():
# Returns list of available tools
@server.call_tool()
async def call_tool(name: str, arguments: dict):
# Handles tool execution
1.3本地测试服务器
运行服务器:
python simple_mcp_server.py
服务器将在stdin上等待JSON-RPC消息。测试一下:
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | python simple_mcp_server.py
预期输出:具有服务器功能和工具的JSON响应。
第2部分:使用MCP Inspector v0.14进行测试
2.1什么是MCP检查员?
MCP Inspector是一个基于网络的工具,用于测试和调试MCP服务器。它提供了一个用户界面,用于:
- 连接到MCP服务器
- 列出可用工具
- 使用自定义参数执行工具
- 实时查看响应
2.2安装并运行MCP检查器
无需安装-使用npx:
npx @modelcontextprotocol/inspector@0.14.0
这将:
- 下载MCP Inspector v0.14
- 启动本地web服务器(通常http://localhost:5173)
- 在浏览器中打开检查器
2.3将检查器连接到您的服务器
选项A:自动连接(推荐)
npx @modelcontextprotocol/inspector@0.14.0 python simple_mcp_server.py
选项B:手动连接
- 运行检查器:
npx @modelcontextprotocol/inspector@0.14.0 - 在UI中,配置连接:
- 运输:stdio
- 命令:
python - Args:
simple_mcp_server.py
2.4测试工具
在MCP检查器UI中:
-
列出工具:单击“列出工具”查看可用工具
-
测试回声工具:
- 选择“回声”工具
- 输入:
{"text": "Hello MCP!"} - 点击“执行”
- 预期产量:
"Echo: Hello MCP!"
-
测试添加工具:
- 选择“添加”工具
- 输入:
{"a": 5, "b": 3} - 点击“执行”
- 预期产量:
"Result: 8"
第3部分:与Claude Desktop集成
3.1配置克劳德桌面
编辑配置文件:
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Mac/Linux:
~/.config/Claude/claude_desktop_config.json
添加您的服务器:
{
"mcpServers": {
"simple-mcp": {
"command": "python",
"args": ["D:\\path\\to\\simple_mcp_server.py"]
}
}
}
将路径替换为实际文件位置。
3.2重新启动克劳德桌面
- 完全退出Claude Desktop(检查Windows上的任务管理器)
- 启动克劳德桌面
- 检查开发人员设置以验证服务器是否已连接
3.3使用Claude中的工具
在Claude Desktop中,您现在可以问:
- “回显文本‘Hello World’”
- “加42和58”
Claude将自动使用您的MCP服务器工具进行响应。
第4部分:部署到渲染(远程测试)
4.1为什么要远程部署?
远程部署允许:
- 随时随地测试
- 与团队成员分享
- 测试SSE传输(不同于stdio)
- 模拟生产环境
4.2部署准备
创建requirements.txt:
mcp
starlette
uvicorn
sse-starlette
创建runtime.txt(可选):
python-3.13.5
4.3推送到GitHub
git init
git add simple_mcp_sse.py requirements.txt runtime.txt
git commit -m "Initial commit: Simple MCP SSE server"
git branch -M main
git remote add origin https://github.com/yourusername/simple-mcp-server.git
git push -u origin main
4.4渲染部署
- 首选https://dashboard.render.com
- 点击“新建+”→ “Web服务”
- 连接您的GitHub存储库
- 配置:
- 名字:
simple-mcp-sse - 环境:
Python 3 - 生成命令:
pip install -r requirements.txt - 开始命令:
python simple_mcp_sse.py - 实例类型:免费
- 名字:
- 点击“创建Web服务”
- 等待2-5分钟进行部署
4.5测试已部署的服务器
获取渲染URL(例如。, https://simple-mcp-sse-xxxx.onrender.com)
测试健康终点:
curl https://your-app.onrender.com/health
预期产量: OK
4.6 MCP检验员测试
您可以使用MCP Inspector测试远程服务器,但请注意,Claude Desktop不直接支持远程SSE URL。
故障排除
服务器未启动
- 检查Python版本:
python --version(应为3.13+) - 验证依赖关系:
pip list | grep mcp - 检查服务器文件中的语法错误
克劳德桌面未显示服务器
- 验证配置文件路径和JSON语法
- 在配置中使用绝对路径
- 完全退出并重新启动Claude Desktop
- 检查Python路径是否正确
MCP检查器连接失败
- 确保服务器文件路径正确
- 检查Python是否在您的PATH中
- 请先尝试手动运行服务器以检查错误
渲染部署失败
- 检查渲染日志中的特定错误
- 验证requirements.txt是否包含所有依赖项
- 确保服务器绑定到
0.0.0.0不localhost - 检查是否使用了PORT环境变量
关键概念
MCP协议版本
- 本项目使用MCP协议版本
2024-11-05 - Python MCP库版本:
1.26.0
运输类型
- 标准:标准输入/输出(适用于Claude Desktop等本地工具)
- 上海证券交易所:服务器通过HTTP发送事件(用于远程服务器)
- 超文本传输协议:基本HTTP API(不是MCP协议)
工具架构
工具使用JSON模式定义参数:
Tool(
name="echo",
description="Echo back the input text",
inputSchema={
"type": "object",
"properties": {
"text": {"type": "string"}
},
"required": ["text"]
}
)
后续步骤
- 添加更多工具:使用附加功能扩展服务器
- 添加身份验证:为远程服务器实现API密钥身份验证
- 添加资源:通过MCP公开数据源(文件、数据库)
- 添加提示:定义可重用的提示模板
- 错误处理:改进错误消息和验证
- 日志记录:添加用于调试的全面日志记录
资源
许可证
麻省理工学院许可证-您可以自由使用和修改您的项目。
版本历史记录
- v0.13:带有echo和添加工具的初始简单MCP服务器
- v0.14:添加了对远程部署的SSE支持
- v1.0:生产准备就绪,文件齐全
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 提交拉取请求
支持
对于问题或疑问:
- 检查故障排除部分
- 审查MCP文件
- 在GitHub上打开一个问题
