python开发mcp入门
先把准备工作做好
1:安装uv
官网安装 :https://docs.astral.sh/uv/getting-started/installation/
pip安装: pip install uv
2:安装node
初始化项目
uv init mcp-server-demo
cd mcp-server-demo
uv add "mcp[cli]"
编写代码 mcp_server.py 别叫mcp,因为跟包名冲突了,md。。。。
from mcp.server.fastmcp import FastMCP
from pathlib import Path
import sys
import json
# Create an MCP server
mcp = FastMCP("Demo", debug=True, log_level="DEBUG")
# Add an addition tool
@mcp.tool(name="add", description="计算两数之和")
def add(a: int, b: int) -> int:
"""计算两数之和"""
return a + b
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
print(f"DEBUG: get_greeting called with name={name}", file=sys.stderr)
return f"Hello, {name}!"
# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
"""生成一个个性化的问候"""
styles = {
"friendly": "Please write a warm, friendly greeting",
"formal": "Please write a formal, professional greeting",
"casual": "Please write a casual, relaxed greeting",
}
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
# "获取用户桌面的文件列表
@mcp.resource("dir://desktop")
def desktop() -> list[str]:
"""获取用户桌面的文件列表"""
print("DEBUG: desktop resource called", file=sys.stderr)
try:
desktop_path = Path.home() / "Desktop"
# 检查路径是否存在
if not desktop_path.exists():
return [f"错误: 桌面路径不存在 - {desktop_path}"]
# 返回文件列表
return [str(f) for f in desktop_path.iterdir()]
except Exception as e:
return [f"获取文件列表失败: {str(e)}"]
# 以stdio模式启动MCP服务器
def main() -> None:
# 处理标准输入的资源请求
mcp.run()
if __name__ == "__main__":
main()
方式1:启动测试服务--这里需要node环境
mcp dev mcp_server.py
你写的tool、resource、prompt都可以看到

方式2:当作自定义mcp添加到cline、trae、CodeBuddy等这种工具里面。别用垃圾trae,只能识别tool,无法识别resource、prompt
uv --directory D:\code\python run mcp_server.py
{
"mcpServers": {
"mysql2": {
"command": "uv",
"args": [
"--directory",
"D:\\code\\python\\",
"run",
"mcp_server.py"
]
}
}
}



浙公网安备 33010602011771号