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

相关推荐
我叫黑大帅4 分钟前
JS中的两大定时器
前端·javascript·面试
Uncertainty!!4 分钟前
将docker镜像上传到github镜像存储仓库(GitHub 容器仓库(GHCR)使用流程)
docker·容器·github
编码忘我9 分钟前
java策略模式实战之优惠券
java·后端
掘金安东尼12 分钟前
⏰前端周刊第 458 期v2026.3.24
前端·javascript·面试
anzhxu15 分钟前
SpringBoot 3.x 整合swagger
java·spring boot·后端
青椒啊15 分钟前
DPDK入门到精通(一)
后端
小江的记录本18 分钟前
【Bean】JavaBean(原生规范)/ Spring Bean 【重点】/ 企业级Bean(EJB/Jakarta Bean)
java·数据库·spring boot·后端·spring·spring cloud·mybatis
中国胖子风清扬23 分钟前
Camunda 8 概念详解:梳理新一代工作流引擎的核心概念与组件
java·spring boot·后端·spring cloud·ai·云原生·spring webflux
闻哥25 分钟前
MySQL InnoDB 缓存池(Buffer Pool)详解:原理、结构与链表管理
java·数据结构·数据库·mysql·链表·缓存·面试
前端付豪25 分钟前
实现必要的流式输出(Streaming)
前端·后端·agent