开发一个MCP(Model Context Protocol)服务器需要遵循标准协议,结合代码实现和工具配置。以下是基于Python技术栈的MCP Server开发步骤及关键要点,综合了多个实践案例与官方文档建议:
pip安装MCP库:python -m venv mcp-env # 推荐使用虚拟环境
source mcp-env/bin/activate #Linux/Mac
pip install mcpmcp version应返回版本号(如1.5.0)。支持MCP的客户端(如Cline、Cursor、Claude Desktop)用于测试,或使用调试工具如MCP Inspector。
@mcp.tool()装饰器暴露函数能力,并通过文档字符串描述功能(供大模型理解用途):# custom_mcp.py
from mcp.server.fastmcp import FastMCP
import os
mcp = FastMCP()
@mcp.tool()
deflist_desktop_files() -> list:
"""获取当前用户桌面上的所有文件列表(macOS专属实现)"""
desktop_path = os.path.expanduser("~/Desktop")
return os.listdir(desktop_path)
@mcp.tool()
defsay_hello(name: str) -> str:
"""生成个性化问候语(中英双语版)"""
returnf"? 你好 {name}! (Hello {name}!)"
if __name__ == "__main__":
mcp.run(transport='stdio') # 启用调试模式@mcp.resource("config://app_settings")
def get_app_config() -> dict:
return {"theme": "dark", "language": "zh-CN"}@mcp.prompt()
def code_review_prompt(code: str) -> str:
return f"请审查以下代码并指出问题:\n\n{code}"选择传输协议:
transport='stdio'(适合IDE集成)。transport='sse'(基于HTTP事件流,需部署为Web服务)。# custom_mcp.py
from mcp.server.fastmcp import FastMCP
import os
mcp = FastMCP()
@mcp.tool()
def list_desktop_files() -> list:
"""获取当前用户桌面上的所有文件列表(macOS专属实现)"""
desktop_path = os.path.expanduser("~/Desktop")
return os.listdir(desktop_path)
@mcp.tool()
def say_hello(name: str) -> str:
"""生成个性化问候语(中英双语版)"""
return f"? 你好 {name}! (Hello {name}!)"
@mcp.resource("config://app_settings")
def get_app_config() -> dict:
return {"theme": "dark", "language": "zh-CN"}
@mcp.prompt()
def code_review_prompt(code: str) -> str:
return f"请审查以下代码并指出问题:\n\n{code}"
if __name__ == "__main__":
mcp.run(transport='stdio')cline_mcp_settings.json):{
"mcpServers": {
"list_desktop_files": {
"command": "python3",
"args": [
"/Users/[USER_NAME]/[YOUR_PATH]/custom_mcp.py"
]
}
}
}

MCP Inspector检查消息交互:npx @modelcontextprotocol/inspector python custom_mcp.py使用npx运行@modelcontextprotocol/inspector,如下所示:

打开web服务,可视化调试你所开发的Tools:

问题类型 | 解决方案 |
|---|---|
工具未被客户端识别 | 检查@mcp.tool()装饰器及文档字符串格式,确保函数参数和返回值类型明确。 |
传输协议不兼容 | 确认客户端支持的协议类型(如SSE需配置Web服务器)。 |
权限不足 | 限制资源访问路径,使用沙箱环境运行敏感操作。 |
通过上述步骤,开发者可以快速构建一个功能完整的MCP Server,并结合生态工具实现高效集成。更多进阶实践可参考MCP官方文档及社区资源(如AIbase、GitHub示例仓库)。
[1] AIbase: https://www.aibase.com/zh/repos/topic/mcp
[2] mcp.so: https://mcp.so/