代码语义搜索服务

1C Code Search MCP是一个支持多配置的本地语义代码搜索服务器,适用于1C代码库,支持多种嵌入模型和向量引擎。

  • by rsyuzyov
  • Python
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 rsyuzyov/bsl-mcp

使用说明

1C代码搜索MCP

本地MCP服务器,用于代码库1C的语义搜索。它支持多种数据库、各种嵌入式模型和向量引擎。

关键能力

  • 多配置同时支持多个代码数据库(信息数据库)。
  • 灵活选择模型:支持任何与HuggingFace/ONNX兼容的型号(默认) cointegrated/rubert-tiny2).
  • 向量搜索:使用QDRANT、LANCEDB或Chromadb进行高效搜索。
  • Web接口:通过浏览器轻松管理数据库和设置。
  • MCP协议:与Claude、Cursor、Kiro和其他MCP客户端轻松集成。

安装

  1. 克隆存储库。
  2. 建立依赖关系:
python install.py

发射

python code-search.py

或

python -m code_search

服务器将在端口8000(默认)上运行。 打开 http://localhost:8000 在浏览器中设置数据库。

配置(config.yaml)

文件 config.yaml 第一次启动时自动创建。您可以手动或通过Web界面编辑它。

配置示例:

global:
  port: 8000
  check_interval: 300

ibs:
  - name: "trade"
    title: "Управление Торговлей"
    source_dir: "C:/Projects/Trade/src"
    index_dir: "./indices/trade"
    embedding_model: "cointegrated/rubert-tiny2"
    vector_db: "qdrant"

  - name: "erp"
    title: "1С:ERP"
    source_dir: "C:/Projects/ERP/src"
    index_dir: "./indices/erp"
    embedding_model: "intfloat/multilingual-e5-small"
    vector_db: "qdrant"

参数

全球的:

  • port:Web服务器端口。
  • check_interval:背景文件更改检查间隔(秒)。

IBS(信息库):

  • name:唯一数据库ID(拉丁语)。
  • title:人名。
  • source_dir:从卸载配置(XML文件)到目录的路径。
  • index_dir:存储向量索引的路径。
  • embedding_model:琥珀色模型的名称。
  • vector_db搜索结果(qdrant).

配置性能和设置

除了基本配置外 config.yaml,存在影响索引速度和资源消耗的内部参数。它们由代码中的常量指定。

文件 code_search/indexer/engine.py

  • BATCH_SIZE (默认) 500)

    • 存放处:文件开头的常量。
    • 这是什么:在写入向量数据库之前存储在内存中的片段数(chank)。
    • 影响:增加可能会稍微加快进程(减少数据库中的提交),但会增加RAM消耗。减少会节省内存。
  • READ_WORKERS (默认) 1)

    • 存放处:文件开头的常量。
    • 这是什么:用于读取文件和初始处理的线程数。
    • 影响:放大可以加速磁盘读取,但会增加CPU负载。因为生成向量也需要CPU,所以放置许多线程(大于2-4)通常是毫无意义的,因为神经网络将成为瓶颈。减少到1使系统更响应。
  • EMBED_BATCH_SIZE (默认) 64)

    • 存放处:文件开头的常量。
    • 这是什么:一次发送到神经网络的文本包的大小。
    • 影响对速度和记忆力有很大影响。放大可以加速工作(特别是GPU/AVX),但线性地“吃掉”内存。如果出现OOM(Out of Memory)错误,则缩小。

文件 code_search/config.py

  • CHUNK_SIZE (默认) 1024(d)和 CHUNK_OVERLAP (默认) 100)
    • 这是什么:字符中代码块的大小和它们之间的重叠。
    • 影响:定义代码是如何“切割”的。1024个字符~20-30行代码。如果你改变了,你必须重新索引一切从零。

支持的模型和引擎

琥珀色模型

服务器自动下载并将HuggingFace模型转换为ONNX模型。推荐:

  1. cointegrated/rubert-tiny2 (Default)-快速,轻,精度好。
  2. intfloat/multilingual-e5-small 高精度,多语言。
  3. ai-forever/sbert_large_nlu_ru -俄语的大模型。

矢量引擎

  • Qdrant (默认)-快速,本地工作,验证。
  • LanceDB 嵌入式数据库非常快,将数据存储在文件中。
  • 色度数据库 -流行的开源矢量数据库。

指定正确的值(qdrant, lancedb 或 chromadb在田野里 vector_db 在 config.yaml.

客户端连接(MCP)

服务器通过SSE(服务器发送事件)在MCP上运行,允许远程或通过网络连接。

连接URL: http://<ваш-сервер>:8000/sse

克劳德桌面版

文件 claude_desktop_config.json:

{
  "mcpServers": {
    "1c-rag": {
      "url": "http://localhost:8000/sse"
    }
  }
}

光标

  1. 转到 光标设置 > 特性 > 主控程序.
  2. 点击 添加新的MCP服务器.
  3. 类型: SSE.
  4. 网址: http://localhost:8000/sse

基洛/超级马文

文件 ~/.kiro/settings/mcp.json:

{
  "mcpServers": {
    "1c-rag": {
      "url": "http://localhost:8000/sse"
    }
  }
}

许可证

麻省理工学院