返回市场
一核_MCP服务器自有

一核_MCP服务器自有

作者:AlexMiaWat7 星标更新:2025-11-04

项目介绍

1C_MCP_SERVER_OWN

MCP 1C 的开发与适应,用于当前与代理的工作任务

Python 1C MCP License: MIT

开发源码: https://github.com/vladimir-kharin/1c_mcp

MCP 代理服务器用于 1C:Enterprise 这是一个连接AI代理(Claude, Cursor)和您的1C数据库的桥梁。通过自然语言获取元数据,分析配置结构,并生成代码!

✨ 这是什么

想象一下,您有一个强大的AI助手,可以“对话”您的1C基础。这个代理服务器充当翻译器:它接收AI以它理解的语言(MCP协议)发出的请求,并将其转换成1C能理解的命令。

简单来说:

  • 🤖 AI询问:“配置中有哪些目录?”
  • 🔄 代理将此JSON-RPC请求翻译给1C
  • 📊 1C回应目录列表
  • ✅ 代理将答案翻译回给AI

🎯 主要机会

  • 🔄 两种操作模式: stdio(适用于本地程序)和HTTP(适用于Web应用程序)
  • 🔐 安全性: OAuth2授权 - 每个用户在自己的凭据下工作
  • ⚡ 速度: 异步处理,支持多个同时用户
  • 🔧 通用性: 支持所有类型的MCP客户端
  • 📊 分析: 获取元数据、对象结构、预定义数据

📦 快速开始

⚡ 安装(2分钟)

# 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

🚀 第一次启动

选项A: stdio模式(适用于本地客户端)

# 配置环境变量
set MCP_ONEC_URL=http://localhost/base
set MCP_ONEC_USERNAME=admin
set MCP_ONEC_PASSWORD=password

# 启动服务器
python -m src.py_server stdio

选项B: HTTP模式(适用于Web客户端)

# 创建配置文件
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"}
}

📋 API 方法

🔍 list_metadata_objects

获取指定类型元数据对象的列表。

{
  "name": "list_metadata_objects",
  "arguments": {
    "metaType": "Catalogs",
    "nameMask": "Номенклатура",
    "maxItems": 10
  }
}

结果: 找到的对象列表及其名称和描述。

📋 get_metadata_structure

获取对象的详细结构(属性、表部分)。

{
  "name": "get_metadata_structure",
  "arguments": {
    "metaType": "Catalogs",
    "name": "Номенклатура"
  }
}

结果: 包含数据类型的完整对象结构。

🎯 list_predefined_data

获取预定义项目的列表。

{
  "name": "list_predefined_data",
  "arguments": {
    "metaType": "Catalogs",
    "name": "Номенклатура",
    "predefinedMask": "Услуга"
  }
}

📄 get_predefined_data

获取预定义项目的详细信息。

{
  "name": "get_predefined_data",
  "arguments": {
    "metaType": "Catalogs",
    "name": "Номенклатура",
    "predefinedName": "Услуга"
  }
}

⚙️ 配置

主要参数

参数描述默认值是否必须
MCP_ONEC_URL1C基础的URL-
MCP_ONEC_USERNAME用户名-✅ (无OAuth2)。
MCP_ONEC_PASSWORD 密码✅ (无OAuth2)。
MCP_HOST 服务器主机。127.0.0.1
MCP_PORT 服务器端口。8000
MCP_AUTH_MODE授权模式none

OAuth2 设置

# 开启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天)

🔧 操作模式

Studio模式

  • 💻 适用于本地MCP客户端(Claude Desktop, Cursor)
  • 📡 通过stdin/stdout通信
  • 🔒 日志输出到stderr

HTTP模式

  • 🌐 适用于Web应用和多个客户端
  • 📊 端点:/mcp/, /sse, /health, /info
  • 🔐 支持OAuth2授权

🔐 授权

无OAuth2(默认)

所有请求都由配置中的单一用户执行。

使用OAuth2

每个客户端都使用其1C凭据进行授权。

支持的流程:

  • 🔑 密码授予 - 直接传输用户名/密码
  • 🔄 授权码+PKCE - 标准授权流程

🏗️ 架构

┌─────────────────┐
│   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中

❓ 故障排除

🔌 "无法连接到1C"

  1. 检查MCP_ONEC_URL
  2. 确保1C HTTP服务已发布
  3. 检查您的凭据
  4. 启用DEBUG日志:--log-level DEBUG

🔐 "OAuth2授权不起作用"

  1. 安装MCP_AUTH_MODE=oauth2
  2. 检查MCP_PUBLIC_URL
  3. 对于密码授予:检查凭据
  4. 对于授权码:检查PKCE参数

🛠️ "MCP客户端看不到工具"

  1. 检查客户端配置
  2. 确保服务器正在运行
  3. 检查日志中的错误
  4. 对于stdio:检查环境变量

📚 文档

🤝 贡献

我们欢迎您对项目做出贡献!

  1. 🍴 分叉仓库
  2. 🌿 创建一个特性分支:git checkout -b feature/amazing-feature
  3. 💾 提交更改:git commit -m '添加神奇功能'
  4. 📤 推送到分支:git push origin feature/amazing-feature
  5. 🔄 创建Pull Request

📄 许可证

MIT许可证 - 免费用于商业和个人项目。

📞 联系方式


开发源码: https://github.com/vladimir-kharin/1c_mcp

如果项目有用,请在GitHub上点赞!

为1C开发者社区开发的 ❤️