使用说明

项目简介

WindTools MCP服务器是一个基于 Model Context Protocol (MCP) 构建的后端服务,专为代码助手应用设计。它利用 ChromaDB 向量数据库和 sentence-transformers 模型,为大型语言模型 (LLM) 提供代码库的上下文信息检索能力。通过语义代码搜索,WindTools MCP服务器能够帮助 LLM 更好地理解代码,从而提升代码生成、代码理解等任务的性能。

主要功能点

  • 语义代码搜索: 基于 sentence-transformers 模型对代码片段进行嵌入,实现高效的语义检索。
  • 代码库索引: 自动索引指定目录下的代码文件,支持多种编程语言。
  • 持久化存储: 使用 ChromaDB 持久化存储代码嵌入,保证检索效率和数据安全。
  • 目录浏览: 提供 'list_dir' 工具,方便 LLM 客户端浏览服务器端文件系统。
  • 后台初始化: 服务器启动时在后台异步初始化资源,减少启动延迟。
  • 可配置的环境变量: 通过环境变量灵活配置数据存储路径、模型路径等。

安装步骤

  1. 使用 pip 安装 (推荐):

    pip install windtools-mcp
  2. 从源代码安装:

    git clone https://github.com/ZahidGalea/windtools-mcp
    cd windtools-mcp
    pip install -e .

服务器配置

要将 WindTools MCP 服务器与 MCP 客户端(例如 Claude Desktop)集成,您需要在客户端的配置文件中添加服务器配置信息。以下是一个 'claude_desktop_config.json' 的配置示例,请注意,MCP客户端只需要配置启动命令和参数,无需修改代码

{
  "mcpServers": {
    "windtools": {
      "command": "uvx",
      "args": [
        "-p",
        "3.11",
        "-U",
        "windtools-mcp"
      ],
      "env": {
        "DATA_ROOT": "/path/to/your/windtools_data",
        "CHROMA_DB_FOLDER_NAME": "chromadb",
        "SENTENCE_TRANSFORMER_PATH": "jinaai/jina-embeddings-v2-base-code"
      }
    }
  }
}

参数注释:

  • '"windtools"': 服务器名称,客户端用此名称引用该服务器。
  • '"command": "uvx"': 启动服务器的命令,这里使用 'uvx' (假设已安装 uv 并使用虚拟环境), '-p 3.11' 指定使用 Python 3.11 版本(ChromaDB 在更高版本 Python 下可能存在兼容性问题),'-U windtools-mcp' 运行 'windtools-mcp' 包。
  • '"args": [...]"': 传递给 'uvx' 命令的参数,这里没有额外的参数。
  • '"env": {...}': 设置服务器运行时的环境变量:
    • '"DATA_ROOT": "/path/to/your/windtools_data"': 重要 数据根目录,ChromaDB 数据库和模型缓存将存储在此目录下。请将 '/path/to/your/windtools_data' 替换为您希望存储数据的实际绝对路径。
    • '"CHROMA_DB_FOLDER_NAME": "chromadb"': ChromaDB 数据库存储的文件夹名称,默认为 "chromadb"。
    • '"SENTENCE_TRANSFORMER_PATH": "jinaai/jina-embeddings-v2-base-code"': sentence-transformers 模型的路径,默认为 "jinaai/jina-embeddings-v2-base-code"。

请根据您的实际环境修改 'DATA_ROOT' 的值,确保 LLM 客户端能够正确启动并连接到 WindTools MCP 服务器。

基本使用方法

  1. 启动 MCP 服务器: 根据客户端配置启动 WindTools MCP 服务器。服务器启动后,会在后台初始化 ChromaDB 和 embedding 模型。

  2. 使用 'index_repository' 工具索引代码库: 通过 MCP 客户端调用 'index_repository' 工具,指定要索引的代码库目录。例如,要索引 '/path/to/your/codebase' 目录,可以调用如下工具:

    {
      "tool_call_id": "index-codebase-1",
      "tool_name": "index_repository",
      "tool_input": {
        "target_directories": ["/path/to/your/codebase"]
      }
    }

    请将 '/path/to/your/codebase' 替换为您实际的代码库目录的绝对路径。 首次索引可能需要一些时间,取决于代码库的大小。

  3. 使用 'codebase_search' 工具进行代码搜索: 索引完成后,可以使用 'codebase_search' 工具进行语义代码搜索。例如,搜索关于 "如何处理文件上传" 的代码,可以调用如下工具:

    {
      "tool_call_id": "code-search-1",
      "tool_name": "codebase_search",
      "tool_input": {
        "query": "how to handle file upload"
      }
    }

    服务器将返回与查询相关的代码片段及其相关信息。

  4. 使用 'list_dir' 工具浏览目录: 可以使用 'list_dir' 工具查看服务器端的文件目录结构。例如,查看 '/path/to/your/codebase' 目录的内容,可以调用如下工具:

    {
      "tool_call_id": "list-dir-1",
      "tool_name": "list_dir",
      "tool_input": {
        "directory_path": "/path/to/your/codebase"
      }
    }
  5. 使用 'get_initialization_status' 工具检查初始化状态: 可以使用 'get_initialization_status' 工具检查服务器后台初始化是否完成。

    {
      "tool_call_id": "check-init-1",
      "tool_name": "get_initialization_status",
      "tool_input": {}
    }

通过上述步骤,您可以利用 WindTools MCP 服务器为 LLM 客户端提供强大的代码上下文支持,提升代码助手应用的智能化水平。

信息

分类

开发者工具