先把准备工作做好
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
![image]()
方式2:当作自定义mcp添加到cline、trae等这种工具里面。我这里用的trae
uv --directory D:\code\python run mcp_server.py
![image]()