动手实战:写一个自己的 MCP Server
用 Python FastMCP 从零实现一个能查课程信息的 MCP Server,并接入 Claude Desktop 使用。
十行起步:FastMCP
pip install "mcp[cli]"
# course_server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("course-library")
@mcp.tool()
def search_courses(keyword: str) -> str:
"""按关键词搜索 LangChain 学习中心的课程,返回课程标题与简介列表。"""
# 实际项目中查数据库/调用 API
return "找到 2 门:《RAG 检索增强生成:原理》《RAG 实战》"
if __name__ == "__main__":
mcp.run() # 默认 stdio 传输
注意:函数签名 + docstring 就是工具描述 —— 模型靠它们判断何时调用(与《Tool Calling》课的 @tool 装饰器完全同源)。
接入 Claude Desktop
// claude_desktop_config.json
{
"mcpServers": {
"course-library": {
"command": "python",
"args": ["C:/path/to/course_server.py"]
}
}
}
重启 Claude Desktop,就能看到工具并直接对话调用 —— 你的代码成了整个生态的一等公民。
进阶方向
- Resources:
@mcp.resource("courses://{course_id}")暴露可读资源; - 远程部署:Streamable HTTP 传输 + OAuth 认证,把 Server 变成团队共享服务;
- TypeScript SDK 同样简单(
@mcp.tool()装饰器),Node 生态项目可对应使用。
📝 课后练习
quiz-1 FastMCP 中 @mcp.tool() 装饰器的作用是?