mcpField
C
CarMaker

CarMaker

本地服务
github.com/De-Ioannidis科研与教育21 周前更新

关于 CarMaker

CarMaker 是面向车辆动力学测试 Agent 的 MCP 服务,支持 IPG CarMaker 和 CarMaker for Simulink。它可运行测试、读取结果、编辑车辆及控制器参数,并撤销所作更改。

主要功能

  1. 01启动 CarMaker 会话和测试运行
  2. 02读取 `.erg` 结果
  3. 03编辑车辆和控制器参数
  4. 04按顺序执行参数研究
  5. 05撤销 Agent 所作更改

适用场景

  1. 01测量制动测试的停车距离
  2. 02修改控制器参数后比较横摆角速度
  3. 03比较不同车辆质量下的横向加速度
  4. 04撤销测试期间所作的项目更改

MCP 相关

该服务向 MCP 客户端提供 CarMaker 会话、测试运行、结果、项目数据和控制器参数操作。支持连接 MATLAB 的会话和独立运行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"de-ioannidis-carmaker": {
"command": "uvx",
"args": [
"carmaker-mcp"
],
"env": {
"CM_PROJECT": "<CM_PROJECT>",
"CM_MODEL": "<CM_MODEL>",
"CM_MATLAB_SESSION": "<CM_MATLAB_SESSION>",
"CM_POPUP_TIMEOUT": "<CM_POPUP_TIMEOUT>",
"CM_ENABLE": "<CM_ENABLE>",
"CM_DISABLE": "<CM_DISABLE>"
}
}
}
}
启动命令uvx carmaker-mcp
需要配置的环境变量
CM_PROJECTCarMaker project folder. All writes are confined to it.
CM_MODELSimulink model that cm_session_start opens (name on the MATLAB path, or a file).
CM_MATLAB_SESSIONName under which MATLAB shares its engine.
CM_POPUP_TIMEOUTSeconds after which CarMaker GUI pop-ups answer themselves with their default choice. Not set: they wait for a click.
CM_ENABLEOptional tools, comma separated: tcl (raw Tcl in the GUI), experimental (Simulink structure edits).
CM_DISABLETool groups to switch off, comma separated: standalone, study, matlab.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicarmaker-mcp0.2.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

carmaker-mcp

一个 MCP 服务,让 AI Agent 能在你的计算机上操控 IPG CarMaker:启动会话、运行测试、读取结果、更改车辆数据和 Simulink 控制器参数,并撤销所做的更改。

非官方社区项目,与 IPG Automotive 或 MathWorks 无关联,也未获得其认可。你需要自备 CarMaker 和 MATLAB/Simulink 许可证。本仓库不包含任何 IPG 或 MathWorks 代码或数据。

状态:alpha。 在一套环境(CarMaker 14.1.1、MATLAB R2024b、Windows 11)上开发和测试。 docs/verification.md 列出了已在真实软件上验证和未经验证的内容。

目录: 功能 · 不涵盖的内容 · 要求 · 设置 · 与 MATLAB MCP 服务配合使用 · 设置项 · 工具 · 安全与隐私 · 故障排除 · 工作原理

功能

连接服务后,你可以向 Agent 提出以下要求:

  • “运行制动测试,并告诉我停车距离。”
  • “将控制器模型中的 Kp_yaw 设为 1.5,再次运行蛇形测试,并比较横摆角速度。”
  • “使用 280、300 和 320 kg 的车辆质量尝试变道,并以表格列出横向加速度。”
  • “上一次运行中止了。为什么?”
  • “撤销你所做的一切更改。”

它有两种工作方式,Agent 会选择适合车辆的一种:

MATLAB 连接会话独立运行
适用场景控制器为 Simulink 模型的车辆(CarMaker for Simulink)使用 CarMaker 内置控制器的车辆
需要包含你模型的 MATLAB,以及 CarMaker GUI(服务可以启动两者)只需要 CarMaker;不需要 MATLAB,也不需要窗口

更多示例: docs/examples.md。

不支持的功能

该服务是为 Formula Student 车队的车辆动力学和控制器工作编写的,其中每次运行要么是独立运行,要么是 CarMaker for Simulink 运行。CarMaker 能做的远不止这些,其他功能不在本服务的范围内,也未经测试。

不支持(没有对应的工具):

  • 其他平台和产品: Linux;TruckMaker 和 MotorcycleMaker;CarMaker HIL 和 CarMaker Office Extended(实时硬件、Fail Safe Tester、CAN、FlexRay、SOME/IP、XCP 等总线接口)。
  • CarMaker 自带的测试自动化功能: Test Manager 和测试系列、测试报告、并行(HPC)执行、使用启动文件的批处理模式。本服务会自行运行参数研究,每次运行一个。
  • 构建场景: Scenario Editor,以及道路、交通、传感器、环境和 OpenSCENARIO 导入。cm_edit 会更改现有文件中的键值,但不会创建这些内容。
  • 大多数可视化功能: Movie NX、IPGControl、Instruments、视频导出、Model Check。对于 IPGMovie,仅支持单张图片。
  • 其他结果格式: 仅读取 .erg 文件,不读取 MDF 或 ASCII。
  • 重新构建仿真程序: 使用 C 代码或通过 Simulink Coder 生成的模型。
  • 远程计算机: CarMaker 和 MATLAB 必须运行在本服务所在的计算机上。

可能可用,但从未测试:

  • FMU、导出为 FMU 的 CarMaker、第三方轮胎模型和其他协同仿真工具。
  • 加密或受保护的数据文件。
  • 上文未提及的 CarMaker 和 MATLAB 版本;同时运行多个 MATLAB 会话或 CarMaker GUI。
  • 并行运行多个独立运行、暂停并恢复独立运行、对独立运行进行参数研究。
  • 包含交通、传感器或驾驶辅助功能的测试运行。这些功能并无障碍,但迄今为止的所有检查都使用了不包含这些功能的车辆动力学运行。

各工具的状态见 docs/verification.md。欢迎提供其他设置的测试报告。

要求

  • Windows 10 或 11
  • IPG CarMaker 及其 Python API(基于 14.1.1 开发)
  • 对于连接 MATLAB 的会话:CarMaker for Simulink 和 MATLAB R2022b 或更高版本,具体取决于 CarMaker 支持的版本(请参阅步骤 1中的表格;仅测试过 R2024b)
  • uv(用于获取服务及其 Python 环境;也可使用 pip,参见 docs/setup.md)
  • 一个 MCP 客户端:Claude Code、Claude Desktop、带 GitHub Copilot 的 VS Code、Codex、Antigravity、Cursor,……

设置

1. 检查你的计算机
uvx carmaker-mcp doctor

此命令会查找 CarMaker 和 MATLAB 的安装,告知你有哪些配置不兼容以及如何修复,并输出适用于你的计算机的 uvx 参数。参数如下所示:

uvx --python 3.12 --with matlabengine==24.2.* carmaker-mcp

这两个额外参数很重要,因此工具会为你计算出合适的参数:

  • --python 3.12 用于选择 CarMaker 和你的 MATLAB 版本都兼容的 Python 版本。如果不指定,uvx 可能会选择较新的 Python,导致两者都无法使用。
  • --with "matlabengine==24.2.*" 用于添加适用于你的 MATLAB 版本的 MATLAB 引擎包。如果你只使用独立运行模式,可以不添加此参数。

这两个参数都取决于 MATLAB 版本,因为 MathWorks 每个版本都会发布一个引擎包,而且每个包只能安装在部分 Python 版本上:

MATLABPythonuvx 参数发布页面上的捆绑包
R2024b3.12--python 3.12 --with "matlabengine==24.2.*"...-R2024b-py312.mcpb
R2024a3.11--python 3.11 --with "matlabengine==24.1.*"...-R2024a-py311.mcpb
R2023b3.11--python 3.11 --with "matlabengine==23.2.*"...-R2023b-py311.mcpb
R2023a3.10--python 3.10 --with "matlabengine==9.14.*"...-R2023a-py310.mcpb
R2022b3.10--python 3.10 --with "matlabengine==9.13.*"...-R2022b-py310.mcpb
无(仅独立运行模式)3.12--python 3.12...-standalone-py312.mcpb

只有 R2024b 这一行经过真实软件测试。其他版本的信息依据已发布的引擎包要求推导,未经测试;欢迎反馈。MATLAB R2022a 及更早版本无法用于连接 MATLAB 的会话,因为其引擎包需要的 Python 版本低于此服务支持的版本(独立运行模式仍可正常使用)。

无需安装 CarMaker 即可查看这些工具:uvx carmaker-mcp --mock。

2. 在 MCP 客户端中注册服务

每个客户端都需要相同的三项内容:命令 uvx、步骤 1 中的参数,以及通过环境变量设置的配置。通常需要设置以下配置:

  • CM_PROJECT:CarMaker 项目文件夹。
  • CM_MATLAB_INIT:如果你通常通过运行项目的 MATLAB 脚本开始工作(例如添加文件夹到路径并打开模型的脚本),请在此处填写脚本名称,以便 Agent 也运行它。
  • CM_MODEL:Agent 开始会话时打开的 Simulink 模型。可以是 MATLAB 路径上的名称,也可以是相对于项目 src_cm4sl 文件夹的路径。如果不填写,Agent 会显示找到的模型,并让你选择一个或自行选择。

选择下方的客户端。示例假设使用 MATLAB R2024b 和 Python 3.12;请将参数替换为 doctor 输出的内容。或者让服务为你写入配置项,并自动填入 shell 中设置的所有 CM_ 变量:

uvx carmaker-mcp config --client vscode     # or claude-code, claude-desktop, codex, antigravity, cursor
Claude Code

在终端中运行:

claude mcp add carmaker --env CM_PROJECT="C:\CM_Projects\my-project" --env CM_MODEL="MyModel" -- uvx --python 3.12 --with "matlabengine==24.2.*" carmaker-mcp

在 -- 前添加更多 --env NAME="value",即可添加其他配置。使用 --scope project 时,配置项会写入当前文件夹中的 .mcp.json,之后你可以编辑其中的 env 块;否则,需要先移除再重新添加(claude mcp remove carmaker)。运行 claude mcp list 可查看服务是否连接。

Claude Desktop

一键安装包。 从 最新版本 下载适用于你的 MATLAB 版本的 .mcpb 文件(步骤 1 中的表格列出了这些文件),然后将其拖到 设置 > 扩展 中。在对话框中填写项目文件夹、模型,以及项目使用的 MATLAB 设置脚本;之后可通过 配置 修改这些内容。安装包包含服务,但不包含 Python 环境:Claude Desktop 会在首次使用时通过 uv 创建该环境,因此必须安装 uv。

手动安装。 设置 > 开发者 > 编辑配置 会打开 claude_desktop_config.json。添加配置项并重启 Claude Desktop:

{
  "mcpServers": {
    "carmaker": {
      "command": "uvx",
      "args": ["--python", "3.12", "--with", "matlabengine==24.2.*", "carmaker-mcp"],
      "env": {
        "CM_PROJECT": "C:\\CM_Projects\\my-project",
        "CM_MODEL": "MyModel"
      }
    }
  }
}
Visual Studio Code 中的 GitHub Copilot

在工作区中创建 .vscode/mcp.json(要用于所有工作区,请在命令面板中选择 MCP: 打开用户配置):

{
  "servers": {
    "carmaker": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--python", "3.12", "--with", "matlabengine==24.2.*", "carmaker-mcp"],
      "env": {
        "CM_PROJECT": "C:\\CM_Projects\\my-project",
        "CM_MODEL": "MyModel"
      }
    }
  }
}

点击配置项上方的 启动,然后在 Agent 模式下使用 Copilot Chat。

Codex

在终端中运行:

codex mcp add carmaker --env CM_PROJECT="C:\CM_Projects\my-project" --env CM_MODEL="MyModel" -- uvx --python 3.12 --with "matlabengine==24.2.*" carmaker-mcp

或者编辑 C:\Users\<username>\.codex\config.toml:

[mcp_servers.carmaker]
command = "uvx"
args = ["--python", "3.12", "--with", "matlabengine==24.2.*", "carmaker-mcp"]
env_vars = ["WINDIR"]

[mcp_servers.carmaker.env]
CM_PROJECT = "C:\\CM_Projects\\my-project"
CM_MODEL = "MyModel"

Codex 启动服务时使用精简环境;env_vars = ["WINDIR"] 会传入 MATLAB 库所需的 Windows 变量。

Antigravity

在 Agent 面板中打开 ... 菜单,然后选择 MCP Servers > Manage MCP Servers > View raw config。在打开的 mcp_config.json 中添加配置项,保存后,在服务列表中点击 刷新:

{
  "mcpServers": {
    "carmaker": {
      "command": "uvx",
      "args": ["--python", "3.12", "--with", "matlabengine==24.2.*", "carmaker-mcp"],
      "env": {
        "CM_PROJECT": "C:\\CM_Projects\\my-project",
        "CM_MODEL": "MyModel"
      }
    }
  }
}
Cursor 和其他客户端

Cursor:在项目中创建 .cursor/mcp.json(或者在 ~/.cursor/mcp.json 中创建,以应用于所有项目),内容与 Antigravity 示例相同。大多数其他客户端也使用这种 mcpServers 格式。

在 JSON 和 TOML 中,Windows 路径需要使用双反斜杠或正斜杠。目前只有 Claude Code 实际用于此服务;其他配置项遵循各客户端文档中说明的格式。

3. 开始会话

例如,向 Agent 发送“启动 CarMaker 并运行制动测试运行”。如果 MATLAB、模型和 CarMaker GUI 尚未打开,Agent 会将它们打开,但绝不会关闭任何内容。

如果你更希望自行打开 MATLAB 和 CarMaker,请在每个 MATLAB 会话中运行一次此命令(或将其放入 startup.m),以便服务能够连接:

matlab.engine.shareEngine('cm_mcp')

独立运行时不需要这些设置。

与 MATLAB MCP 服务配合使用

对于 CarMaker for Simulink 工作,建议也连接 MathWorks 的 MATLAB MCP Core Server。它是可选的, 独立运行时不需要它。两个服务各司其职:

服务用途
carmaker-mcpCarMaker 侧:会话、测试运行、运行控制、结果和项目数据,以及带有更改日志和撤销功能的控制器参数
MATLAB MCP serverMATLAB 侧:编写、检查和运行 MATLAB 代码(后处理脚本、绘图),以及查看 Simulink 模型

同时使用两者时,请注意:

  • 让两者使用同一个 MATLAB 会话(按照其 README 中的说明,将 MATLAB 服务设置为使用已打开的 MATLAB), 这样它们看到的模型和工作区才相同。开发期间就是这样配合使用的。
  • MATLAB 一次只能处理一项任务。模型编译或仿真运行期间,通过 MATLAB 服务发起的调用会等待。此服务的运行工具 正是围绕这一点设计的(采用有时限的等待,并重复等待)。
  • 使用此服务的工具启动和停止运行,以便它跟踪运行情况(结果文件、错误、存储模式)。
  • 通过 MATLAB 服务运行脚本可能会将 MATLAB 的工作文件夹移出 CarMaker 项目。这样一来,CarMaker for Simulink 会在下一次启动时停止,并询问项目目录。此服务会在加载或启动测试运行前将文件夹切回原位,并在结果中说明这一点。
  • 通过 MATLAB 服务进行的更改不会记录在此服务的更改日志中,cm_revert_all 也不会撤销这些更改。
  • 如果安装了多个 MATLAB 发行版,请确保 MATLAB 服务使用 CarMaker 所用的发行版(carmaker-mcp doctor 会显示其名称)。 使用更新发行版启动的 MATLAB 服务无法看到你的模型或 CarMaker 会话。

在同一个 CarMaker 上进行多个对话。 每个客户端和对话都会启动各自的服务,而它们操作的是同一个 MATLAB 和 CarMaker。某个对话运行参数研究期间,其他对话会拒绝加载、启动或停止任何内容,并说明当前正在运行的任务;cm_status 会将其显示为 study_running。参数研究之外则没有此类保护:两个对话同时启动单次运行时,会互相干扰。

设置

所有设置均为客户端入口中的环境变量,按上文的 CM_PROJECT 和 CM_MODEL 方式设置。

常用设置

变量默认值说明
CM_PROJECT从正在运行的 CarMaker GUI 读取CarMaker 项目文件夹。服务不会写入其他位置。要从头启动会话,必须设置此项
CM_MODEL无启动会话时要打开的 Simulink 模型
CM_MATLAB_INIT无项目自带的 MATLAB 设置脚本(位于 src_cm4sl 中,或使用完整路径),启动会话时运行一次。如果你通常会运行一个添加文件夹到路径并打开模型的脚本,请使用此项;否则模型可能无法编译
CM_POPUP_TIMEOUT未设置CarMaker 弹出窗口自动选择默认选项的等待秒数,避免问题阻塞运行。未设置时,弹出窗口会等待你点击。参见安全与隐私
CM_DISABLE无要关闭的工具组,以缩短模型的工具列表:standalone、study、matlab、movie
CM_ENABLE无要启用的可选工具:tcl(在 CarMaker GUI 中运行原始 Tcl)、experimental(添加和删除 Simulink 模块)

高级设置

变量默认值说明
CM_HOME最新版本的 C:\IPG\carmaker\win64-*CarMaker 安装文件夹
CM_MATLAB_EXECarMaker 支持的最新已安装 MATLAB 版本用于启动会话的 MATLAB 可执行文件
CM_MATLAB_DIR<project>/src_cm4slMATLAB 启动时所在的文件夹(其中包含 cmenv.m)
CM_MATLAB_SESSIONcm_mcpMATLAB 共享其引擎时使用的名称
CM_RESULT_DIRS无搜索结果文件时要额外查找的文件夹
CM_STATE_DIR%USERPROFILE%\.carmaker-mcp备份、变更日志和 server.log 的存放位置(绝不会放在项目目录中)。MATLAB 和 CarMaker 也必须能访问此文件夹,因此不能放在 AppData 下
CM_ENGINE_TIMEOUT30放弃 MATLAB 调用前等待的秒数
CM_LOG_LEVELINFOserver.log 的详细程度

工具

每个工具都会告知客户端它是只读、会更改状态还是具有破坏性,以便客户端在必要时请求确认。每个参数的说明见 docs/tools.md。

会话与运行

工具功能
cm_session_start启动 MATLAB、模型和 CarMaker GUI(仅启动尚未运行的部分)
cm_doctor检查设置,并说明如何修复问题
cm_status仿真状态、当前模型、项目文件夹
cm_load_testrun将测试运行加载到 CarMaker GUI 中
cm_start_sim, cm_stop_sim启动和停止仿真;默认情况下,运行会写入结果文件
cm_wait_end等待运行结束;返回结束状态、仿真时间、距离和结果文件
cm_live仿真运行期间读取各项量
cm_dva_write, cm_dva_release运行期间覆盖某项量(直接变量访问)
cm_log读取 CarMaker 的会话日志,例如在运行中止后查看
cm_popups, cm_popup_timeout查看 CarMaker GUI 的提问或报告,并让弹出窗口自行处理

结果

工具功能
cm_results_list最新的结果文件
cm_results_summary结果文件中各项量的首值、末值、最小值、最大值和平均值;搜索量名称
cm_results_read读取结果文件中的时间序列
cm_output_quantities, cm_output_quantities_edit查看运行会将哪些量写入结果文件,并添加或移除部分量
cm_movie_open, cm_movie_snapshot打开 IPGMovie 并获取 3D 视图截图:查看上次运行任意时刻的画面,或结果文件中的画面

项目数据与参数

工具功能
cm_list, cm_read列出并读取测试运行、车辆、驾驶员、轮胎及其他项目文件
cm_edit, cm_clone, cm_create更改项目文件中的键(仅修改编辑过的行)、复制文件或新建文件
cm_list_workspace_vars, cm_get_workspace_var, cm_set_workspace_varMATLAB 基础工作区和 Simulink 模型工作区(控制器参数通常位于其中)
cm_model_get, cm_model_set, cm_model_saveSimulink 模块和模型参数;保存模型
cm_model_logs_save运行后,将 Simulink 记录的数据(已记录信号、To Workspace 模块)以及两个工作区保存到 MAT 文件。cm_start_sim 和 cm_study_start 中的 save_logs 会自动为每次运行执行此操作
cm_study_start, cm_study_wait, cm_study_status, cm_study_cancel使用多个参数集运行一次测试运行并制成结果表格,不更改任何文件

独立运行(不使用 MATLAB)

工具功能
cm_standalone_launch启动独立的 CarMaker 进程并在其中运行测试
cm_standalone_status, cm_standalone_wait_end, cm_standalone_results跟踪运行并获取结果文件
cm_standalone_control, cm_standalone_dva_write暂停、继续或停止;覆盖某项量
cm_standalone_servers, cm_standalone_attach查找并连接已在运行的 CarMaker 程序
cm_standalone_close停止进程

历史记录

工具功能
cm_changelog本次会话所做的更改,包括旧值和新值
cm_revert_all撤销本次会话的所有更改
cm_restore从备份中还原先前会话的文件

该服务还提供资源(carmaker://guide、carmaker://status、carmaker://changelog、 carmaker://log)和三个提示词(run_and_summarise、compare_settings、undo_session)。

安全与隐私

此服务可以启动仿真,并直接编辑项目文件和正在运行的 Simulink 模型。请只将它连接到你信任的 Agent。

如何保护你的工作:

  • 每个文件在首次更改前都会备份,每次更改都会记录旧值,而 cm_revert_all 可以撤销会话中的更改。
  • 仅当仿真处于空闲状态时,才会在项目文件夹内写入文件。不会有工具删除项目文件。
  • 原始 Tcl 和 Simulink 结构编辑默认关闭,除非你通过 CM_ENABLE 启用。
  • 默认情况下,CarMaker 弹窗会等待你点击。如果设置了 CM_POPUP_TIMEOUT,遇到诸如“Vehicle not saved. All changes will be lost. OK to continue?” 的问题时,系统会采用默认选项作答,也就是在 CarMaker GUI 中丢弃未保存的更改。

运行时会在项目的 SimOutput 文件夹中写入结果文件和日志文件;撤销操作不会删除这些文件。

此服务不会收集遥测数据,也不会主动建立网络连接。它只与本机上的 MATLAB 和 CarMaker 通信。详情见: docs/safety.md。

故障排除

请先运行 uvx carmaker-mcp doctor:它会列出大多数设置问题及其解决方法。

症状原因和解决方法
“No shared MATLAB session”MATLAB 已关闭,或尚未共享其引擎。让 Agent 启动会话,或在 MATLAB 中运行 matlab.engine.shareEngine('cm_mcp')
安装 matlabengine 时 uvx 失败固定的版本必须与 MATLAB 发行版匹配,并且必须已安装该 MATLAB。请使用 doctor 输出的参数
“CarMaker ships no cmapi for Python 3.x”添加 --python 3.12(或消息中列出的其他版本)
工具调用在加载或启动时挂起CarMaker GUI 正在显示问题提示。请作答,或参见 CM_POPUP_TIMEOUT
独立运行时出现 “too many licenses in use”已打开且带有 CarMaker for Simulink 的 MATLAB 正占用许可证。请关闭该模型或 MATLAB
等待工具返回 finished: false这不是错误:每次调用的等待时间最长为 45 s,只需重复等待即可

更多信息:docs/troubleshooting.md。 服务自身的日志位于状态文件夹中的 server.log。

工作原理

  • 连接 MATLAB 的会话: 服务通过 MATLAB Engine for Python 连接到 MATLAB,并通过 CarMaker for Simulink 自带的 cmguicmd(GUI 的 Tcl / ScriptControl 接口)向 CarMaker GUI 发送命令。
  • 独立运行: 服务使用从 CarMaker 安装目录加载的 IPG Python API cmapi,启动并控制单独的 CarMaker 进程。
  • 项目文件由保留字节的 CarMaker infofile 格式编辑器修改,结果则由用于 .erg 文件的 NumPy 读取器读取(并与 MATLAB 的 cmread 进行过核对)。

本项目不捆绑或再分发 IPG 或 MathWorks 的任何内容。

文档与贡献

相关项目:pycarmaker 与独立 CarMaker 程序的命令端口通信。本项目还支持 CarMaker for Simulink,使用 IPG 自有接口,且与其没有共享代码。

许可证

MIT,详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。