Malize's blog Malize's blog
首页
  • 设计模式

    • 设计模式总览
    • 工作中用到的设计模式
  • 并发编程

    • 死锁
  • 技术文档

    • Docker 核心命令大全
    • Markdown 使用教程
    • npm 常用命令
    • yaml 语言教程
    • Nodejs 递归读文件
  • DDD 领域驱动(基础)

    • DDD 是什么
    • 领域、子域与限界上下文
    • 实体、值对象与聚合
    • 领域事件
    • 分层架构与架构模型
  • DDD 领域驱动(实战)

    • DDD、中台与微服务
    • 事件风暴与中台建模
    • 微服务代码模型
    • 边界、视图与微前端
    • 设计实例与拆分原则
    • 分布式架构关键设计10问
  • 学习笔记总览
  • 入门
  • 部署
  • 进阶
  • 集成
  • 优化
  • 面试
  • MCP

    • MCP 学习导航
    • 概念与运行机制
    • draw.io 源码与画图调用链
    • MCP、插件与 MCP Apps
    • 开发与数据采集实践
    • 离线渲染与内网部署
  • 构造问答系统

    • 项目背景
    • 构建答疑机器人
    • 扩展知识范围
    • 优化提示词
    • 自动化评测
    • 优化 RAG 应用
  • 构建 Agent 系统

    • Agent 基础与工具调用
    • 规划与执行
    • 多 Agent 团队协作
    • Memory 积累经验
    • Skill 可复用流程
    • Qwen Code 实践
  • 交付上线

    • 走向生产环境
    • 模型蒸馏
    • 部署模型
    • 生产实践
    • 安全合规
  • 工具手册

    • OpenClaw 命令速查
  • 规范 & 实践

    • 代码规范
    • sharding-jdbc
    • CIM 半导体行业
    • HTML 常用 meta
    • CSS 技巧收藏
  • 微服务

    • feign原理
  • Git

    • Git 笔记总览
    • Git 使用手册
    • Git 修改分支名
    • 团队 Git 分支规范
  • GitHub & 博客

    • GitHub 高级搜索技巧
    • GitHub Actions 自动部署
    • 博客搭建 - 百度收录
  • 优质网站
  • 前端库推荐
  • 成长学习

    • 学习方法
    • 英语学习:奥格登 850 词
    • 敏捷开发实战
    • 提示词工程
  • 生活

    • 实用技巧
    • 心情杂货
    • 梦境与灵感
  • 技术问题

    • 面试问题备忘
  • 索引

    • 分类
    • 标签
    • 按年归档
GitHub (opens new window)

Malize

持续学习,持续成长
首页
  • 设计模式

    • 设计模式总览
    • 工作中用到的设计模式
  • 并发编程

    • 死锁
  • 技术文档

    • Docker 核心命令大全
    • Markdown 使用教程
    • npm 常用命令
    • yaml 语言教程
    • Nodejs 递归读文件
  • DDD 领域驱动(基础)

    • DDD 是什么
    • 领域、子域与限界上下文
    • 实体、值对象与聚合
    • 领域事件
    • 分层架构与架构模型
  • DDD 领域驱动(实战)

    • DDD、中台与微服务
    • 事件风暴与中台建模
    • 微服务代码模型
    • 边界、视图与微前端
    • 设计实例与拆分原则
    • 分布式架构关键设计10问
  • 学习笔记总览
  • 入门
  • 部署
  • 进阶
  • 集成
  • 优化
  • 面试
  • MCP

    • MCP 学习导航
    • 概念与运行机制
    • draw.io 源码与画图调用链
    • MCP、插件与 MCP Apps
    • 开发与数据采集实践
    • 离线渲染与内网部署
  • 构造问答系统

    • 项目背景
    • 构建答疑机器人
    • 扩展知识范围
    • 优化提示词
    • 自动化评测
    • 优化 RAG 应用
  • 构建 Agent 系统

    • Agent 基础与工具调用
    • 规划与执行
    • 多 Agent 团队协作
    • Memory 积累经验
    • Skill 可复用流程
    • Qwen Code 实践
  • 交付上线

    • 走向生产环境
    • 模型蒸馏
    • 部署模型
    • 生产实践
    • 安全合规
  • 工具手册

    • OpenClaw 命令速查
  • 规范 & 实践

    • 代码规范
    • sharding-jdbc
    • CIM 半导体行业
    • HTML 常用 meta
    • CSS 技巧收藏
  • 微服务

    • feign原理
  • Git

    • Git 笔记总览
    • Git 使用手册
    • Git 修改分支名
    • 团队 Git 分支规范
  • GitHub & 博客

    • GitHub 高级搜索技巧
    • GitHub Actions 自动部署
    • 博客搭建 - 百度收录
  • 优质网站
  • 前端库推荐
  • 成长学习

    • 学习方法
    • 英语学习:奥格登 850 词
    • 敏捷开发实战
    • 提示词工程
  • 生活

    • 实用技巧
    • 心情杂货
    • 梦境与灵感
  • 技术问题

    • 面试问题备忘
  • 索引

    • 分类
    • 标签
    • 按年归档
GitHub (opens new window)
  • MCP

    • MCP
    • MCP概念与运行机制
      • 1. 一句话理解 MCP
        • MCP 等于函数吗?类似说明书吗?
        • MCP 的主要价值
      • 2. MCP 有哪些组成?
      • 3. GitHub 上的 MCP 项目是干什么的?
        • 为什么需要 npm 或 npx?
        • 它是进程,还是服务?
      • 延伸阅读
    • draw.io源码与画图调用链
    • MCP、插件与MCP Apps
    • 开发第一个MCP与数据采集实践
    • draw.io离线渲染与内网部署
  • 大模型学习
  • MCP
malize
2026-10-19
目录

MCP概念与运行机制

# MCP概念与运行机制

先分清协议、工具、服务和进程,再理解 AI 应用如何调用外部能力。

# 1. 一句话理解 MCP

MCP(Model Context Protocol,模型上下文协议)是一套连接 AI 应用与外部工具、数据源的标准协议,让 AI 应用能够通过统一接口获取上下文并调用工具。

面试时可以直接用这句话。继续展开时,重点解释:MCP 统一的是连接与调用方式,真正执行工作的仍是开发者编写的业务代码。

# MCP 等于函数吗?类似说明书吗?

一个 MCP 工具可以对应一个函数,但 MCP 本身是协议。

概念 做什么 例子
业务函数 实际干活 read_temperature(device_id)
工具定义 描述工具名称、用途和输入结构 读取温度,需要设备编号
MCP 协议 规定能力发现、请求和结果如何交换 列出工具、调用工具
MCP Server 提供这些能力的程序 包含多个设备查询工具的服务

“说明书”只对应工具描述这一部分。真正可用还需要通信处理、业务函数和执行结果。

# MCP 的主要价值

原本不同 AI 应用可能各写一套外部工具接入逻辑。MCP 提供统一标准,使兼容的客户端能够复用同一套工具服务。

AI 应用可以发现有哪些工具,读取参数说明,发送调用,接收数据或错误。MCP 不保证所有客户端支持完全相同的功能,也不替代业务系统自身的权限校验。

# 2. MCP 有哪些组成?

从架构看有三个角色:

  • Host(宿主):用户使用的 AI 应用,协调模型、上下文和工具使用。
  • Client(客户端):宿主内部负责连接某个 MCP 服务的组件。
  • Server(服务端):对外提供工具、数据等能力的程序,可以本地运行,也可以远程部署。
用户 → AI 应用(Host,内部包含 Client)
                         ↓ MCP 通信
                    MCP Server
                         ↓
              业务函数 → 文件 / 数据库 / 设备 / API
1
2
3
4
5

开发一个工具服务时,可以按四部分理解实现:

部分 作用
工具定义 名称、说明、输入参数结构
通信层 用 SDK 接收和处理 MCP 请求
业务实现 调用库、系统命令、设备接口等
结果处理 返回数据、文本或错误

这个划分是开发视角,不是协议正式规定的“四个模块”。MCP 也不只有工具:服务端还可以提供 **Resources(上下文数据)**和 Prompts(可复用提示模板)。详见 MCP 架构说明 (opens new window)。

# 3. GitHub 上的 MCP 项目是干什么的?

很多项目是 MCP Server 的具体实现:把文件系统、数据库、画图软件等能力封装成标准工具。也有 SDK、客户端、示例和插件项目,不能只看名字判断。

以 npm 包 @drawio/mcp 为例,它提供可执行的 JavaScript 程序。安装包包含工具定义和执行代码,并不包含一个负责思考的大模型。

# 为什么需要 npm 或 npx?

因为要先获得并启动那段程序:

# 全局安装,之后可以通过命令启动
npm install -g @drawio/mcp

# 获取包并执行;已有缓存时通常可以复用
npx -y @drawio/mcp
1
2
3
4
5

npm install 是安装,npx 是执行包里的命令。使用 npx 不代表已全局安装。生产或隔离环境应固定版本,并提前准备依赖,避免运行时临时访问包仓库。

本次检查的客户端配置是:

[mcp_servers.drawio]
command = "npx"
args = ["-y", "@drawio/mcp"]
1
2
3

这是客户端的配置格式,不是 MCP 协议要求所有客户端使用的格式。建立连接时,客户端按配置启动程序。

# 它是进程,还是服务?

两者都是。进程描述程序如何运行,服务描述它向调用方提供什么能力。

本地 draw.io MCP 使用 stdio,通过标准输入和标准输出通信,没有启动一个 HTTP 接口端口:

AI 客户端 ⇄ stdin / stdout ⇄ 本地 Node.js MCP 进程
1

远程 MCP 服务通常使用 Streamable HTTP,客户端连接服务地址。启动时机、连接复用和退出管理由具体客户端决定。

# 延伸阅读

  • draw.io源码与画图调用链
  • MCP、插件与MCP Apps
  • 开发第一个MCP与数据采集实践
  • draw.io离线渲染与内网部署
编辑 (opens new window)
#MCP#Agent#draw.io
上次更新: 2026/10/19, 01:44:57
MCP
draw.io源码与画图调用链

← MCP draw.io源码与画图调用链→

最近更新
01
draw.io源码与画图调用链
10-19
02
MCP、插件与MCP Apps
10-19
03
开发第一个MCP与数据采集实践
10-19
更多文章>
Theme by Vdoing | Copyright © 2023-2026 Malize | GitHub | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式