代码语义搜索插件

LSP-MCP是一个结合AST解析和向量数据库的Claude Code插件,通过语义搜索提升代码上下文理解能力,支持多语言代码和文档关联分析。

  • by windschord
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 windschord/context-mcp

使用说明

LSP-MCP

Tree-sitter根据AST分析和矢量DB组合Claude Code面向Model Context Protocol (MCP)插件。

概要

LSP-MCP通过集成分析源代码和文档并提供语义搜索Claude Code中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。

主要特征

  • 减少标记:将上下文标记使用量减少30-40%
  • 高精度検索:混合搜索结果(BM25+Vector)
  • 隐私第一:默认情况下执行本地完成(无外部通信)
  • 多言语对应:TypeScript/JavaScript、Python、Go、Rust、Java、C/C++/Arduino
  • 文档集成: Markdown与源代码自动关联
  • 增量更新:自动检测和重新索引文件更改

主要机能

LSP-MCP是以下6个MCP提供工具:

1. index_project

索引整个项目。

  • 源代码的AST解析
  • Markdown文档结构分析
  • 矢量DB・保存到全文检索索引中
  • 实时查看进度

2. search_code

执行语义代码搜索。

  • 混合搜索(BM25+矢量搜索)
  • 使用文件类型语言过滤
  • 关联度评分结果
  • 代码片段显示

3. get_symbol

查找符号(函数类变量)的定义和引用。

  • 确定定义位置
  • 浏览参考位置
  • 提供范围信息
  • 显示类型信息

4. find_related_docs

查找与代码相关的文档。

  • 代码-文档之间的自动关联
  • 按关联度分数排序
  • 解析文件路径引用
  • 代码块相似度检测

5. get_index_status

检查索引状态。

  • 索引文件数
  • 最终更新日时
  • 索引大小
  • 错误信息

6. clear_index

清除索引。

  • 矢量DB清除
  • 清除全文索引
  • 删除元数据

安装

前提条件

  • Node.js 18.0以上
  • npm 9.0以上
  • Docker & Docker Compose(Milvus使用时、推奨)

npx使用(最简单,推荐)

GitHub您可以直接从存储库运行:

# GitHubリポジトリから直接実行
npx github:windschord/lsp-mcp --help
npx github:windschord/lsp-mcp --version
npx github:windschord/lsp-mcp

# または完全なURL形式
npx git+https://github.com/windschord/lsp-mcp.git

# 特定のブランチ・タグから実行
npx github:windschord/lsp-mcp#main
npx github:windschord/lsp-mcp#v0.1.0

本地安装(开发时)

git clone https://github.com/windschord/lsp-mcp.git
cd lsp-mcp
npm install
npm run build

快速启动

不需要配置文件Docker Compose启动和MCP只需设置即可立即开始使用。

1. Milvus standalone启动

# プロジェクトのルートディレクトリで実行
cd /path/to/your/project

# docker-compose.ymlをダウンロード(初回のみ)
curl -O https://raw.githubusercontent.com/windschord/lsp-mcp/main/docker-compose.yml

# Milvus standalone起動
docker-compose up -d

# 起動確認(milvus-standaloneが起動していることを確認)
docker ps

2. Claude Code的MCP添加设置

方法1:claude mcp add命令添加(推荐)

claude mcp add --transport stdio lsp-mcp \
  --env LSP_MCP_MODE=local \
  --env LSP_MCP_VECTOR_ADDRESS=localhost:19530 \
  --env LOG_LEVEL=INFO \
  -- npx github:windschord/lsp-mcp

设置后Claude Code中所述修改相应参数的值。

方法2:JSON直接编辑文件

Claude Code配置文件(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json)中添加以下内容:

{
  "mcpServers": {
    "lsp-mcp": {
      "command": "npx",
      "args": ["github:windschord/lsp-mcp"],
      "env": {
        "LSP_MCP_MODE": "local",
        "LSP_MCP_VECTOR_ADDRESS": "localhost:19530",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

设置后Claude Code中所述修改相应参数的值。

3.使用开始

Claude Code中所述的工具,调整墙的布局和几何形状

@lsp-mcp プロジェクトをインデックス化してください

以后,语义搜索可用:

@lsp-mcp 「認証機能」に関連するコードを検索してください
@lsp-mcp getUserById関数の定義と使用箇所を教えてください

(可选)根据设置文件定制

单击功能区上的.lsp-mcp.json创建:

# プロジェクトルートで設定ファイルを作成
cd /path/to/your/project

.lsp-mcp.json示例:

{
  "mode": "local",
  "vectorStore": {
    "backend": "milvus",
    "config": {
      "address": "localhost:19530"
    }
  },
  "embedding": {
    "provider": "transformers",
    "model": "Xenova/all-MiniLM-L6-v2"
  },
  "indexing": {
    "excludePatterns": [
      "node_modules/**",
      ".git/**",
      "dist/**"
    ],
    "languages": ["typescript", "python", "go"]
  }
}

在同时使用设定文件和环境变量时首选环境变量来修改标记元素的显示属性。

Claude Code使用方法

MCP设置详细信息

以下是各模式下的设置示例。说明了命令和设定文件编辑两种方法。

设置示例1:本地模式(仅推荐环境变量)

Docker Compose已启动Milvus standalone对较大场景进行渲染期间已观察到该故障。

claude mcp add命令:

claude mcp add --transport stdio lsp-mcp \
  --env LSP_MCP_MODE=local \
  --env LSP_MCP_VECTOR_ADDRESS=localhost:19530 \
  --env LOG_LEVEL=INFO \
  -- npx github:windschord/lsp-mcp

JSON文件编辑:

{
  "mcpServers": {
    "lsp-mcp": {
      "command": "npx",
      "args": ["github:windschord/lsp-mcp"],
      "env": {
        "LSP_MCP_MODE": "local",
        "LSP_MCP_VECTOR_ADDRESS": "localhost:19530",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

设置示例2:云模式(使用Zilliz Cloud)

claude mcp add命令:

claude mcp add --transport stdio lsp-mcp \
  --env LSP_MCP_MODE=cloud \
  --env LSP_MCP_VECTOR_BACKEND=zilliz \
  --env LSP_MCP_VECTOR_ADDRESS=your-instance.zilliz.com:19530 \
  --env LSP_MCP_VECTOR_TOKEN=your-zilliz-token \
  --env LSP_MCP_EMBEDDING_PROVIDER=openai \
  --env LSP_MCP_EMBEDDING_API_KEY=your-openai-api-key \
  --env LOG_LEVEL=INFO \
  -- npx github:windschord/lsp-mcp

JSON文件编辑:

{
  "mcpServers": {
    "lsp-mcp": {
      "command": "npx",
      "args": ["github:windschord/lsp-mcp"],
      "env": {
        "LSP_MCP_MODE": "cloud",
        "LSP_MCP_VECTOR_BACKEND": "zilliz",
        "LSP_MCP_VECTOR_ADDRESS": "your-instance.zilliz.com:19530",
        "LSP_MCP_VECTOR_TOKEN": "your-zilliz-token",
        "LSP_MCP_EMBEDDING_PROVIDER": "openai",
        "LSP_MCP_EMBEDDING_API_KEY": "your-openai-api-key",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

设置例3:本地开发时

克隆并开发存储库时的设置。

claude mcp add命令:

claude mcp add --transport stdio lsp-mcp \
  --env LSP_MCP_MODE=local \
  --env LOG_LEVEL=DEBUG \
  -- node /path/to/lsp_mcp/bin/lsp-mcp.js

JSON文件编辑:

{
  "mcpServers": {
    "lsp-mcp": {
      "command": "node",
      "args": ["/path/to/lsp_mcp/bin/lsp-mcp.js"],
      "env": {
        "LSP_MCP_MODE": "local",
        "LOG_LEVEL": "DEBUG"
      }
    }
  }
}

环境变量引用

|环境变量|说明|默认值|例| |---------|------|------------|-----| | LSP_MCP_MODE 动作模式 local | local, cloud | | LSP_MCP_VECTOR_BACKEND _矢量DB | milvus | milvus, zilliz | | LSP_MCP_VECTOR_ADDRESS _矢量DB地址| localhost:19530 | localhost:19530 | | LSP_MCP_VECTOR_TOKEN _矢量DB认证令牌|无|Zilliz Cloud令牌| | LSP_MCP_EMBEDDING_PROVIDER 嵌入供应商 transformers | transformers, openai, voyageai | | LSP_MCP_EMBEDDING_API_KEY 嵌入API键|无|OpenAI API关键字 | LOG_LEVEL 日志级别 INFO | DEBUG, INFO, WARN, ERROR |

详情环境变量引用来修改标记元素的显示属性。

确认设置

# 追加されたMCPサーバーを確認
claude mcp list

# 特定のサーバーの詳細を確認
claude mcp show lsp-mcp

# 設定ファイルを直接確認(macOS)
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json

设定后、Claude Code重新启动来修改标记元素的显示属性。

设定

有关详细设置方法,请参阅以下文档:

设定例

本地模式

{
  "mode": "local",
  "vectorStore": {
    "backend": "milvus",
    "config": {
      "address": "localhost:19530"
    }
  },
  "embedding": {
    "provider": "transformers",
    "model": "Xenova/all-MiniLM-L6-v2"
  }
}

云模式(OpenAI+Zilliz)

{
  "mode": "cloud",
  "vectorStore": {
    "backend": "zilliz",
    "config": {
      "address": "your-instance.zilliz.com:19530",
      "token": "${ZILLIZ_TOKEN}"
    }
  },
  "embedding": {
    "provider": "openai",
    "model": "text-embedding-3-small",
    "apiKey": "${OPENAI_API_KEY}"
  }
}

项目状态

开发阶段完成情况

LSP-MCP啊完成阶段1-7中的所有任务是可以正式使用的状态。

  • 第1阶段:项目设置和MCP服务器基础(完成)
  • 第2阶段: AST分析和文档分析(完成)
  • 第3阶段:矢量DB集成和搜索功能(完成)
  • 第4阶段: Indexing Service和MCP工具实现(完成)
  • 第5阶段:增量更新和文件监视(完成)
  • 第6阶段:测试和文档化(完成)
  • 第7阶段:优化和发放准备(完成)

已安装功能

MCP工具(6个):

  • index_project:索引整个项目
  • search_code:语义代码搜索
  • get_symbol:符号定义引用搜索
  • find_related_docs:代码相关文档搜索
  • get_index_status:确认索引状态
  • clear_index:清除索引

对应言语(7言语):

  • Types/JavaScript、Python、Go、Rust、Java、C/C++、Arduino

矢量DB:

  • Milvus独立版(Docker Compose)
  • Zilliz Cloud(云)

嵌入式引擎:

  • Transformers.js(本地,默认)
  • OpenAI API(云)
  • VoyageAI API(云)

性能优化:

  • ParserPool: Tree-sitter重新使用解析器
  • QueryCache: LRU1000个高速缓存TTL 1时间)
  • 批处理嵌入
  • Promise并列处理

详细情报

有关详细信息,请参阅以下文档:

开発

构建

# TypeScriptコンパイル
npm run build

# ウォッチモード
npm run dev

测试

# 全テスト実行
npm test

# ウォッチモード
npm run test:watch

# カバレッジレポート
npm run test:coverage

性能测试

# 大規模サンプルプロジェクトの生成(初回のみ)
npm run perf:generate

# パフォーマンステスト実行
npm run test:performance

棉绒和格式

# Lint
npm run lint
npm run lint:fix

# Format
npm run format
npm run format:check

性能

基准目标

  • 索引:10000个文件/10分钟以内(本地模式)
  • 搜索响应: 2秒以内
  • 内存使用量: 2GB以内
  • 增量更新:1文件/100ms范围

详情性能报告来修改标记元素的显示属性。

对应言语

优先级:高(完整的树-sitter解析器)

  • Types/JavaScript
  • python
  • 去
  • 锈
  • Java
  • C/C++/Arduino

優先度: 中(将来対応予定)

  • 红宝石
  • PHP
  • C
  • 迅速
  • 科特林

体系结构

┌─────────────────┐
│   Claude Code   │
└────────┬────────┘
         │ MCP Protocol
         v
┌─────────────────┐
│  MCP Server     │
│  Layer          │
└────────┬────────┘
         │
    ┌────┴────┐
    v         v
┌────────┐ ┌────────┐
│Search  │ │Indexing│
│Service │ │Service │
└───┬────┘ └───┬────┘
    │          │
    v          v
┌────────────────┐
│  Hybrid Search │
│  (BM25+Vector) │
└────────────────┘
    │          │
    v          v
┌────────┐ ┌────────┐
│Vector  │ │Local   │
│DB      │ │Index   │
│(Milvus)│ │(SQLite)│
└────────┘ └────────┘

详情设计书来修改标记元素的显示属性。

隐私

LSP-MCP采用隐私优先设计:

  • 默认值为本地运行:无外部通信
  • 敏感文件自动排除: .env, credentials.json等
  • 暗号化: API关键点是OS保存到密钥链
  • 光入法:云模式需要明确选择

谢辞

本项目包括:Zilliz开发的克劳德上下文中选择另一种天花板类型。混合搜索的有效性MCP感谢您的集成方法。

许可证

MIT License - 详情许可证请参见文件。

分发

欢迎分享!请按照以下步骤操作:

  1. 分叉此存储库
  2. 创建特征分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 创建拉式请求

支持

链接