简介

模型上下文协议(MCP,Model Context Protocol)顾名思义它是一个协议,做开发的朋友看到Protocol是不是DNA动了。

TCP/IP协议、HTTP协议、UDP协议、RESP协议各种各样的协议,本质上就是定义了应用之间的交互格式和行为。

MCP协议也一样,定义了就是定义了MCP Server与MCP Host(MCP Client)之间的交互标准。

具体的标准可以看:MCP Specification

MCP Server通常是我们提供给AI的服务、工具,MCP Host通常是AI Agent,例如Cline、Cherry Studio之类。

MCP官网

一个简单的MCP服务

为了简化流程,我们这里就直接使用MCP为我们提供的SDK和例子,来简单的说明一下。

这里我们使用Python语言来实现,可以直接看modelcontextprotocol提供的:python-sdk

首先使用uv命令来初始化项目,并且把MCP的Python-sdk依赖包添加进来:

uv init
uv add "mcp[cli]"

初始化项目

不清楚uv是啥的可以参考:Python虚拟环境与包管理工具(uv、Conda)

添加我们的MCP服务:

from mcp.server.fastmcp import FastMCP

# Create an MCP server
mcp = FastMCP("Demo")


# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b


# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"


# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    """Generate a greeting prompt"""
    styles = {
        "friendly": "Please write a warm, friendly greeting",
        "formal": "Please write a formal, professional greeting",
        "casual": "Please write a casual, relaxed greeting",
    }

    return f"{styles.get(style, styles['friendly'])} for someone named {name}."
    

if __name__ == "__main__":
    mcp.run(transport="stdio")

MCP服务目录结构

通过MCP Client使用MCP服务

我们已经有一个MCP服务了,那如何使用这个服务呢?

这里我们使用国产的AI客户端Cherry Studio来测试,因为国产的对国内的很多大模型平台支持要好很多,避免很多网络问题。

可以去下面的链接查看、下载:

Cherry Studio

Cherry Studio 下载

Cherry
Studio

下载,直接安装就可以了。

安装好,我们打开Cherry Studio,首先要设置一下大模型平台,这里我们选择硅基流动。

设置平台模型

硅基流动

平台的模型广场上有很多大模型可供选择,很多是免费的,因为我们要使用Cherry Studio通过API调用,所以要先申请密钥。

创建密钥

当然,你也可以选择你自己熟悉的大模型平台,Key的申请基本上在个人中心找到。

然后我们就可以选择模型,来测试一下:

无MCP时的调用

上面这是我们使用DeepSeek-V3没有使用MCP时的调用过程。

然后我们配置好我们的自己开发的MCP。
配置MCP

这里我们配置我们自己的MCP:

配置我们自己的MCP服务

参数:

--directory
D:\project\python\learn-mcp
run
main.py

实际上Cherry Studio在需要MCP服务的时候,就会去执行下面的命令,来启动我们的MCP服务:

# 就是运行指定的Python文件,启动MCP服务
uv --directory D:\project\python\learn-mcp run main.py

像Cline这样的工具使用的Json工具,其实Cherry Studio也一样,只不过Cherry Studio为我们提供了用户界面配置的方式而已,实际上最终使用的还是像下面的Json。

{
  "mcpServers": {
    "YQbsNQ1zCOdbEV94oCJGr": {
      "name": "my-first-mcp-server",
      "type": "stdio",
      "description": "",
      "isActive": true,
      "registryUrl": "https://pypi.tuna.tsinghua.edu.cn/simple",
      "command": "uv",
      "args": [
        "--directory",
        "D:\\project\\python\\learn-mcp",
        "run",
        "main.py"
      ]
    }
  }
}

然后,我们在设置一下MCP服务器,然后再让大模型【请帮忙计算:147258369 + 147258369】

添加MCP服务之后的调用

我们可以看到最终大模型识别出了加法计算,并通过Cherry Studio这个Agent调用了我们的MCP服务得到了结果。

MCP、AI客户端、大模型之间的交互流程

整个的交互流程大概就是下面这个样子:

MCP、AI客户端、大模型之间的交互流程

注意:MCP不是直接与大模型进行的交互,而是与Agent的进行交互。

Agent(MCP Client)与MCP Server交互是有MCP规定的标准化的,但是Agent与大模型之间的交互不是标准的,所以还是会出现牛头不对马嘴的情况。

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐