内容
# 1C MCP 工具包
1C:Enterprise 开发的公共单体仓库:平台 API 帮助,部分设计器转储/加载,COM 查询,转储文件搜索,评审检查清单,事件日志和 HTTP 调试。
**仓库:** [Adam-Rubinstein/1C_mcp](https://github.com/Adam-Rubinstein/1C_mcp) (前身为 `1C_mcp_bsl`)。
## 软件包
| 软件包 | 端口(SSE 默认) | 工具(摘要) |
|---------|--------------------|-----------------|
| `mcp-1c-platform` | 18760 | 通过传统 JAR 的平台 API(`search`、`info`、`getMember` 等) |
| `mcp-1c-dump` | 18761 | `dump_objects`、`dump_changes`、`dump_status` |
| `mcp-1c-load` | 18762 | `load_objects`(需要 `confirm=true`;存储锁定 → `objectsToCapture`) |
| `mcp-1c-com` | 18763 | `com_query`、`com_metadata_find`、`com_ping` |
| `mcp-1c-files` | 18764 | `files_search`、`files_find_usages`、`files_read` |
| `mcp-1c-review` | 18765 | YAML 检查清单 `review_check` |
| `mcp-1c-journal` | 18766 | 通过 COM 的事件日志 |
| `mcp-1c-debug` | 18767 | HTTP 调试(`dbgs` 协议) |
| `mcp-1c-bsl` | 18768 | BSL 语言服务器连接 |
默认部署端口使用 **1876x** (避免与其他工具在 876x 上的冲突)。
共享代码:`packages/shared/onec_mcp_shared/`。
旧 Kotlin 源代码:`legacy/kotlin-platform/` (构建生成平台 JAR)。预构建 JAR:`packages/mcp-1c-platform/runtime/1C_mcp_bsl.jar`。
## 快速入门(本地标准输入输出)
```bash
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
pip install pytest
copy .env.example .env # 编辑路径
python scripts/smoke_test.py
```
光标 `mcp.json` (标准输入输出示例,用于转储):
```json
{
"mcpServers": {
"1c-dump": {
"command": "python",
"args": ["C:/Tools/1C_mcp/scripts/run_server.py", "dump"],
"env": {
"MCP_TRANSPORT": "stdio",
"ONEC_BIN": "C:/Program Files/1cv8/8.3.27.1719/bin/1cv8.exe",
"ONEC_IB": "C:/path/to/InfoBase",
"ONEC_USER": "管理员",
"ONEC_PASSWORD": "",
"REPO_CF": "C:/path/to/repo/src/cf"
}
},
"1c-platform": {
"command": "java",
"args": [
"-Dfile.encoding=UTF-8",
"-jar",
"C:/Tools/1C_mcp/packages/mcp-1c-platform/runtime/1C_mcp_bsl.jar",
"--platform-path",
"C:/Program Files/1cv8/8.3.27.1719"
]
}
}
}
```
## 远程 HTTP(adam / 任意主机)
```bash
set MCP_TRANSPORT=sse
set MCP_HOST=0.0.0.0
set MCP_PORT=8761
set MCP_TOKEN=<长随机字符串>
python scripts/run_server.py dump
```
光标:
```json
{
"mcpServers": {
"1c-dump": {
"url": "http://YOUR_HOST:8761/sse",
"headers": {
"Authorization": "Bearer <相同令牌>"
}
}
}
}
```
机密信息保留在服务器(`.env`)和本地光标配置中 - **永远不要提交到 git**。
## 平台 JAR
完整工具(`search`、`info`、`getMember`、`getMembers`、`getConstructors`)在传统 JAR 中实现。使用 `java -jar …` 进行标准输入输出,或 `--mode sse --port 8760` 进行 HTTP。放置一个带有 Bearer 的反向代理,以便公开暴露(`scripts/sse_auth_proxy.py` 或 Caddy/nginx)。
## 安全
- **没有完整的 ERP 转储到仓库**,除非有明确的部分对象列表(或增量 `dump_changes` 针对 `ConfigDumpInfo.xml`)。
- **`load_objects` 需要 `confirm=true`。**
- 在配置存储/锁定错误时,工具返回 **`objectsToCapture`** - 永远不会是静默成功。
- 从返回的 `command` 数组中删除密码。
## 文档
- [docs/GUIDE.md](docs/GUIDE.md) - 操作员指南
- [docs/AGENT_SETUP.md](docs/AGENT_SETUP.md) - 代理商检查清单,用于配置工作站
- [mcp.json.example](mcp.json.example)
## 许可证
请参阅仓库许可证文件(旧项目条款适用于 JAR/Kotlin 代码)。