关于 X4CodeSense
X4CodeSense 为编写 X4: Foundations AI 脚本和 Mission Director 脚本的 Agent 提供 MCP 服务。它读取游戏、DLC 和扩展数据,用于检查脚本及查询架构、表达式、定义和文本;工具不会写入文件。
主要功能
- 01脚本检查及快速修复
- 02架构元素与属性说明
- 03表达式类型和属性查询
- 04搜索脚本、提示和库
- 05查找定义与引用
- 06查询游戏文本和悬停信息
适用场景
- 01检查修改后的脚本错误
- 02编写 XML 前查看架构要求
- 03解析表达式属性和类型
- 04查找提示或文本的定义位置
MCP 相关
向 MCP 客户端提供只读工具,以检查 X4: Foundations 游戏、DLC 和扩展文件。可通过标准输入/输出运行,也可在本机提供 Streamable HTTP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y x4-script-mcpX4_GAMEThe installed game, the folder of X4.exe; its files are read from the catalogs.X4_UNPACKEDThe extracted game files, the folder holding libraries, md and aiscripts; used instead of X4_GAME.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
9收录的工具列表 · 更新于 4 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| text | string | 否 | 要检查的文本,而不是 paths 中某个文件磁盘上的内容;即将写入该文件的内容。 |
| paths | array | 是 | 文件和文件夹。文件夹的检查方式与 x4-script-check 相同:检查其中及下一层的 md、aiscripts 和 libraries 文件夹,即一个扩展或扩展文件夹。相对路径以服务器的工作文件夹为基准。 |
| severity | enum | 否 | 要报告的最低严重级别:error、warning、info 或 hint(默认值为 all)。error | warning | info | hint |
详细介绍
x4-script-mcp
用于 X4: Foundations 脚本(AI 脚本和 Mission Director 脚本)的 MCP 服务,基于 x4-script-core 构建。它为编写脚本的 AI Agent 提供 X4CodeSense VS Code 扩展从游戏自身文件中获取的信息:检查及其快速修复、架构中的元素和属性、表达式的类型和属性,以及游戏、其 DLC 和扩展的脚本、线索和文本。它的工具只读取信息;文件由 Agent 写入。
X4CodeSense 扩展会附带此服务,并将其提供给 VS Code 的 Agent(Copilot 的 Agent 模式),用于其设置中指定的游戏文件和扩展,无需进行任何设置;其命令 X4CodeSense: Start MCP Server 会在 http://127.0.0.1:47400/mcp 上提供此服务,供其他 Agent 使用,其中包括 Copilot CLI 会话。其他 Agent 也可以通过 npm 启动此服务:
# Claude Code
claude mcp add x4 -- npx -y x4-script-mcp --game "C:\Games\X4 Foundations" --extensions C:\mods
{
"mcpServers": {
"x4": {
"command": "npx",
"args": ["-y", "x4-script-mcp", "--unpacked", "C:\\X4\\extracted", "--extensions", "C:\\mods"]
}
}
}
第二种是 Claude Desktop、Cursor 和其他需要此格式配置的客户端所用的配置。它需要 Node.js 22 或更高版本。它也收录在 MCP Registry 中,名称为 io.github.chemodun/x4-script-mcp;VS Code 的 MCP 服务库等会读取此目录。安装 X4CodeSense 扩展后,无需从该目录添加此服务,否则会运行第二个副本。
Agent 会使用告知它们的工具:例如,在 Agent 的指令(CLAUDE.md、.github/copilot-instructions.md、AGENTS.md)中说明,写入元素或表达式之前先调用 describe_element 和 expression_type,而不是搜索游戏的 .xsd 文件和 scriptproperties.xml;每次更改脚本后都运行 check。每次调用都会记录到标准错误输出中,客户端会将其显示为服务日志:包括工具、参数、时间和答案大小。
选项:
--game <folder>- 已安装游戏所在的文件夹,即包含X4.exe的文件夹。游戏及其 DLC 的文件会直接从所在目录的目录清单中读取,不会解压。未指定--unpacked时使用此选项。即使同时指定了--unpacked,也会从此处读取已安装且扩展依赖或要修补的模组,以供修补使用;已打包的模组则从其目录清单中读取。--installed-dependencies- 与--game搭配使用时,扩展所依赖的已安装模组会作为整体计入:其提示、脚本和文本都会被解析。--unpacked <folder>- 解压后的原版游戏文件所在的文件夹,包含libraries、md、aiscripts和t。- 未指定
--game和--unpacked时,会使用X4_UNPACKED环境变量指定的解压文件;否则使用X4_GAME指定的已安装游戏。任一命令行选项优先于这两个环境变量。 --extensions <folder>- 一个扩展,或包含多个扩展的文件夹:包括 Agent 编写的扩展及其引用的扩展。除了游戏文件,还会读取这些扩展的脚本和文本。可多次指定;未指定时使用当前文件夹。--language <number>- 显示文本所用的语言,默认为44(英语);游戏的libraries/languages.xml列出了语言编号。--no-structure- 仅报告未知元素、属性和值,缺少的必需属性,以及元素内的文本;不检查子元素的顺序和完整性。--no-type-guesses- 仅根据脚本和架构声明的内容推断变量类型,不根据操作的名称和文档进行猜测(例如,create_ship表示船只)。--library-patch-unknown-elements <severity>- 当库文件的补丁引入其架构未声明的元素时,设置该元素的严重级别:error、warning(默认)或info。库架构落后于文件:每个 DLC 都会在模块的<category>中添加<extension>,但没有架构声明这一元素。--port <number>- 为接收 URL 的 Agent 提供 Streamable HTTP 服务,地址为http://127.0.0.1:<port>/mcp,而不使用标准输入和输出;0会选择一个空闲端口。此时会一次性读取游戏文件,所有客户端共享这些文件。仅服务于本机上的客户端:指定其他主机的请求,或来自其他站点网页的请求,都会被拒绝。端口已被占用时,程序会以退出代码 1 结束。-h、--help- 显示用法。
游戏文件会在首次调用时读取,耗时数秒。扩展文件会受到监视:Agent 新建、修改或删除脚本或文本文件后,会在下次调用前重新读取;调用中指定的文件则始终按磁盘上的当前内容读取。添加扩展或修改 content.xml 后,所有文件都会重新读取。
工具
行和列从 1 开始计数;列以 UTF-16 代码单元为单位,与编辑器的计数方式一致。位置以 file、line、column、endLine、endColumn 表示,并附带所在行的 text;对于游戏或 DLC 的文件,还会附带 game: true,这类文件可能只存在于目录中。答案为 JSON;工具无法回答时会以错误形式说明原因。
check-paths:文件和文件夹;text:要检查的内容,用来替代paths中单个文件在磁盘上的内容;severity:要报告的问题的最低严重级别。检查文件夹的方式与 x4-script-check 相同:检查其中及下一层的md、aiscripts和libraries文件夹。返回检查器 JSON 格式的问题及其快速修复建议(互不重叠的编辑;preferred表示编辑器会自行应用的建议),以及问题数量。describe_element-name;script(md或aiscripts)或library(根据库文件名确定库的架构:jobs.xml对应libraries,unlocks);对于在不同位置以不同方式声明的元素,使用parent(param、actions);对于完整查询某个属性,使用attribute。返回元素文档、其属性及属性类型、是否必需、默认值、值是否为表达式,以及允许的值中的第一个(完整查询某个属性时返回全部允许值及其文档);还会返回该元素允许的子元素。对于架构不认识的名称,会返回相似名称。expression_type-expression(如player.ship.sector这样的关键字及其属性),或datatype(如ship);script;filter。返回每一步解析到的内容、类型和描述;结果的数据类型及其超类型,以及属性,格式为name → type,并注明这些类型派生出的属性数量。使用filter时,返回名称中包含该筛选词的属性,也包括派生类型的属性及其描述。变量在此处没有类型:变量之后的步骤会与所有数据类型的属性进行匹配。find-query、limit。按名称查找 Mission Director 脚本、AI 脚本、线索、库和中断库项:先匹配完整名称,再匹配以查询词开头的名称,最后匹配包含查询词的名称;含点号的查询会匹配限定名称,例如md.Setup.Start。definition、references-file、line、column。查找指定名称的定义位置,或在游戏、DLC 和扩展中引用该名称的所有位置,包括线索、脚本、库、标签、变量、订单和文本;定义查询还会搜索架构和scriptproperties.xml。hover-file、line、column。以 Markdown 格式返回编辑器在该位置悬停时显示的内容,以及覆盖范围:带文档的元素或属性、属性链中某一步的类型、变量的类型和设置位置、线索或脚本的定义位置,以及游戏中显示的{page, id}文本。也支持补丁中的内容,包括补丁引入的内容。text-page和id,或仅提供page以获取其文本,或提供search以查找包含其中所有词语的文本;language、limit。返回游戏中显示的文本、解析后的引用,以及文本与游戏显示不同时的原始写法,并注明其来源文件和可用语言。status- 游戏文件夹、扩展文件夹、已读取的脚本和文本数量,以及读取时遇到的问题。
属于 X4CodeSense 的一部分。Apache License 2.0。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。