【实战教程】从零搭建 MCP Server:让 AI 助手调用你的本地工具
2026/7/13 8:30:41 网站建设 项目流程

从零搭建 MCP Server:让 AI 助手调用你的本地工具

说实话,今年 AI 圈最火的概念之一就是 MCP。如果你还没搞懂它是啥,或者想动手搭一个但不知道从哪下手,这篇文章就是为你准备的。

什么是 MCP?一句话说清楚

MCP(Model Context Protocol)是 Anthropic 推的一个开放协议,说白了就是给 AI 模型开了个"后门",让它能跟外部工具对话。想象一下,以前你问 ChatGPT"帮我查一下本地文件",它只能摊手说"我做不到"。有了 MCP,它可以直接调用你的文件系统、数据库、甚至控制你的浏览器。

核心概念:三个角色

MCP 架构里就三个角色,好记得很:

  • Host:宿主程序,比如 Claude Desktop、Cursor 这些
  • Client:和 Server 建立一对一连接的客户端
  • Server:你的工具,暴露给 AI 调用的接口

动手:从零搭建一个天气查询 MCP Server

接下来咱们实战,用 Python 搭一个简单的 MCP Server,让 AI 能查天气。

环境准备

# 安装 mcp 库pipinstallmcp httpx# 创建项目目录mkdirmy-mcp-server&&cdmy-mcp-server

写 Server 代码

frommcp.serverimportServerfrommcp.server.stdioimportstdio_serverfrommcp.typesimportTool,TextContentimporthttpximportjson# 初始化 Serverserver=Server("weather-server")# 注册工具@server.list_tools()asyncdeflist_tools()->list[Tool]:return[Tool(name="get_weather",description="查询指定城市的当前天气",inputSchema={"type":"object","properties":{"city":{"type":"string","description":"城市名,如 北京、上海"}},"required":["city"]})]# 实现工具逻辑@server.call_tool()asyncdefcall_tool(name:str,arguments:dict)->list[TextContent]:ifname=="get_weather":city=arguments["city"]# 这里用 wttr.in 的公开 APIasyncwithhttpx.AsyncClient()asclient:resp=awaitclient.get(f"https://wttr.in/{city}?format=%C+%t")return[TextContent(type="text",text=f"{city}天气:{resp.text}")]raiseValueError(f"Unknown tool:{name}")if__name__=="__main__":importasyncio asyncio.run(stdio_server(server))

配置 Claude Desktop 连接

在 Claude Desktop 的配置文件中添加:

{"mcpServers":{"weather-server":{"command":"python","args":["path/to/weather_server.py"]}}}

配置完重启 Claude Desktop,就能看到你的 MCP 工具了!

进阶:用 MCP 连接数据库

上面只是开胃菜,真正的威力在于连接数据库、文件系统这些"重型"工具。

@server.list_tools()asyncdeflist_tools()->list[Tool]:return[Tool(name="query_database",description="执行 SQL 查询,返回结果",inputSchema={"type":"object","properties":{"sql":{"type":"string","description":"SQL 查询语句"}},"required":["sql"]})]@server.call_tool()asyncdefcall_tool(name:str,arguments:dict)->list[TextContent]:ifname=="query_database":importsqlite3 conn=sqlite3.connect("mydb.db")cursor=conn.cursor()cursor.execute(arguments["sql"])results=cursor.fetchall()conn.close()return[TextContent(type="text",text=json.dumps(results,ensure_ascii=False))]raiseValueError(f"Unknown tool:{name}")

常见问题 Q&A

Q:MCP 和 Function Calling 有啥区别?
A:Function Calling 是各家模型自己搞的私有协议,MCP 是开放标准。用了 MCP,你的工具能在所有支持 MCP 的客户端上跑,不用改代码。

Q:MCP Server 一定要用 Python 吗?
A:不,官方 SDK 支持 Python、TypeScript、Java、Go。选你熟悉的语言就行。

Q:安全方面怎么考虑?
A:MCP Server 跑在本地,权限由你控制。建议不要暴露敏感操作,或者加上鉴权逻辑。

总结

MCP 说白了就是一个"让 AI 用工具"的标准化接口。花一两个小时搭一个 MCP Server,你就能让 AI 真正帮你干活了,而不是只会在那聊天。

下一步可以试试:搭一个文件搜索 MCP Server、一个代码执行 MCP Server、或者一个浏览器控制 MCP Server。玩起来你就知道 MCP 有多香了。

如果你喜欢这篇文章,点个赞收藏一下,以后还有更多 AI 实战教程!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询