项目简介

'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查询的代理模式,也支持基于模板的直接查询,并可混合使用。

安装步骤

  1. 环境准备: 确保已安装 Docker 和 Docker Compose,并有可用的端口 7474/7687 (Neo4j) 和 6001 (MCP)。
  2. 配置 '.env' 文件:
    • 在项目根目录创建 '.env' 文件。
    • 设置 'NEO4J_PASSWORD' 变量,例如 'NEO4J_PASSWORD=your_secure_password'。
  3. 配置 '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'。
  4. 放置1C数据:
    • 在项目根目录创建 'data/prj1/metadata' 文件夹,并将1C配置报告(文本格式,仅一个 '.txt' 文件)放入其中。
    • 在项目根目录创建 'data/prj1/code' 文件夹,并将1C配置导出为XML文件的内容放入其中。
    • 对于其他项目(如 'prj2'),重复上述数据放置步骤。
  5. 启动服务: 在项目根目录执行 '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': 请求的超时时间,单位为秒。

基本使用方法

  1. 初次加载: 服务启动后,会自动创建Neo4j索引并加载1C元数据和代码。此过程对于大型配置可能耗时较长(例如,1C:Бухгалтерия约65分钟),请耐心等待。加载完成后内存占用会显著降低。
  2. 访问Neo4j: 可以通过 'http://localhost:7474' 访问Neo4j浏览器,使用 'neo4j' 作为用户名,您的 '.env' 文件中设置的密码登录,查看加载的图数据。
  3. 通过LLM客户端查询:
    • 配置兼容MCP的LLM客户端(如支持OpenAI MCP的IDE或代理),指定上述服务器配置。
    • 通过LLM客户端调用MCP服务器提供的工具,例如:
      • 'search_metadata':查找特定的1C元数据对象。
      • 'search_metadata_by_description':根据描述性文本搜索相关元数据。
      • 'search_code':根据描述查找1C代码模块中的过程或函数,并获取其源码。
    • LLM客户端将通过MCP协议与服务器通信,执行这些查询并获取结果。
  4. 数据更新: 如需完全重新加载项目数据,请在 'docker-compose.yml' 中设置 'FULL_METADATA_RELOAD=true',然后重启对应的容器:'docker compose restart 1c-metacode-prj1'。

信息

分类

AI与计算