当前位置: 首页 > java >正文

从零构建 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)

完整流程如下:

  1. 启动 server.py

  2. 再运行 client.py

  3. Client 通过标准输入输出(stdio)或 HTTP 与 Server 通信

  4. Server 提供工具,Client 调用工具返回结果

  5. 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 实现多模型、多资源、多场景的动态调度!

http://www.xdnf.cn/news/3180.html

相关文章:

  • 如何禁止AutoCAD这类软件联网
  • Go语言的发展历史 -《Go语言实战指南》
  • Copilot:您的AI伴侣-微软50周年系列更新
  • 《Java高级编程:从原理到实战 - 进阶知识篇一》
  • 【阿里云大模型高级工程师ACP学习笔记】2.7 通过微调增强模型能力 (下篇)(⭐️⭐️⭐️ 重点章节!!!)
  • C#学习第20天:垃圾回收
  • C#规避内存泄漏的编码方法
  • ZStack Cloud 5.3.28正式发布
  • 【蓝桥杯省赛真题59】Scratch收集松果 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
  • 跨境电商生死劫:IP筛查三法则破解封号魔咒
  • 编译原理实验二:构建TINY语言的词法分析器
  • 【数据链路层】网络通信的“桥梁建设者”
  • 在Carla中构建自动驾驶:使用PID控制和ROS2进行路径跟踪
  • WPF性能优化举例
  • python中库pydantic的作用和基本用法
  • 《ESP32音频开发实战:I2S协议解析与WAV音频录制/播放全指南》
  • 90.如何将Maui应用安装到手机(最简) C#例子 Maui例子
  • 西门子PLC S7-1200电动机软启动、软停止的控制实例
  • Android 移动开发:ProgressBar(转圈进度条)
  • 基于go的简单管理系统(增删改查)
  • Linux基础 -- Generic Netlink 框架详解与开发实践
  • UI设计之photoshop学习笔记
  • ⛺️ Sui Basecamp 2025 最新日程
  • C# 类的基本概念(从类的内部访问成员和从类的外部访问成员)
  • AXI总线设计高带宽or低带宽?你需要做个选择
  • 大规模克希霍夫积分法叠前深度偏移中,并行化和旅行时表处理
  • 11.模方ModelFun工具-指定置平
  • 【Docker】Docker拉取部分常用中间件
  • 音视频项目在微服务领域的趋势场景题深度解析
  • 为Mac用户定制的云服务器Vultr 保姆级教程