MCP 1C 的开发与适应,用于当前与代理的工作任务
开发源码: https://github.com/vladimir-kharin/1c_mcp
MCP 代理服务器用于 1C:Enterprise 这是一个连接AI代理(Claude, Cursor)和您的1C数据库的桥梁。通过自然语言获取元数据,分析配置结构,并生成代码!
想象一下,您有一个强大的AI助手,可以“对话”您的1C基础。这个代理服务器充当翻译器:它接收AI以它理解的语言(MCP协议)发出的请求,并将其转换成1C能理解的命令。
简单来说:
# 1. 克隆仓库
git clone https://github.com/your-repo/1c-mcp-server.git
cd 1c-mcp-server
# 2. 创建虚拟环境
python -m venv venv
# 3. 激活环境
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac
# 4. 安装依赖
pip install -r requirements.txt
# 配置环境变量
set MCP_ONEC_URL=http://localhost/base
set MCP_ONEC_USERNAME=admin
set MCP_ONEC_PASSWORD=password
# 启动服务器
python -m src.py_server stdio
# 创建配置文件
copy env.example .env
# 编辑.env(最少):
# MCP_ONEC_URL=http://localhost/base
# MCP_ONEC_USERNAME=admin
# MCP_ONEC_PASSWORD=password
# 启动服务器
python -m src.py_server http --port 8000
# 检查服务器健康状况
curl http://localhost:8000/health
# 预期响应:
{
"status": "healthy",
"onec_connection": "ok",
"auth": {"mode": "none"}
}
获取指定类型元数据对象的列表。
{
"name": "list_metadata_objects",
"arguments": {
"metaType": "Catalogs",
"nameMask": "Номенклатура",
"maxItems": 10
}
}
结果: 找到的对象列表及其名称和描述。
获取对象的详细结构(属性、表部分)。
{
"name": "get_metadata_structure",
"arguments": {
"metaType": "Catalogs",
"name": "Номенклатура"
}
}
结果: 包含数据类型的完整对象结构。
获取预定义项目的列表。
{
"name": "list_predefined_data",
"arguments": {
"metaType": "Catalogs",
"name": "Номенклатура",
"predefinedMask": "Услуга"
}
}
获取预定义项目的详细信息。
{
"name": "get_predefined_data",
"arguments": {
"metaType": "Catalogs",
"name": "Номенклатура",
"predefinedName": "Услуга"
}
}
| 参数 | 描述 | 默认值 | 是否必须 |
|---|---|---|---|
MCP_ONEC_URL | 1C基础的URL | - | ✅ |
MCP_ONEC_USERNAME | 用户名 | - | ✅ (无OAuth2)。 |
MCP_ONEC_PASSWORD 密码 | ✅ (无OAuth2)。 | ||
MCP_HOST 服务器主机。127.0.0.1 | ❌ | ||
MCP_PORT 服务器端口。8000 | ❌ | ||
MCP_AUTH_MODE | 授权模式 | none | ❌ |
# 开启OAuth2
MCP_AUTH_MODE=oauth2
MCP_PUBLIC_URL=http://your-server:8000
# 令牌超时
MCP_OAUTH2_CODE_TTL=120 # 授权码(秒)
MCP_OAUTH2_ACCESS_TTL=3600 # 访问令牌(秒)
MCP_OAUTH2_REFRESH_TTL=1209600 # 刷新令牌(14天)
/mcp/, /sse, /health, /info所有请求都由配置中的单一用户执行。
每个客户端都使用其1C凭据进行授权。
支持的流程:
┌─────────────────┐
│ MCP客户端 │ 🤖 Claude Desktop, Cursor
│ (stdio/HTTP) │
└────────┬────────┘
│ MCP协议
▼
┌────────────────────┐
│ Python代理 │ 🔄 转换MCP → JSON-RPC
│ - mcp_server │
│ - http_server │
│ - stdio_server │
│ - onec_client │
└────────┬───────────┘
│ JSON-RPC over HTTP
│ 🔐 基本认证(用户名:密码)
▼
┌────────────────────┐
│ 1C HTTP服务 │ 📡 /hs/mcp/rpc
│ (扩展) │
└────────────────────┘
# 启动自动测试
python testMCP_grok_plus_2.py
# 结果保存在testMCP.md中
MCP_ONEC_URL--log-level DEBUGMCP_AUTH_MODE=oauth2MCP_PUBLIC_URL我们欢迎您对项目做出贡献!
git checkout -b feature/amazing-featuregit commit -m '添加神奇功能'git push origin feature/amazing-featureMIT许可证 - 免费用于商业和个人项目。
开发源码: https://github.com/vladimir-kharin/1c_mcp
⭐ 如果项目有用,请在GitHub上点赞!
为1C开发者社区开发的 ❤️