前言

AI Agent 正在成为新一代应用的核心形态。

过去的大模型更像“会聊天的助手”,但现在,AI 正在逐渐拥有“调用外部能力”的能力:它不仅能回答问题,还能读取文件、操作系统、查询数据库、调用 API,甚至执行自动化任务。

而 MCP(Model Context Protocol)就是连接 AI 与外部能力的重要协议。

很多人第一次接触 MCP 时,会把它理解成:

“给 AI 提供工具调用能力的一种协议。”

这个理解没有错,但 MCP 的真正价值,其实是:

它让 AI Agent 拥有了标准化接入外部世界的能力。

本文会从以下几个角度,完整讲清 MCP:

  • MCP 的核心架构
  • MCP 的完整执行流程
  • 一个获取操作系统版本的 MCP 实战
  • 如何接入 Codex

一、什么是 MCP?

MCP(Model Context Protocol)可以理解成:

AI 模型与外部工具之间的标准通信协议。

它解决的是:

AI 如何安全、标准化地调用外部能力。

比如:

  • 获取本机操作系统版本
  • 查询数据库
  • 获取 GitHub Issue
  • 抓取 X(Twitter)内容
  • 调用浏览器
  • 操作本地文件

这些能力并不是大模型本身拥有的。

模型本身只是“会推理”。

真正执行动作的是:

  • MCP Server
  • 外部工具
  • Agent Runtime

因此:

MCP 本质上是 AI 世界中的“工具协议层”。


二、MCP 架构详解

整个架构主要由四部分组成:


1. 用户(User)

用户负责:

  • 提出问题
  • 下达任务
  • 提供上下文

例如:

请输出我当前操作系统的版本号

2. AI Agent

AI Agent 是整个系统中的“调度中心”。

它的核心职责:

(1)管理上下文

负责维护:

  • 用户输入
  • 会话历史
  • 可用工具
  • 当前任务状态

(2)读取可用 MCP Skill

Agent 会读取:

当前系统有哪些可以调用的 MCP Server

例如:

- system-tools
- github-tools
- browser-tools

(3)调度工具调用

Agent 不负责真正推理。

它更像:

“AI 世界里的操作系统”

负责:

  • 调度模型
  • 管理工具
  • 管理状态
  • 转发结果

3. AI Model(大模型)

AI Model 负责:

  • 理解用户意图
  • 推理
  • 判断是否需要调用工具
  • 提取工具参数
  • 组织最终语言

例如:

用户说:

请输出我当前操作系统版本

模型会判断:

这个能力我本身不具备,
需要调用 system-tools MCP

然后模型会返回:

{
  "tool": "get_system_info",
  "arguments": {}
}

4. MCP Server(Skill)

MCP Server 才是真正执行能力的地方。

它可以理解成:

AI 的外挂能力模块。

例如:

  • 获取系统版本
  • 调用数据库
  • 查询股票
  • 获取天气
  • 操作浏览器

MCP Server 一般由开发者自己实现。


三、MCP 的完整执行流程

下面结合流程图,完整解释一次 MCP 调用过程。

在这里插入图片描述


Step 1:用户提出问题

用户输入:

请输出我当前操作系统的版本号

Step 2:Agent 获取可用 Skill

Agent 会读取:

当前注册了哪些 MCP Server

例如:

- system-tools
- github-tools
- browser-tools

Step 3:同步上下文给 AI Model

Agent 会把:

  • 用户问题
  • 可用 Skill
  • Tool Description

一起发送给模型。


Step 4:模型思考

模型开始推理:

用户问的是操作系统版本

然后发现:

自己无法获取本机系统信息

但是:

system-tools 可以处理

Step 5:模型生成 Tool Call

模型返回:

{
  "tool": "get_system_info",
  "arguments": {}
}

这里最关键的一点是:

模型本身不执行工具。

它只是:

  • 判断调用哪个工具
  • 提取参数

Step 6:Agent 调用 MCP Server

Agent 收到 tool call 后,真正调用:

get_system_info()

Step 7:MCP 返回结果

MCP Server 返回:

{
  "system": "Darwin",
  "release": "24.1.0",
  "machine": "arm64"
}

Step 8:Agent 将结果返回给模型

Agent 会把:

{
  "system": "Darwin",
  "release": "24.1.0"
}

重新发送给模型。


Step 9:模型组织自然语言

模型最终生成:

你当前的操作系统是 macOS,
内核版本为 Darwin 24.1.0,
架构为 ARM64。

Step 10:Agent 返回给用户

最终输出给用户。

至此,一次完整 MCP 调用结束。


四、MCP 实战:获取操作系统版本

下面用一个真实 MCP 示例:

获取当前操作系统版本。

代码如下:

import platform
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("system-tools")


@mcp.tool(
    description="""
Retrieve detailed operating system information from the current machine.

Use this tool when the user asks about:
- operating system version
- macOS version
- Windows version
- Linux distribution
- machine architecture
- local system information
- runtime environment
"""
)
def get_system_info() -> dict:
    uname = platform.uname()

    return {
        "system": uname.system,
        "node": uname.node,
        "release": uname.release,
        "version": uname.version,
        "machine": uname.machine,
        "processor": uname.processor,
        "platform": platform.platform(),
        "python_version": platform.python_version(),
    }


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

五、一个 MCP 由哪些部分组成?

从结构上来说,一个 MCP 通常由四部分组成。


1. MCP Server

mcp = FastMCP("system-tools")

这里创建了一个 MCP 服务。

名字叫:

system-tools

它会暴露一组工具给 AI 使用。


2. Tool(工具)

@mcp.tool(...)

这里定义了一个 Tool。

Tool 本质上:

就是 AI 可以调用的函数。


3. Tool Description

description="""
Retrieve detailed operating system information...
"""

这部分非常关键。

因为:

AI 是否能正确调用 Tool,很大程度取决于 Description。

模型不会“读代码”。

它主要依赖:

  • tool name
  • tool description

来判断:

什么时候调用

4. Tool Function

def get_system_info() -> dict:

这里是真正执行逻辑的地方。

使用:

platform.uname()

获取:

  • 系统版本
  • CPU 架构
  • Python 版本

六、代码逐行解析

创建 MCP 实例

mcp = FastMCP("system-tools")

作用:

  • 创建 MCP Server
  • 注册工具
  • 提供通信协议

注册 Tool

@mcp.tool(...)

作用:

  • 把 Python 函数暴露给 AI

等价于:

向 AI 注册能力

Description 的作用

这是 MCP 里最容易被忽略,但最重要的部分。

例如:

Use this tool when the user asks about:
- macOS version
- Linux distribution

这其实是在“教模型”:

什么时候调用这个工具

Description 写得越好:

  • Tool 命中率越高
  • 参数提取越准确

Tool Return

return {
    "system": uname.system,
}

返回值通常建议:

  • JSON 化
  • 结构清晰
  • 字段稳定

因为:

最终这些数据还会再次送回模型。


启动 MCP Server

mcp.run()

启动 MCP 服务。

此时:

Codex / Claude Desktop / Cursor 等 Agent 就可以连接这个 MCP。


七、如何将 MCP 集成到 Codex 中

接下来是最关键的一步:

如何让 Codex 自动调用这个 MCP。


1. 安装 Python 环境

建议:

brew install python@3.10

创建虚拟环境:

python3.10 -m venv .venv
source .venv/bin/activate

2. 安装 MCP SDK

安装:

pip3.10 install "mcp[cli]"

如果安装失败,通常是 Python 版本过低。

MCP SDK 一般要求:

Python >= 3.10

3. 保存 MCP 文件

例如:

system_tools.py

4. 验证MCP是否可以被调用

运行:

python system_tools.py

如果没有报错说明可以被调用


5. 在 Codex 中配置 MCP

在~/.codex/config.toml中添加:

[mcp_servers.os-version]
command = "/绝对路径/.venv/bin/python"
args = ["/绝对路径/system_tools.py"]
startup_timeout_sec = 10
tool_timeout_sec = 30
enabled = true

6. 配置 System Prompt

这里是很多人容易忽略的一点。

如果你希望:

用户不需要明确说:
“调用 system-tools”

而是:

直接问:
“输出当前操作系统版本”

模型就自动调用 MCP。

那么:

System Prompt 非常重要, 你的MCP server中description描述的约准确AI MODEL就会越容易调用。

这里有一点需要注意:Codex 默认比较保守,默认尽量少调用 tool,避免误调用本地 MCP,这是安全策略。

因此:

如果问题太简单,比如我们这个例子:请输出我当前操作系统版本号。模型可能会直接“猜”,而不调用 tool。

为了验证我们这个例子,可以在 Prompt 中强化 Tool Usage Policy,可以在 Codex 的 System Prompt / Workspace Instructions 中加:

Always use available MCP tools when answering questions about:

- operating system
- local environment
- files
- hardware
- runtime information
- machine configuration

Do not guess system information.
Prefer MCP tools over assumptions whenever possible.

这会明显提升自动调用概率。

在这里插入图片描述

7. 效果展示

在这里插入图片描述
可以看到,当配置好上面的MCP server之后,在codex中输入【请输出我当前操作系统的版本号】, AI MODEL会调用MCP Server进行回答

八、为什么 MCP 会成为 AI Agent 的基础设施

MCP 真正重要的地方在于:

它把“能力调用”标准化了。

过去:

每个平台:

  • 插件格式不同
  • Tool 格式不同
  • 调用方式不同

而 MCP 出现后:

AI 工具生态开始统一。

未来:

  • Cursor
  • Codex
  • Claude Desktop
  • OpenAI Agent
  • 浏览器 Agent

都会逐渐统一到:

MCP + Agent

这套体系。


九、未来展望:AI Agent 的时代正在开始

过去:

AI 更像:

聊天机器人

未来:

AI 会变成:

具备执行能力的软件系统

而 MCP 正在成为 AI 世界中的:

  • USB 协议
  • 插件协议
  • 工具标准层

未来真正有价值的方向,已经不只是:

训练模型

而是:

给 AI 提供能力

谁能提供:

  • 数据能力
  • 工具能力
  • 自动化能力
  • 工作流能力

谁就能成为 AI Agent 生态中的基础设施。


Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐