使用说明
MCP服务器框架
一个通用的模型上下文协议(MCP)服务器,为Claude Code和Claude Desktop提供工具。
快速开始
# Install dependencies
cd mcp-server
pip install -r requirements.txt
# Test the server runs (Ctrl+C to stop)
PYTHONPATH=src python -m mcp_server.server
项目结构
mcp-server/
├── src/mcp_server/
│ ├── server.py # Main FastMCP server
│ ├── config.py # Environment-based configuration
│ └── tools/
│ ├── __init__.py # Tool registry
│ ├── echo_tool.py # Example: basic echo tools
│ ├── datetime_tool.py # Example: date/time utilities
│ └── file_tool.py # Example: file operations
├── configs/ # Client configuration templates
└── requirements.txt
配置
服务器是通过环境变量配置的:
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_SERVER_NAME |
服务器的显示名称 | mcp-server |
MCP_LOG_LEVEL |
日志记录级别(调试、信息、警告、错误) | INFO |
MCP_ALLOWED_PATHS |
文件工具的逗号分隔路径 | (无) |
MCP_CUSTOM_VAR_* |
可通过配置访问自定义变量 | (无) |
包含的工具
回声工具
echo-回显消息echo_uppercase-大写回声echo_reverse-回声反转
DateTime工具
get_current_time-获取当前UTC时间get_timestamp-获取当前Unix时间戳parse_timestamp-将时间戳转换为可读格式time_difference-计算两个时间戳之间的时间
文件工具(必需 MCP_ALLOWED_PATHS)
list_directory-列出目录内容read_file-读取文件内容get_file_info-获取文件/目录元数据get_allowed_paths-显示已配置的允许路径
设置客户端
克劳德桌面版
- 打开
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) - 添加您的服务器配置:
{
"mcpServers": {
"my-mcp-server": {
"command": "python",
"args": ["-m", "mcp_server.server"],
"cwd": "/full/path/to/mcp-server",
"env": {
"PYTHONPATH": "/full/path/to/mcp-server/src",
"MCP_ALLOWED_PATHS": "/Users/you/Documents"
}
}
}
}
- 完全重新启动克劳德桌面(Cmd+Q,然后重新启动)
克劳德代码
创建 .mcp.json 在项目根目录中:
{
"mcpServers": {
"my-mcp-server": {
"command": "python",
"args": ["-m", "mcp_server.server"],
"cwd": "${workspaceFolder}/mcp-server",
"env": {
"PYTHONPATH": "${workspaceFolder}/mcp-server/src",
"MCP_ALLOWED_PATHS": "${workspaceFolder}"
}
}
}
}
添加新工具
- 在中创建新文件
src/mcp_server/tools/:
# src/mcp_server/tools/my_tool.py
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from mcp.server.fastmcp import FastMCP
from ..config import ServerConfig
def register(mcp: "FastMCP", config: "ServerConfig") -> None:
"""Register my tools with the server."""
@mcp.tool()
def my_function(param: str, count: int = 1) -> str:
"""
Description shown to Claude.
Args:
param: What this parameter does
count: Optional count with default
Returns:
What the tool returns
"""
return f"Result: {param} x {count}"
- 在中注册
src/mcp_server/tools/__init__.py:
def register_all_tools(mcp: "FastMCP", config: "ServerConfig") -> None:
from . import echo_tool, datetime_tool, file_tool, my_tool # Add import
echo_tool.register(mcp, config)
datetime_tool.register(mcp, config)
file_tool.register(mcp, config)
my_tool.register(mcp, config) # Add registration
- 重新启动Claude Desktop/Code以获取新工具。
工具设计指南
- 清除文档字符串:描述和参数文档发送给Claude
- 键入提示:所有参数和返回都需要类型提示(定义JSON模式)
- 返回字符串:工具应返回字符串结果以获得最佳兼容性
- 错误处理:返回用户友好的错误消息,而不是引发异常
- 使用配置:访问
config用于特定环境的设置(如允许的路径)
故障排除
服务器无法启动:
- 确保
PYTHONPATH包括src目录 - 检查一下
mcp软件包已安装:pip install mcp[cli]
Claude中未出现的工具:
- 验证配置JSON是否有效
- 检查
cwd路径正确 - 完全重新启动克劳德桌面(Mac上的Cmd+Q)
文件工具返回“不在允许的目录中”:
- 集
MCP_ALLOWED_PATHS以逗号分隔的目录路径 - 路径必须是绝对的
依赖项
- Python 3.10+
mcp[cli]>=1.0.0
