返回 MCP 目录
public公开dns本地运行

edt-mcp

EDT MCP Server是一个用于1C:EDT的MCP协议服务器插件,允许AI助手(如Claude、GitHub Copilot、Cursor等)与EDT工作空间进行交互,提供项目信息查询、错误报告、代码分析、元数据管理、应用程序调试、标签分组和可视化表单截图等功能。

article

README

References to Catalog.Items

Total references found: 122

  • Catalog.ItemKeys - Attributes.Item.Type - Type: types
  • Catalog.ItemKeys.Form.ChoiceForm.Form - Items.List.Item.Data path - Type: types
  • Catalog.Items - Attributes.PackageUnit.Choice parameter links - Ref
  • Catalog.Items.Form.ItemForm.Form - Items.GroupTop.GroupMainAttributes.Code.Data path - Type: types
  • CommonAttribute.Author - Content - metadata
  • Configuration - Catalogs - catalogs
  • DefinedType.typeItem - Type - Type: types
  • EventSubscription.BeforeWrite_CatalogsLockDataModification - Source - Type: types
  • Role.FullAccess.Rights - Role rights - object
  • Subsystem.Settings.Subsystem.Items - Content - content

BSL Modules

  • CommonModules/GetItemInfo/Module.bsl [Line 199; Line 369; Line 520]
  • Catalogs/Items/Forms/ListForm/Module.bsl [Line 18; Line 19]

**包含的引用类型:**
- **元数据引用** - 属性、表单项、命令参数、类型描述
- **类型使用** - 定义类型、特征类型图表、类型组合
- **公共属性** - 包含在公共属性内容中的对象
- **事件订阅** - 订阅的源对象
- **角色** - 具有角色权限的对象
- **子系统** - 子系统内容
- **BSL 代码** - BSL 模块中的引用及行号

> **注意**:`find_references` 仅支持顶级元数据对象(例如 `Catalog.DataAreas`,`CommonModule.Saas`)。传递子对象 FQN(如 `Catalog.DataAreas.Attribute.DataAreaStatus`)将返回描述性错误,表明不支持子对象。使用 `rename_metadata_object` 或 `delete_metadata_object` 处理属性和嵌套对象。

### 元数据重构工具

#### 重命名元数据对象工具
**`rename_metadata_object`** - 重命名元数据对象或属性,并提供全面的重构支持。BSL 代码、表单和元数据中的所有引用将自动更新。

**工作流程:**
1. 不带 `confirm` 参数调用以预览所有更改点
2. 查看更改点索引,并可选择使用 `disableIndices` 参数跳过某些更改点
3. 带 `confirm = true` 参数调用以应用更改

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `objectFqn` | 是 | 要重命名的对象的 FQN。顶级:`Catalog.Products`。嵌套:`Document.SalesOrder.Attribute.Amount` |
| `newName` | 是 | 对象的新名称 |
| `confirm` | 否 | `true` 执行重命名。默认 `false` = 仅预览 |
| `disableIndices` | 否 | 可选更改点的逗号分隔索引,用于跳过某些更改点(例如 `'2,3,5'`) |
| `maxResults` | 否 | 预览中要显示的最大更改点数(默认:20,`0` = 无限制) |

**FQN 中支持的子类型:** `Attribute`,`TabularSection`,`Dimension`,`Resource`

#### 删除元数据对象工具
**`delete_metadata_object`** - 删除元数据对象或属性。BSL 代码、表单和其他元数据中的引用将自动清理。

**工作流程:**
1. 不带 `confirm` 参数调用以预览受影响的引用和问题
2. 带 `confirm = true` 参数调用以应用删除

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `objectFqn` | 是 | 要删除的对象的 FQN(例如 `Catalog.Products`,`Document.SalesOrder.Attribute.Amount`) |
| `confirm` | 否 | `true` 执行删除。默认 `false` = 仅预览 |

#### 添加元数据属性工具
**`add_metadata_attribute`** - 通过 BM 写入事务向元数据对象添加新属性。属性将使用默认属性创建。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `parentFqn` | 是 | 父对象的 FQN(例如 `Catalog.Products`,`Document.SalesOrder`) |
| `attributeName` | 是 | 新属性的名称 |

**支持的父类型:** `Catalog`,`Document`,`ExchangePlan`,`ChartOfCharacteristicTypes`,`ChartOfAccounts`,`ChartOfCalculationTypes`,`BusinessProcess`,`Task`,`DataProcessor`,`Report`,`InformationRegister`,`AccumulationRegister`,`AccountingRegister`

### 标签管理工具

#### 获取标签工具
**`get_tags`** - 获取项目中定义的所有标签列表。标签是用户定义的用于组织元数据对象的标签。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |

**返回:** 带有标签名称、颜色、描述和分配对象数量的 Markdown 表格。

#### 按标签获取对象工具
**`get_objects_by_tags`** - 获取按标签过滤的元数据对象。返回具有任何指定标签的对象。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `tags` | 是 | 用于过滤的标签名称数组(例如 `["Important", "NeedsReview"]`) |
| `limit` | 否 | 每个标签的最大对象数(默认:100) |

**返回:** 每个标签的 Markdown 部分,包括:
- 标签颜色和描述
- 分配给标签的对象 FQN 表格
- 找到的总对象数摘要

### 应用程序管理工具

#### 获取应用程序工具
**`get_applications`** - 获取项目的应用程序(信息库)列表。返回应用程序 ID、名称、类型和当前更新状态。用于获取 `update_database` 和 `debug_launch` 工具的应用程序 ID。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |

#### 更新数据库工具
**`update_database`** - 更新数据库(信息库)配置。支持完整和增量更新模式。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `applicationId` | 是 | 从 `get_applications` 获取的应用程序 ID |
| `fullUpdate` | 否 | 如果为 true - 完全重新加载,如果为 false - 增量更新(默认:false) |
| `autoRestructure` | 否 | 如果需要,自动应用重构(默认:true) |

#### 调试启动工具
**`debug_launch`** - 以调试模式启动应用程序。启动前自动更新数据库,并查找现有的启动配置。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `applicationId` | 是 | 从 `get_applications` 获取的应用程序 ID |
| `updateBeforeLaunch` | 否 | 如果为 true - 启动前更新数据库(默认:true) |

**注意:**
- 首先需要在 EDT 中创建启动配置(运行 → 运行配置...)
- 如果不存在配置,则返回可用配置列表
- `updateBeforeLaunch = true` 如果数据库已经是最新的,则跳过更新

### BSL 代码分析工具

#### 列出模块工具
**`list_modules`** - 列出 EDT 项目中的所有 BSL 模块。可以按元数据类型或特定对象名称过滤。返回模块路径、类型和父对象。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `metadataType` | 否 | 过滤:`all`,`documents`,`catalogs`,`commonModules`,`informationRegisters`,`accumulationRegisters`,`reports`,`dataProcessors`,`exchangePlans`,`businessProcesses`,`tasks`,`constants`,`commonCommands`,`commonForms`,`webServices`,`httpServices`(默认:`all`) |
| `objectName` | 否 | 要列出模块的特定元数据对象名称(例如 `Products`) |
| `nameFilter` | 否 | 模块路径的子字符串过滤(不区分大小写) |
| `limit` | 否 | 最大结果数(默认:200,最大:1000) |

#### 获取模块结构工具
**`get_module_structure`** - 获取 BSL 模块的结构:所有过程/函数及其签名、行号、区域、执行上下文(`&AtServer`,`&AtClient`)、导出标志和参数。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `modulePath` | 是 | 相对于 `src/` 文件夹的路径(例如 `CommonModules/MyModule/Module.bsl`) |
| `includeVariables` | 否 | 包括模块级变量声明(默认:`false`) |
| `includeComments` | 否 | 包括方法的文档注释(默认:`false`) |

**返回:** Markdown 格式的内容,包括:
- 模块摘要(过程/函数计数、总行数)
- 区域列表及其行范围
- 方法表:类型、名称、导出、上下文、行号、参数、区域、描述(当 `includeComments = true` 时)
- 变量表:名称、导出标志、行号、区域(当 `includeVariables = true` 时)

#### 读取模块源代码工具
**`read_module_source`** - 从 EDT 项目中读取 BSL 模块源代码。返回带有行号的源代码。支持读取完整文件或特定行范围。每次调用最多 5000 行。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `modulePath` | 是 | 相对于 `src/` 文件夹的路径(例如 `CommonModules/MyModule/Module.bsl` 或 `Documents/SalesOrder/ObjectModule.bsl`) |
| `startLine` | 否 | 起始行号(从 1 开始,包含)。如果省略,则从开头读取 |
| `endLine` | 否 | 结束行号(从 1 开始,包含)。如果省略,则读取到末尾 |

#### 写入模块源代码工具
**`write_module_source`** - 将 BSL 源代码写入 1C 元数据对象模块。模式包括:搜索替换(基于内容的查找和替换,默认)、替换(替换整个文件)、追加(添加到末尾)。指定模块路径或对象名称 + 模块类型。写入前自动检查 BSL 语法。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `modulePath` | 否* | 相对于 `src/` 文件夹的路径(例如 `Documents/MyDoc/ObjectModule.bsl`)。替代 `objectName + moduleType` |
| `objectName` | 否* | 完整对象名称(例如 `Document.MyDoc`,`CommonModule.MyModule`)。支持俄文名称 |
| `moduleType` | 否 | 模块类型:`ObjectModule`(默认),`ManagerModule`,`FormModule`,`CommandModule`,`RecordSetModule` |
| `source` | 是 | 要写入的 BSL 源代码。对于 `searchReplace`:替换 `oldSource` 的新代码。对于 `replace`:完整的模块内容。对于 `append`:要添加的代码 |
| `oldSource` | 否** | 要查找并替换的现有代码(`searchReplace` 模式必需)。必须与文件中的一个位置完全匹配。作为你已读取当前文件内容的证明 |
| `mode` | 否 | 写入模式:`searchReplace`(默认),`replace`,`append` |
| `formName` | 否 | 表单名称,当 `moduleType = FormModule` 时必需 |
| `commandName` | 否 | 命令名称,当 `moduleType = CommandModule` 时必需 |
| `skipSyntaxCheck` | 否 | 跳过 BSL 语法验证(默认:`false`)。检查 `Procedure/EndProcedure`,`Function/EndFunction`,`If/EndIf`,`While/EndDo`,`For/EndDo`,`Try/EndTry` 是否平衡 |

*`modulePath` 或 `objectName` 必须提供一个。

**`searchReplace` 模式必需。

**注意:**
- **基于内容的编辑**:`searchReplace` 模式在文件中查找 `oldSource` 并将其替换为 `source`。如果 `oldSource` 未找到或匹配多个位置,操作将安全失败。这消除了多次编辑时行号漂移的问题
- 如果模块文件不存在,则在 `replace` 模式下创建新文件
- 保留 UTF - 8 BOM 编码
- 语法检查验证完整的结果文件,而不仅仅是插入的片段

#### 读取方法源代码工具
**`read_method_source`** - 按名称读取 BSL 模块中的特定过程/函数。返回带有行号和签名的方法源代码。如果未找到方法,则返回所有可用方法的列表。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `modulePath` | 是 | 相对于 `src/` 文件夹的路径(例如 `CommonModules/MyModule/Module.bsl`) |
| `methodName` | 是 | 要读取的过程/函数名称(不区分大小写) |

**返回:** 方法源代码,包括:
- 方法类型(过程/函数)、签名、导出标志
- 行范围和行数
- 带有行号的源代码

#### 代码搜索工具
**`search_in_code`** - 在项目的所有 BSL 模块中进行全文搜索。支持纯文本和正则表达式模式、大小写敏感、匹配上下文行和文件路径过滤。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `query` | 是 | 搜索字符串或正则表达式模式 |
| `caseSensitive` | 否 | 大小写敏感搜索(默认:`false`) |
| `isRegex` | 否 | 将查询视为正则表达式(默认:`false`) |
| `maxResults` | 否 | 返回带有上下文的最大匹配数(默认:100,最大:500) |
| `contextLines` | 否 | 每个匹配前后的上下文行数(默认:2,最大:5) |
| `fileMask` | 否 | 按模块路径子字符串过滤(例如 `CommonModules` 或 `Documents/SalesOrder`) |
| `outputMode` | 否 | 输出模式:`full`(带上下文的匹配,默认),`count`(仅总计数,快速),`files`(带匹配计数的文件列表,无上下文) |
| `metadataType` | 否 | 按元数据类型过滤:`documents`,`catalogs`,`commonModules`,`informationRegisters`,`accumulationRegisters`,`reports`,`dataProcessors`,`exchangePlans`,`businessProcesses`,`tasks`,`constants`,`commonCommands`,`commonForms`,`webServices`,`httpServices` |

#### 获取方法调用层次结构工具
**`get_method_call_hierarchy`** - 查找方法调用层次结构:谁调用此方法(调用者)或此方法调用什么(被调用者)。使用基于 BM 索引的语义 BSL 分析,而不是文本搜索。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `modulePath` | 是 | 相对于 `src/` 文件夹的路径(例如 `CommonModules/MyModule/Module.bsl`) |
| `methodName` | 是 | 过程/函数名称(不区分大小写) |
| `direction` | 否 | `callers`(谁调用此方法,默认)或 `callees`(此方法调用什么) |
| `limit` | 否 | 最大结果数(默认:100,最大:500) |

**注意:**
- 需要 EMF 模型(BSL AST) — 在文本回退模式下不起作用
- `callers` 使用 IReferenceFinder 在整个项目中搜索
- `callees` 遍历方法的 AST 以查找所有调用

### 转到定义工具
**`go_to_definition`** - 导航到符号的定义。将方法调用(如 `CommonModuleName.MethodName`)解析为实际定义,包括源代码、签名和位置。还可以解析元数据对象 FQN(如 `Catalog.Products`)。支持英文和俄文元数据类型名称。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `symbol` | 是 | 要查找定义的符号。格式:`ModuleName.MethodName`(公共模块中的方法),`MethodName`(上下文中的方法,需要 `modulePath`),`Catalog.Products`(元数据对象 FQN)。也支持俄文元数据类型名称 |
| `modulePath` | 否 | 相对于 `src/` 文件夹的上下文模块路径(例如 `Documents/SalesOrder/ObjectModule.bsl`)。当符号是未限定的方法名称时必需 |
| `includeSource` | 否 | 在响应中包含方法源代码(默认:`true`) |

**返回:** Markdown 格式的内容,包括:
- 方法签名、导出标志、行范围
- 带有行号的源代码(当 `includeSource = true` 时)
- 用于导航的文件路径
- 对于元数据对象:FQN、同义词、可用模块

### 获取符号信息工具
**`get_symbol_info`** - 获取 BSL 模块中特定位置的符号的类型和悬停信息。返回推断类型、签名和文档 — 与 EDT 鼠标悬停时显示的信息相同。有助于理解动态类型 BSL 代码中的变量类型。

**参数:**
| 参数 | 是否必需 | 描述 |
|-----------|----------|-------------|
| `projectName` | 是 | EDT 项目名称 |
| `filePath` | 是 | 相对于项目 `src/` 文件夹的 BSL 文件路径(例如 `CommonModules/MyModule/Module.bsl`) |
| `line` | 是 | 行号(从 1 开始) |
| `column` | 是 | 列号(从 1 开始) |

**返回:** 包含符号信息的 Markdown。使用多级方法:
1. **编辑器悬停**(最佳):返回推断类型、方法签名、文档 — 与 IDE 悬停工具提示相同
2. **EObject 分析**(回退):返回结构信息 — 符号类型、名称、签名、导出标志、行范围
3. **EMF 模型**(最后手段):基本节点信息,无需打开编辑器

**使用场景:**
- 确定变量的推断类型(BSL 是动态类型)
- 在调用位置获取方法签名和文档
- 检查通过点符号访问的对象的属性类型
- 理解平台方法参数类型

### 输出格式
- **Markdown 工具**:`list_projects`,`get_project_errors`,`get_bookmarks`,`get_tasks`,`get_problem_summary`,`get_check_description` - 以 `mimeType: text/markdown` 的嵌入式资源形式返回 Markdown
- **JSON 工具**:`get_configuration_properties`,`clean_project`,`revalidate_objects` - 以 `structuredContent` 形式返回 JSON
- **文本工具**:`get_edt_version` - 返回纯文本

</details>

### API 端点
| 端点 | 方法 | 描述 |
|----------|--------|-------------|
| `/mcp` | POST | MCP JSON - RPC(初始化、工具/列表、工具/调用) |
| `/mcp` | GET | 服务器信息 |
| `/health` | GET | 健康检查 |

### 元数据标签
使用自定义标签组织元数据对象,以便更轻松地导航和过滤。

#### 为什么使用标签?
标签有助于:
- 跨不同元数据类型对相关对象进行分组(例如,特定功能的所有对象)
- 在大型配置中快速查找对象
- 过滤导航器,专注于项目的特定区域
- 通过版本控制与团队共享对象组织

#### 入门
**为对象分配标签:**
1. 在导航器中右键单击任何元数据对象
2. 从上下文菜单中选择 **标签**
3. 勾选要分配的标签,或选择 **管理标签...** 创建新标签

![Tags Context Menu](img/tags-context-menu.png)

**管理标签:**
在管理标签对话框中,你可以:
- 使用自定义名称、颜色和描述创建新标签
- 编辑现有标签(名称、颜色、描述)
- 删除标签
- 查看项目的所有可用标签

![Manage Tags Dialog](img/tags-manage-dialog.png)

#### 在导航器中查看标签
带标签的对象在导航器树中以标签作为后缀显示:

![Navigator with Tags](img/tags-navigator.png)

**启用/禁用标签显示:**
- **窗口 → 首选项 → 常规 → 外观 → 标签装饰**
- 切换 “元数据标签装饰器”

#### 按标签过滤导航器
过滤整个导航器,仅显示具有特定标签的对象:
1. 点击导航器工具栏中的标签过滤按钮(或右键单击 → **标签 → 按标签过滤...**)
2. 选择一个或多个标签
3. 点击 **设置** 应用过滤

![Filter by Tag Dialog](img/tags-filter-dialog.png)

导航器将仅显示:
- 具有任何所选标签的对象
- 包含匹配对象的父文件夹

**清除过滤:** 点击对话框中的 **关闭** 或再次使用工具栏按钮。

#### 标签的键盘快捷键
使用键盘快捷键快速切换所选对象的标签:

| 快捷键 | 操作 |
|----------|--------|
| **Ctrl + Alt + 1** | 切换第 1 个标签 |
| **Ctrl + Alt + 2** | 切换第 2 个标签 |
| **...** | ... |
| **Ctrl + Alt + 9** | 切换第 9 个标签 |
| **Ctrl + Alt + 0** | 切换第 10 个标签 |

**特性:**
- 适用于多个所选对象
- 支持跨项目选择(每个对象使用其自己项目的标签)
- 再次按下相同的快捷键可移除标签(切换行为)
- 标签顺序可在管理标签对话框中配置(上移/下移按钮)

**自定义快捷键:** 窗口 → 首选项 → 常规 → 键 → 搜索 “切换标签”

#### 过滤未标记的对象
查找尚未标记的元数据对象:
1. 打开按标签过滤对话框(工具栏按钮或标签 → 按标签过滤...)
2. 勾选 **“仅显示未标记的对象”** 复选框
3. 点击 **设置**

导航器将仅显示没有分配标签的对象,便于识别需要分类的对象。

#### 多选标签分配
一次为多个对象分配或移除标签:
1. 在导航器中选择多个对象(Ctrl + 点击或 Shift + 点击)
2. 右键单击 → **标签**
3. 选择一个标签以切换所有所选对象的标签状态

**行为:**
- ✓ 勾选 = 所有所选对象都有此标签
- ☐ 未勾选 = 没有所选对象有此标签
- 当对象来自不同项目时,只有来自具有该标签的项目的对象会受到影响

#### 标签过滤视图
对于跨多个项目的高级过滤,使用标签过滤视图:

**窗口 → 显示视图 → 其他 → MCP 服务器 → 标签过滤**

此视图提供:
- **左面板**:从工作区的所有项目中选择标签
- **右面板**:查看所有匹配对象,并支持搜索和导航
- **搜索**:使用正则表达式按对象名称过滤结果
- **双击**:直接导航到对象

#### 标签存储位置
标签存储在每个项目的 `.settings/metadata-tags.yaml` 文件中。此文件:
- 可以提交到版本控制(对 VCS 友好)
- 在重命名或删除对象时自动更新
- 使用 YAML 格式,易于阅读

**示例:**
```yaml
assignments:
  CommonModule.Utils:
    - Utils
  Document.SalesOrder:
    - Important
    - Sales
tags:
  - color: '#FF0000'
    description: Critical business logic
    name: Important
  - color: '#00FF00'
    description: ''
    name: Utils
  - color: '#0066FF'
    description: Sales department documents
    name: Sales

元数据组

使用自定义组组织导航器树,为元数据对象创建逻辑文件夹结构。

为什么使用组?

组有助于:

  • 在导航器树中创建自定义文件夹层次结构
  • 按业务领域、功能或任何逻辑结构组织对象
  • 通过嵌套组更快地导航大型配置
  • 将分组对象与未分组对象分开

入门

创建组:

  1. 在导航器中右键单击任何元数据文件夹(例如,目录、公共模块)
  2. 从上下文菜单中选择 新建组...
  3. 输入组名称和可选描述
  4. 点击 确定 创建组

New Group Context Menu

创建组对话框:

New Group Dialog

将对象添加到组:

  1. 在导航器中右键单击任何元数据对象
  2. 选择 添加到组...
  3. 从列表中选择目标组

Add to Group Menu

从组中移除对象:

  1. 在组内右键单击对象
  2. 选择 从组中移除

在导航器中查看组

分组对象在导航器树中显示在其组文件夹内:

Navigator with Groups - Common Modules

Navigator with Groups - Catalogs

关键特性:

  • 组是针对每个元数据集合(目录、公共模块、文档等)创建的
  • 组内的对象仍然可以通过标准 EDT 导航访问
  • 未分组的对象显示在列表末尾

组操作

| 操作 | 操作方法 | |--------|--------------| | 创建组 | 右键单击文件夹 → 新建组... | | 将对象添加到组 | 右键单击对象 → 添加到组... | | 从组中移除 | 右键单击组内的对象 → 从组中移除 | | 复制组名称 | 选择组 → Ctrl + C | | 删除组 | 右键单击组 → 删除 | | 重命名组 | 右键单击组 → 重命名... |

组存储位置

组存储在每个项目的 .settings/groups.yaml 文件中。此文件:

  • 可以提交到版本控制(对 VCS 友好)
  • 使用 YAML 格式,易于阅读
  • 在重命名或删除对象时自动更新

示例:

groups:
- name: "Products & Inventory"
  description: "Product and inventory catalogs"
  path: Catalog
  order: 0
  children:
    - Catalog.ItemKeys
    - Catalog.Items
    - Catalog.ItemSegments
    - Catalog.Units
    - Catalog.UnitsOfMeasurement
- name: "Organization"
  description: "Organization structure catalogs"
  path: Catalog
  order: 1
  children:
    - Catalog.Companies
    - Catalog.Stores
- name: "Core Functions"
  description: "Core shared functions used across the application"
  path: CommonModule
  order: 0
  children:
    - CommonModule.CommonFunctionsClient
    - CommonModule.CommonFunctionsServer
    - CommonModule.CommonFunctionsClientServer
- name: "Localization"
  description: "Multi-language support modules"
  path: CommonModule
  order: 1
  children:
    - CommonModule.Localization
    - CommonModule.LocalizationClient
    - CommonModule.LocalizationServer
    - CommonModule.LocalizationReuse

🔧 技术细节

状态栏控件

MCP 服务器状态栏通过交互式控件实时显示执行状态。

状态指示器:

  • 🟢 绿色 - 服务器运行,空闲
  • 🟡 黄色闪烁 - 工具正在执行
  • 灰色 - 服务器停止

Status Bar Menu

用户信号控件 - 在工具执行期间向 AI 代理发送信号

工具执行期间:

  • 显示工具名称(例如 MCP: update_database
  • 以 MM:SS 格式显示已用时间
  • 点击访问控制菜单

当工具正在执行时,你可以向 AI 代理发送信号以中断 MCP 调用:

| 按钮 | 描述 | 使用场景 | |--------|-------------|-------------| | 取消操作 | 停止 MCP 调用并通知代理 | 当你想取消长时间运行的操作时 | | 重试 | 告诉代理重试操作 | 当 EDT 出现错误且你想再次尝试时 | | 在后台继续 | 通知代理操作正在长时间运行 | 当你希望代理定期检查状态时 | | 咨询专家 | 停止并要求代理与你协商 | 当你需要提供指导时 | | 发送自定义消息... | 向代理发送自定义消息 | 用于任何自定义指令 |

工作原理:

  1. 点击按钮时,会出现一个对话框,显示将发送给代理的消息
  2. 你可以在发送前编辑消息
  3. MCP 调用立即中断,并将控制权返回给代理
  4. EDT 操作在后台继续运行
  5. 代理收到如下响应:
USER SIGNAL: Your message here

Signal Type: CANCEL
Tool: update_database
Elapsed: 20s

Note: The EDT operation may still be running in background.
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端