从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用
目录
🚀 从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用
🧱 1. 准备工作
🛠️ 2. 构建 MCP Server(服务端)
2.1 初始化服务器
🧩 3. 添加自定义工具(Tools)
3.1 创建工具文件
3.2 修改 server.py 注册工具
🖥️ 4. 构建 MCP Client(客户端)
🧪 5. 联调测试(Server + Client)
🧠 总结与下一步
🚀 从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用
随着大型语言模型(LLM)能力的飞速发展,如何让 AI 模型灵活调用外部工具、实时访问外部数据,成为开发者面临的重要挑战。
模型上下文协议(Model Context Protocol,简称 MCP)作为一种开放标准,为 LLM 提供了类似“USB-C”统一接口,使模型能够以标准方式调用资源与服务。
本篇博客将带你一步步从零搭建:
-
✅ MCP 服务器(Server)
-
✅ MCP 客户端(Client)
-
✅ 自定义工具(Tool)
-
✅ 实现 Server-Client 联调
-
✅ 与 Claude、ChatGPT 等大模型无缝集成!
🧱 1. 准备工作
开发环境建议:
-
Python 3.10+
-
MCP Python SDK(安装方法见下文)
-
支持 MCP 协议的 AI 应用(如 Claude Desktop、ChatGPT 插件版)
安装基础依赖:
pip install mcp-sdk
创建项目基本目录:
mcp_demo/
├── server.py
├── client.py
├── tools/
│ └── file_reader.py
├── requirements.txt
🛠️ 2. 构建 MCP Server(服务端)
MCP Server 负责注册并提供工具,供 AI 模型调用。
2.1 初始化服务器
在 server.py
中创建 MCP Server 实例,并运行。
from mcp.server.fastmcp import FastMCP# 创建 MCP Server 实例
mcp = FastMCP("Demo MCP Server")if __name__ == "__main__":mcp.run()
运行:
python server.py
此时 Server 会以本地模式(stdio)监听连接。
🧩 3. 添加自定义工具(Tools)
工具是 MCP 中模型可以调用的能力模块。比如读取文件、调用 API、发起数据库查询等。
我们先添加一个简单工具:列出本地目录下所有 .txt
文件。
3.1 创建工具文件
在 tools/file_reader.py
中定义工具:
import os
from mcp.server.fastmcp import tool@tool()
def list_txt_files(directory: str = ".") -> list[str]:"""列出指定目录下所有 .txt 文件"""try:return [f for f in os.listdir(directory) if f.endswith(".txt")]except Exception as e:return [str(e)]
这里用 @tool()
装饰器标记函数,MCP Server 会自动注册它为可调用工具。
3.2 修改 server.py 注册工具
将 tools.file_reader
导入到 server.py
:
from mcp.server.fastmcp import FastMCP
import tools.file_reader # 导入工具模块,自动注册mcp = FastMCP("Demo MCP Server")if __name__ == "__main__":mcp.run()
现在 MCP Server 已提供了一个 "list_txt_files" 工具,供后续客户端调用。
🖥️ 4. 构建 MCP Client(客户端)
MCP Client 作为中介,负责与 Server 通信,协调 AI 应用请求与工具调用。
在 client.py
中创建 MCP Client 实例:
from mcp.client import MCPClientdef main():# 连接到 Server(本地也可以用 stdio 通信)client = MCPClient(server_address="http://localhost:8000")client.connect()# 列出可用工具tools = client.list_tools()print("当前可用工具列表:", tools)# 调用 list_txt_files 工具params = {"directory": "."}result = client.call_tool("list_txt_files", params)print("目录下的 .txt 文件:", result)client.disconnect()if __name__ == "__main__":main()
运行:
python client.py
如果一切顺利,你将看到 MCP Client 成功调用 MCP Server 提供的 list_txt_files
工具,并返回本地目录下的所有 .txt
文件。
🧪 5. 联调测试(Server + Client)
完整流程如下:
-
启动
server.py
-
再运行
client.py
-
Client 通过标准输入输出(stdio)或 HTTP 与 Server 通信
-
Server 提供工具,Client 调用工具返回结果
-
AI 应用可以无感知调用这些工具,执行复杂任务
可以在支持 MCP 的 AI 应用中,如 Claude Desktop,配置 MCP Client,体验完整联动!
示例提问:
请帮我列出我电脑上当前目录的所有 txt 文件。
→ AI 调用 MCP → MCP Client 转发请求 → MCP Server 执行 list_txt_files
→ 返回结果!
🧠 总结与下一步
通过本篇教程,你已经掌握了:
-
什么是 MCP 协议
-
如何搭建 MCP Server
-
如何定义并注册自定义工具
-
如何搭建 MCP Client
-
如何实现 Client-Server 联调
-
如何与 AI 应用对接调用工具
这为你后续开发多工具协同、多资源访问、智能体智能扩展打下了坚实基础!
在下一篇内容中,我们将探索:
-
如何将 MCP 与 LangChain、Semantic Kernel 等框架集成
-
如何扩展 MCP 实现多模型、多资源、多场景的动态调度!