使用说明
MCP 服务器示例(Python)
一个用Python实现的简单模型上下文协议(MCP)服务器。
什么是MCP?
模型上下文协议(MCP)是一种开放协议,它使像Claude这样的AI助手能够安全地与外部工具和数据源进行交互。MCP服务器会公开工具,供客户端发现并调用。
项目结构
mcp_playground/
├── server.py # Main MCP server implementation
├── pyproject.toml # Project metadata and dependencies
├── .python-version # Python version specification (3.13)
├── .gitignore # Git ignore rules
└── README.md # This file
设置
先决条件
- Python 3.13
- 紫外线 - 快速的Python包安装器和管理器
安装紫外线(设备)
如果你还没有安装UV:
# On macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
安装
-
(如果尚未克隆)请克隆此仓库
-
使用 uv 安装依赖项:
uv sync
这将会:
- 如需自动安装 Python 3.13
- 创建一个虚拟环境
- 安装所有来自(指定源/路径的)依赖项
pyproject.toml
运行服务器
运行MCP服务器:
uv run server.py
或者先激活虚拟环境:
source .venv/bin/activate # On Windows: .venv\Scripts\activate
python server.py
服务器使用stdio(标准输入/输出)进行通信,这是MCP服务器与客户端通信的标准方式。
可用工具
这个示例服务器提供了三个简单的工具:
1. add_numbers(加数)
将两个数字相加。
参数:
a(数字):第一个数字b(数字):第二个数字
示例:
{
"a": 5,
"b": 3
}
2. 问候
生成个性化的问候语。
参数:
name(字符串):要问候的人的名字
示例:
{
"name": "Alice"
}
3. reverse_string(反转字符串)
反转字符串。
参数:
text(字符串):要反转的文本
示例:
{
"text": "Hello World"
}
与Claude代码一起使用
要使用此MCP服务器与Claude Code配合,您需要在MCP设置中进行配置:
-
打开你的Claude Code MCP配置文件(通常位于
~/.config/claude/claude_desktop_config.json) -
将此服务器添加到
mcpServers部分/章节:
{
"mcpServers": {
"example-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp_playground",
"run",
"server.py"
]
}
}
}
-
重启Claude代码
-
现在,克劳德可以使用这些工具了!
定制服务器
添加新工具
要在服务器上添加一个新工具:
- 将工具定义添加到
list_tools()函数 - 将工具实现添加到
call_tool()函数
示例:
# In list_tools():
Tool(
name="my_new_tool",
description="Description of what the tool does",
inputSchema={
"type": "object",
"properties": {
"param1": {
"type": "string",
"description": "Parameter description"
}
},
"required": ["param1"]
}
)
# In call_tool():
elif name == "my_new_tool":
param1 = arguments["param1"]
result = do_something(param1)
return [TextContent(
type="text",
text=f"Result: {result}"
)]
高级功能
MCP协议支持除基本工具外的额外功能:
- 资源公开可读的数据(文件、API数据等)
- 提示提供模板化提示
- 采样允许服务器请求大型语言模型(LLM)完成任务
检查 MCP文档 如需更多信息。
发展
在开发模式下运行
为了开发,你可能想要添加日志记录:
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
测试
您可以使用MCP Inspector工具测试您的MCP服务器,或者直接将其与Claude Code集成进行测试。
故障排除
“模块未找到”错误
确保您已安装所有依赖项:
uv sync
服务器未出现在Claude代码中
- 检查您的MCP配置中的路径是否正确
- 确保虚拟环境已激活(如果使用的话)
- 尝试重启Claude代码
工具调用失败
- 检查服务器日志中的错误信息
- 验证输入模式是否与您传递的内容相匹配
- 确保提供了所有必需的参数
为什么是UV(紫外线)?
紫外线 是一个现代化的Python包管理器,它:
- 比 pip 快 10 到 100 倍
- 自动管理Python版本
- 内置了虚拟环境支持
- 兼容pip和pyproject.toml标准
资源
许可证
这是一个用于教育目的的示例项目。
