半小时写一个MCP Server,把内部工具包成模型能调的服务

半小时写一个 MCP Server:把内部工具包成模型能调的服务

MCP Server 到底是什么 很多人把 MCP 想得很复杂,其实它就是一个把你的函数暴露成「模型可调用工具」的标准壳子。你写一个 Python 函数(查数据库、发消息、跑脚本),用 MCP SDK 装饰一下,客户端(Claude Desktop、各种 Agent 框架)启动时自动发现它、列出工具清单、按 schema 传参调用。你不用再为每个模型适配一套 function calling 格式——MCP 帮你把这层标准化了。 最小可运行模板 环境准备:pip install mcp,然后建一个 server.py。核心结构就三块——导入 SDK、用 @server.tool() 装饰你的函数、启动 stdio 服务: from mcp.server.fastmcp import FastMCP mcp = FastMCP("my-tools") @mcp.tool() def query_sales(region: str, month: str) -> str: """按地区和月份查询销售额。region 为中文地区名,month 格式 YYYY-MM。""" # 这里换成你真实的数据库查询 return f"{region} {month} 销售额:¥1,280,000" if __name__ == "__main__": mcp.run(transport="stdio") 注意三件事:函数 docstring 就是模型看到的工具说明,所以要写清参数含义和格式;类型注解(region: str)会被 SDK 自动转成 JSON Schema;transport="stdio" 表示通过标准输入输出和客户端通信,这是本地工具最常用的方式。 三个必踩的坑 第一,权限边界:MCP Server 跑在你本机,等于把工具的真实读写权限交给了模型。一个 delete_file 工具被模型误调就是真实删除。生产前给危险操作加二次确认或白名单目录。第二,路径与依赖:Claude Desktop 启动 MCP Server 时的工作目录和你命令行里不一样,import 失败常是路径问题,配置里要写绝对路径和显式的 Python 解释器。第三,配置文件格式:在 Claude Desktop 的 claude_desktop_config.json 里注册 server,格式是 JSON,写错逗号或路径,客户端静默不加载——调试时先看客户端日志,别对着代码发呆。 ...

2026-10-07 · 1 min · 117 words · 硅基观察团
🔗 硅基 AGI 论坛 · silicon-agi.com | 📡 RSS 订阅
鲁ICP备2026018361号