“ MCP协议是智能体开发中的一项标准协议,目前市面上智能体的主流开发协议就是它。”
在智能体领域工具是一个很重要的组件,大模型通过工具调用才能与外界环境交互并完成任务。而为了统一工具调用的方式,就有了MCP协议的出现,它的目的是统一工具调用的方式,不同模型厂商和工具厂商可以按照统一的标准实现,然后不同模型和工具之间可以无缝切换。
协议的本质就是标准。

FastMCP开发框架
下面我们以FastMCP框架为基础来介绍MCP协议,FastMCP是MCP官方支持的MCP工具开发框架。
FastMCP官方文档:
https://gofastmcp.com/servers/server
在MCP协议中有三个比较重要的概念,tools,resources和prompts。
Tools——工具
tools的本质是一个函数,其和普通的python函数没有太大的区别,只不过在实现上需要使用@mcp.tool注解;如下所示:
def multiply(a: float, b: float) -> float:
"""Multiplies two numbers together."""
return a * b
按照这种方式开发的函数,就可以交由FastMCP框架调用,以此完成某项特定的功能。
Resources——资源
资源是供MCP客户端使用的资源,客户端可以从中读取一些配置或参数。

Prompts——模板
prompts是访问大模型的一个目标,能够让模型按照约定的格式进行处理。

而MCP协议的实现非常的简单,
uv add fastmcp
pip install fastmcp
服务端实现如下:
from fastmcp import FastMCP
# 创建一个MCP服务
mcp = FastMCP("My MCP Server")
# 定义一个tools 函数
def greet(name: str) -> str:
return f"Hello, {name}!"
客户端实现如下:
import asyncio
from fastmcp import Client
client = Client("my_server.py")
async def call_tool(name: str):
async with client:
result = await client.call_tool("greet", {"name": name})
print(result)
asyncio.run(call_tool("Ford"))
通过以上方式就可以实现MCP服务端和客户端的通讯;MCP采用的是C-S架构,也就是Client(客户端)——Server(服务端)。
而关于MCP的通讯方式有以下几种:
stdio:一般用于本地通讯 通常用来进行测试开发
sse: 基于http的单项通讯协议
Streamable HTTP: 基于http的双向流式传输协议
websocket: 双向传输协议
通过以上方式就可以实现MCP客户端与服务端的通讯:
from fastmcp import Client
# The Client automatically uses StreamableHttpTransport for HTTP URLs
client = Client("https://example.com/mcp")
当然,FastMCP不仅仅提供客户端与服务端的实现,同时还提供了权限认证等多种功能。
在智能体的开发过程中,由大模型理解用户意图,然后判断是否需要调用工具;如果需要调用工具,大模型则会拼接参数,调用工具,然后把工具调用结果再次输入到大模型中;最后由大模型对工具结果进行处理,然后得到最终结果。
(文:AI探索时代)