[具身智能-335]:mcp server代码示例

张开发
2026/4/11 5:05:37 15 分钟阅读

分享文章

[具身智能-335]:mcp server代码示例
MCPModel Context Protocol就像是给大模型装上的“万能接口”让它能安全地连接到你本地的文件、数据库或者各种API。写一个 Server 其实不难核心就是把你的业务逻辑封装成标准的“工具”、“资源”或“提示词”。下面我用最流行的 Python SDK通过两个例子带你快速上手一个是最基础的“打招呼”工具另一个是能读取本地文件内容的实用工具。️ 准备工作首先你需要安装官方的 Python SDKbashpip install mcp 示例一最基础的“Hello World”工具这个例子展示了如何定义一个最简单的工具接收参数并返回结果。文件名server.pypythonfrom mcp.server.fastmcp import FastMCP # 1. 初始化 MCP 服务器 mcp FastMCP(Demo Server) # 2. 定义一个工具 (Tool) # 这个工具的作用是接收一个名字返回一句问候语 mcp.tool() def say_hello(name: str) - str: 向指定用户打招呼。 Args: name: 用户的名字 return f你好{name}欢迎来到 MCP 的世界。 # 3. 启动服务器 if __name__ __main__: # 使用 stdio 模式启动这是最常用的模式用于与 Claude Desktop 等客户端通信 mcp.run() 如何测试你可以使用uvicorn或者直接运行脚本来启动它但通常我们需要在 MCP 客户端如 Claude Desktop中配置它。为了快速验证代码逻辑你可以写一个简单的测试脚本或者直接在终端运行python server.py如果配置了标准输入输出。 示例二实用的“文件读取器” (带资源与工具)这个例子更贴近真实场景我们不仅提供一个工具来读取文件还暴露一个资源列表让 AI 知道有哪些文件可用。文件名file_server.pypythonfrom mcp.server.fastmcp import FastMCP import os # 初始化服务器 mcp FastMCP(File Manager) # 模拟一个受保护的文件目录 TARGET_DIR ./test_files # --- 1. 定义资源 (Resources) --- # 资源通常是只读的数据AI 可以参考它们 mcp.resource(dir://files) def list_files() - list[str]: 列出目标目录下的所有文件 if not os.path.exists(TARGET_DIR): os.makedirs(TARGET_DIR) return [目录已创建目前是空的。] return os.listdir(TARGET_DIR) # --- 2. 定义工具 (Tools) --- # 工具是可以执行操作的函数 mcp.tool() def read_file_content(filename: str) - str: 读取指定文件的内容。 Args: filename: 文件名不包含路径 # 安全检查防止路径遍历攻击 if / in filename or \\ in filename: return 错误为了安全只允许提供文件名不允许包含路径。 file_path os.path.join(TARGET_DIR, filename) if not os.path.exists(file_path): return f错误文件 {filename} 不存在。 try: with open(file_path, r, encodingutf-8) as f: return f.read() except Exception as e: return f读取文件时出错: {str(e)} mcp.tool() def create_file(filename: str, content: str) - str: 在目标目录创建一个新文件。 Args: filename: 文件名 content: 文件内容 if / in filename or \\ in filename: return 错误不允许包含路径。 file_path os.path.join(TARGET_DIR, filename) with open(file_path, w, encodingutf-8) as f: f.write(content) return f成功创建文件: {filename} if __name__ __main__: mcp.run() 如何运行与调试MCP Server通常不直接像Web 服务那样运行而是作为子进程被客户端如 Claude Desktop调用。使用官方 Inspector 调试推荐MCP 官方提供了一个 CLI 工具叫inspector可以可视化地查看你的 Server 暴露了哪些工具和资源并进行测试。安装 inspectorbashnpx modelcontextprotocol/inspector python file_server.py(注意你需要先安装 Node.js 和 npx)运行后终端会给出一个本地网址通常是http://localhost:5173。在浏览器打开该网址你就能在界面上看到read_file_content和create_file工具并可以直接输入参数进行测试。在 Claude Desktop 中使用如果你想让 Claude 桌面版使用这个 Server需要修改配置文件。找到 Claude 的配置文件claude_desktop_config.json。Mac:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\Claude\claude_desktop_config.json添加你的 Server 配置json{ mcpServers: { my-file-manager: { command: python, args: [ /absolute/path/to/your/file_server.py ] } } }重启 Claude Desktop点击左上角的⚙️图标你应该能看到 my-file-manager 连接成功。此时你就可以直接问 Claude“帮我列出文件”“帮我读取 test.txt”等。 核心概念总结mcp.tool(): 将函数暴露给 AI。AI 可以决定调用它并传入参数。mcp.resource(): 暴露数据源。AI 可以读取这些数据作为上下文Context但通常不会修改它。mcp.prompt(): (示例中未展示) 用于预定义提示词模板帮助 AI 更好地完成特定任务。这两个示例涵盖了 MCP 开发中 90% 的需求。你可以从修改file_server.py开始尝试接入你自己的业务逻辑。

更多文章