用最简单的方式教你用Python搭建第一个MCP服务器(附详细代码示例)

MCP(Model Context Protocol)是一种让大型语言模型(LLM)方便调用外部工具和服务的协议。通过搭建MCP服务器,LLM可以像调用函数一样调用各种工具,极大地扩展AI的能力。下面我用最基础的知识点和代码示例,帮你快速理解并搭建一个简单的MCP服务器和客户端。

1. MCP是什么?

  • MCP是大模型与外部工具之间的"沟通协议",它定义了如何调用工具和获取数据。
  • MCP服务器就是提供工具的服务端,客户端通过MCP协议调用这些工具。
  • 这样,AI模型就能访问数据库、文件系统、天气服务等外部资源。

2. 搭建MCP服务器的准备工作

  • 需要安装Python 3.10以上版本。

  • 安装MCP官方SDK库:

    bash 复制代码
    pip install mcp-sdk
  • MCP服务器默认监听本地8080端口。

3. MCP服务器核心概念

  • 工具(Tool) :服务器提供给AI调用的功能接口,类似函数。
  • 服务器(Server) :管理工具,接收客户端请求并调用工具。
  • 客户端(Client) :调用服务器上的工具,发送请求,接收结果。

4. 简单MCP服务器代码示例

下面是一个最简单的MCP服务器示例,提供一个工具my_tool,它接收输入文本并返回"Processed: 输入内容"。

python 复制代码
from mcp_sdk import MCP, Tool

# 定义工具类,继承自Tool
class MyTool(Tool):
    def run(self, input_data):
        # 处理输入数据,返回结果
        processed_data = f"Processed: {input_data}"
        return processed_data

# 创建MCP服务器实例
mcp = MCP()

# 注册工具,名字叫"my_tool"
mcp.register_tool(MyTool(), name="my_tool")

# 启动服务器,默认监听localhost:8080
mcp.start()
  • 保存为server.py,运行后服务器就启动了。

5. MCP客户端调用示例

客户端代码用来连接MCP服务器,调用my_tool工具,传入字符串并打印结果。

python 复制代码
from mcp_sdk import MCPClient

# 连接本地MCP服务器
client = MCPClient("http://localhost:8080")

# 调用工具"my_tool",传入字符串
result = client.call_tool("my_tool", "Hello, MCP!")

# 打印返回结果
print(result)  # 输出:Processed: Hello, MCP!
  • 保存为client.py,运行即可看到调用结果。

6. 运行步骤总结

  1. 打开终端,运行服务器:

    bash 复制代码
    python server.py
  2. 另开一个终端,运行客户端:

    bash 复制代码
    python client.py
  3. 客户端会输出:

    text 复制代码
    Processed: Hello, MCP!

7. 扩展应用示例

你可以把工具改成更复杂的功能,比如:

  • 计算两个数字之和
python 复制代码
class AddTool(Tool):
    def run(self, input_data):
        a = input_data.get("a", 0)
        b = input_data.get("b", 0)
        return a + b

# 注册时传入字典参数
mcp.register_tool(AddTool(), name="add_numbers")

客户端调用:

python 复制代码
result = client.call_tool("add_numbers", {"a": 5, "b": 3})
print(result)  # 输出:8
  • 天气查询工具 (异步示例,需用httpx库):
python 复制代码
import httpx
from mcp_sdk import MCP, Tool

class WeatherTool(Tool):
    async def run(self, input_data):
        city = input_data.get("city", "Beijing")
        url = f"https://api.example.com/weather?city={city}"
        async with httpx.AsyncClient() as client:
            resp = await client.get(url)
            data = resp.json()
            return f"{city}天气:{data['weather']},温度:{data['temp']}°C"

mcp = MCP()
mcp.register_tool(WeatherTool(), name="get_weather")
mcp.start()

8. MCP服务器安全和性能建议

  • 安全性

    • 使用HTTPS加密通信,防止数据泄露。
    • 实施访问控制,限制只有授权客户端能调用工具。
    • 记录访问日志,便于审计和异常检测。
  • 性能优化

    • 复杂工具建议用异步处理,提升并发能力。
    • 对频繁请求的数据使用缓存,减少重复计算。
    • 服务器资源有限时,使用负载均衡分摊压力。

9. MCP的应用场景举例

  • 自动化办公:自动发送邮件、更新日历、查询会议安排。
  • 智能助手:查询天气、新闻、股票行情,提供个性化建议。
  • 数据分析:连接数据库,执行复杂查询和报表生成。
  • 开发辅助:集成代码管理、版本控制和文档查询工具。

10. 总结

  • MCP是连接AI模型和外部工具的桥梁。
  • 通过Python的mcp-sdk,你可以快速搭建MCP服务器和客户端。
  • 服务器提供工具,客户端调用工具,AI模型通过客户端访问外部资源。
  • 你可以根据需求扩展工具功能,实现丰富的智能应用。

以上内容帮助你用最简单的方式理解和搭建MCP服务器,附带基础代码和扩展示例,适合初学者快速上手。祝你成功打造自己的智能工具生态!

相关推荐
随意石光几秒前
秒杀功能、高并发系统关注的问题、秒杀系统设计
后端
随意石光1 分钟前
Spring Cloud Alibaba Seata、本地事务、分布式事务、CAP 定理与 BASE 理论、Linux 安装 Seata、Seata的使用
后端
程序员清风2 分钟前
程序员入职公司实习后应该学什么?
java·后端·面试
智慧源点5 分钟前
基于DataX的数据同步实战
后端
随意石光7 分钟前
Java操作Excel报表,EasyExcel用法大全
后端
漂洋过海的鱼儿17 分钟前
期待更好的发展
面试
大葱白菜29 分钟前
Java 反射的作用详解:为什么说它是 Java 中最强大的特性之一?
java·后端·程序员
aircrushin30 分钟前
在 Expo 中实现 Azure SMS-OTP 登录
前端·javascript·后端
ん贤30 分钟前
GMP模型
运维·服务器·后端·golang
绵阳的脑内SSD35 分钟前
project4踩坑经历
后端