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

相关推荐
IT_陈寒1 天前
闭包陷阱让我加了两天班,JavaScript你真行
前端·人工智能·后端
易协同低代码1 天前
通达OA核心类库TD类深度解析
后端
Gopher_HBo1 天前
Go语言学习笔记(十八)Gin处理Session
后端
谭光志1 天前
工具塞满上下文窗口怎么办?深度拆解 AI Agent Tool Search 按需加载实现原理
前端·后端·ai编程
她说..1 天前
Java 默认值设置方式
java·开发语言·后端·springboot
foggyprojects1 天前
从0开始,一句话启动AI DataAgent
后端·数据分析·ai编程
郡杰1 天前
一些基础和问题解决
后端
陈随易1 天前
前端项目部署只要30秒
前端·后端·程序员
YIAN1 天前
从零手写文件读取 MCP 服务:一文吃透 Model Context Protocol 全链路通信原理
前端·后端·mcp
Imchendiana1 天前
《狂人日记NO.9》— 前后端一把梭,我的全栈实录
前端·后端