MCP(Model Context Protocol)模型上下文协议介绍 原创

发布于 2025-7-7 07:02
浏览
0收藏

“ MCP协议是智能体开发中的一项标准协议,目前市面上智能体的主流开发协议就是它。”

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

协议的本质就是标准。

MCP(Model Context Protocol)模型上下文协议介绍-AI.x社区

FastMCP开发框架

下面我们以FastMCP框架为基础来介绍MCP协议,FastMCP是MCP官方支持的MCP工具开发框架。

FastMCP官方文档:
https://gofastmcp.com/servers/server

在MCP协议中有三个比较重要的概念,tools,resources和prompts。

Tools——工具

tools的本质是一个函数,其和普通的python函数没有太大的区别,只不过在实现上需要使用@mcp.tool注解;如下所示:

@mcp.tool
def multiply(a: float, b: float) -> float:
    """Multiplies two numbers together."""
    return a * b

按照这种方式开发的函数,就可以交由FastMCP框架调用,以此完成某项特定的功能。

Resources——资源

资源是供MCP客户端使用的资源,客户端可以从中读取一些配置或参数。

MCP(Model Context Protocol)模型上下文协议介绍-AI.x社区

Prompts——模板

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

MCP(Model Context Protocol)模型上下文协议介绍-AI.x社区

而MCP协议的实现非常的简单,

# 安装方式
# uv方式
uv add fastmcp
# pip方式
pip install fastmcp

服务端实现如下:

from fastmcp import FastMCP
# 创建一个MCP服务
mcp = FastMCP("My MCP Server")
@mcp.tool # 定义一个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探索时代​​ 作者:DFires

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-7-10 10:05:13修改
收藏
回复
举报
回复
相关推荐