项目简介
'1C Metacode MCP 服务器'是一个基于MCP协议构建的后端服务,专注于解析并存储1C企业级应用(如1C:Бухгалтерия)的配置元数据和源代码到Neo4j图数据库中。它通过提供标准化的MCP工具接口,使得大型语言模型(LLM)或其他MCP客户端能够以自然语言或结构化查询的方式访问、理解和分析1C配置的复杂结构、业务逻辑和代码实现。
主要功能点
- 1C元数据图谱构建: 将1C配置的所有元数据(如对象、属性、表单、事件、模块、角色权限、预定义值等)解析并加载到Neo4j图数据库中,形成一个高度关联的知识图谱。
- 代码分析与调用图: 能够加载1C源代码(BSL模块),提取过程/函数签名、描述和函数体,并构建函数之间的调用关系图,支持代码的语义搜索。
- MCP工具接口: 提供'search_metadata'(按结构属性搜索元数据)、'search_metadata_by_description'(按语义描述搜索元数据)和'search_code'(按描述搜索代码并获取源码)等标准化工具,供LLM调用执行。
- 多项目支持: 支持同时加载和管理多个1C配置项目的数据,并在搜索时自动过滤。
- LLM与非LLM查询: 既支持LLM将自然语言请求转换为Cypher查询的代理模式,也支持基于模板的直接查询,并可混合使用。
安装步骤
- 环境准备: 确保已安装 Docker 和 Docker Compose,并有可用的端口 7474/7687 (Neo4j) 和 6001 (MCP)。
- 配置 '.env' 文件:
- 在项目根目录创建 '.env' 文件。
- 设置 'NEO4J_PASSWORD' 变量,例如 'NEO4J_PASSWORD=your_secure_password'。
- 配置 'docker-compose.yml' 文件:
- 将 'docker-compose.example.yml' 复制并重命名为 'docker-compose.yml'。
- 为 '1c-metacode-prj1' 服务(或您自定义的服务名称)设置 'PROJECT_NAME' 变量,例如 'PROJECT_NAME=my_1c_project'。
- 如果只有一个项目,可以删除 '1c-metacode-prj2' 服务。如需更多项目,请复制服务配置并修改主机端口(例如 '"6002:6001"')和 'PROJECT_NAME'。
- 放置1C数据:
- 在项目根目录创建 'data/prj1/metadata' 文件夹,并将1C配置报告(文本格式,仅一个 '.txt' 文件)放入其中。
- 在项目根目录创建 'data/prj1/code' 文件夹,并将1C配置导出为XML文件的内容放入其中。
- 对于其他项目(如 'prj2'),重复上述数据放置步骤。
- 启动服务: 在项目根目录执行 'docker compose up -d'。
服务器配置 (MCP客户端使用)
MCP客户端需要以下配置信息来连接到此MCP服务器:
{ "mcpServers": { "1c-metacode-server-example": { "url": "http://localhost:6001/mcp", "connection_id": "1c_metacode_service_001", "alwaysAllow": [], "type": "streamable-http", "timeout": 300 } } }
- 'url': MCP服务器的URL,根据您在 'docker-compose.yml' 中映射的端口修改(例如,如果映射到 '6001:6001',则为 'http://localhost:6001/mcp')。
- 'connection_id': 客户端自定义的连接ID,用于标识此MCP服务器。
- 'alwaysAllow': 允许客户端调用的MCP工具列表,空数组 '[]' 表示允许所有服务器声明的工具。
- 'type': 传输协议类型,支持 '"streamable-http"' (默认) 或 '"sse"'(如果 'MCP_USE_SSE=true')。
- 'timeout': 请求的超时时间,单位为秒。
基本使用方法
- 初次加载: 服务启动后,会自动创建Neo4j索引并加载1C元数据和代码。此过程对于大型配置可能耗时较长(例如,1C:Бухгалтерия约65分钟),请耐心等待。加载完成后内存占用会显著降低。
- 访问Neo4j: 可以通过 'http://localhost:7474' 访问Neo4j浏览器,使用 'neo4j' 作为用户名,您的 '.env' 文件中设置的密码登录,查看加载的图数据。
- 通过LLM客户端查询:
- 配置兼容MCP的LLM客户端(如支持OpenAI MCP的IDE或代理),指定上述服务器配置。
- 通过LLM客户端调用MCP服务器提供的工具,例如:
- 'search_metadata':查找特定的1C元数据对象。
- 'search_metadata_by_description':根据描述性文本搜索相关元数据。
- 'search_code':根据描述查找1C代码模块中的过程或函数,并获取其源码。
- LLM客户端将通过MCP协议与服务器通信,执行这些查询并获取结果。
- 数据更新: 如需完全重新加载项目数据,请在 'docker-compose.yml' 中设置 'FULL_METADATA_RELOAD=true',然后重启对应的容器:'docker compose restart 1c-metacode-prj1'。
信息
分类
AI与计算