用最简单的方式教你用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服务器,附带基础代码和扩展示例,适合初学者快速上手。祝你成功打造自己的智能工具生态!

相关推荐
嘵奇21 分钟前
Spring Boot中HTTP连接池的配置与优化实践
spring boot·后端·http
子燕若水41 分钟前
Flask 调试的时候进入main函数两次
后端·python·flask
程序员爱钓鱼42 分钟前
跳转语句:break、continue、goto -《Go语言实战指南》
开发语言·后端·golang·go1.19
x66ccff1 小时前
【github】主页显示star和fork
github
chenyuhao20242 小时前
链表的面试题4之合并有序链表
数据结构·链表·面试·c#
Persistence___2 小时前
SpringBoot中的拦截器
java·spring boot·后端
嘵奇2 小时前
Spring Boot 跨域问题全解:原理、解决方案与最佳实践
java·spring boot·后端
景天科技苑3 小时前
【Rust泛型】Rust泛型使用详解与应用场景
开发语言·后端·rust·泛型·rust泛型
臻一4 小时前
关于github使用总结
github
PgSheep5 小时前
深入理解 JVM:StackOverFlow、OOM 与 GC overhead limit exceeded 的本质剖析及 Stack 与 Heap 的差异
jvm·面试