MCP Servers 理解记录

105 阅读4分钟

最近想用Trae 2.0做一个服务于自己的智能体, 在编排工具的过程中深入理解了一下什么是MCP servers以及AI agent的系统架构, 故总结此记录方便自己以后有遗忘了回头复习, 后续有新理解也会补充于此.

🎯 什么是 MCP?

MCP (Model Context Protocol) 是一个让 AI 模型通过agent能够安全、标准化地访问外部数据和工具的协议。

MCP协议的职责范围:

  • ✅ 管什么 :Agent ↔ 工具/外部资源的标准化通信
  • ✅ 管什么 :连接建立、数据传输、协议规范
  • ❌ 不管什么 :LLM ↔ Agent 的交互格式
LLM  ↔   Agent   ↔    MCP Server  ↔  外部资源
     ↑           ↑
   不归MCP管    MCP协议管辖

简单类比

想象LLM是一个很聪明的大脑,无法直接接触外面的世界。Agent就是给这个大脑安装了一双"手",让它能够使用Tools, 这些工具就是MCP Servers, MCP这个协议让手可以以一个固定动作使用这些工具, 比如:

  • 📊 查询数据库
  • 📁 读写文件
  • 🌐 访问网络API
  • 🔧 使用各种工具

🏗️ MCP 的核心架构

用户 ↔ Trae (AI Agent) ↔ LLM (AI模型)
     (MCP协议)↕ 
            MCP Server ↔ 外部资源
                        (数据库/文件/API)

🔄 MCP 工作流程详解

1. 配置阶段(使用之前需配置)

// Trae 配置文件
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-postgres"],
      "env": {
        "POSTGRES_URL": "postgresql://user:pass@localhost/db"
      }
    }
  }
}
  1. command:启动MCP Server的命令, 这个命令第一次执行时会下载包到本地并启动, 之后扫描到发现本地有就直接启动了.
  2. args:启动MCP Server的参数, 这个就是MCP server的包名.
  3. env:告诉MCP Server 连接哪个数据库.

2. 运行阶段(每次对话)

  1. 用户提问:"帮我查询销售数据"
  2. Trae启动MCP Server:在本地启动数据库连接进程
  3. Trae发送给LLM:用户问题 + 可用工具列表
  4. LLM返回工具调用{"tool": "query_database", "sql": "SELECT * FROM sales"}
  5. Trae执行工具:通过MCP Server查询数据库
  6. 返回结果:数据库结果 → MCP Server → Trae → LLM → 最终回答

🚀 MCP Server 的三种部署模式

1. 本地进程模式 ⭐(推荐)

特点

  • MCP Server 运行在你的电脑上
  • Trae 通过进程间通信控制
  • 需要安装相应的运行时环境

配置示例

{
  "command": "npx",
  "args": ["@modelcontextprotocol/server-postgres"]
}

优势

  • ✅ 数据安全(不离开本地)
  • ✅ 低延迟
  • ✅ 完全控制
  • ✅ 官方支持最好

2. 远程服务器模式

特点

  • MCP Server 运行在云端
  • 通过网络协议通信
  • 本地无需安装环境

配置示例

{
  "transport": {
    "type": "sse",
    "url": "https://api.example.com/mcp"
  }
}

优势

  • ✅ 无需本地环境
  • ✅ 易于维护
  • ❌ 数据需要传输
  • ❌ 依赖网络

3. Docker 容器模式

特点

  • 运行在 Docker 容器中
  • 环境完全隔离
  • 需要安装 Docker

配置示例

{
  "command": "docker",
  "args": ["run", "my-mcp-server"]
}

🛠️ 环境安装要求

为什么需要安装 Node.js?

核心原因:大部分官方 MCP Server 都是用 JavaScript/TypeScript 编写的。

类比理解

  • 安装 Node.js = 为了运行 JavaScript 程序
  • 安装 JDK = 为了运行 Java 程序
  • 安装 Python = 为了运行 Python 程序

安装清单

MCP Server 类型需要安装示例
JavaScript/TypeScriptNode.js (LTS版本)@modelcontextprotocol/server-postgres
PythonPython 3.8+自定义 Python MCP Server
GoGo 运行时自定义 Go MCP Server
DockerDocker Desktop任何容器化的 MCP Server

🔧 实际配置示例

PostgreSQL 数据库连接

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-postgres"],
      "env": {
        "POSTGRES_URL": "postgresql://username:password@localhost:5432/database_name"
      }
    }
  }
}

文件系统访问

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-filesystem", "/path/to/allowed/directory"]
    }
  }
}

🎭 Trae 的角色:一个 AI Agent 类似一个中台服务

客户端功能

  • 🖥️ 用户界面:提供聊天界面
  • 💬 交互体验:处理用户输入输出
  • 📝 会话管理:维护对话历史
  • ⚙️ 配置管理:管理 MCP 配置

中台调度服务

  • 🚦 请求路由:决定调用哪个工具
  • 🔧 工具编排:协调多个工具协作
  • 🔄 协议转换:在不同协议间转换
  • 📊 资源管理:管理 MCP Server 生命周期
  • 🔒 安全控制:权限和访问控制

📚 总结

MCP 是连接 AI 模型与外部世界的桥梁,通过标准化的协议让 AI 能够安全、高效地访问各种资源。理解 MCP 的关键在于:

  1. 架构理解:AI Agent 作为中台调度服务
  2. 部署选择:根据需求选择合适的部署模式
  3. 环境准备:安装必要的运行时环境