语义代码搜索服务

一个使用嵌入技术索引代码仓库并提供智能搜索功能的语义代码搜索MCP服务器,与Amazon Q CLI无缝集成。

  • by Tarun097
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 tarun097/code-search-mcp

使用说明

代码搜索MCP服务器

语义代码搜索MCP服务器,使用嵌入对代码存储库进行索引,并为Amazon Q CLI提供智能搜索功能。

特性

  • 语义搜索:按含义查找代码,而不仅仅是关键字
  • 关键字搜索:传统的基于文本的搜索
  • 多存储库支持:跨多个存储库进行索引和搜索
  • 基于块的索引:智能代码分块以获得更好的上下文
  • 文件类型感知:支持20多种编程语言
  • 实时集成:与Amazon Q CLI无缝协作

建筑

Code Repo → Indexer → ChromaDB → MCP Server → Amazon Q CLI

快速开始

1.设置环境

# Clone and setup
git clone <repository-url>
cd code-search-mcp

# Run quick setup
./quick_start.sh

2.为您的第一个存储库建立索引

# Activate environment
source venv/bin/activate

# Index a repository
python indexer.py --repo-path /path/to/your/repo --repo-name my-project

# Verify indexing
python indexer.py --list

3.启动MCP服务器

如果这是您第一次或清理后:

# Run quick setup to create virtual environment and install dependencies
./quick_start.sh

要启动服务器,请执行以下操作:

# Start the server (recommended)
./start_server_simple.sh

# Alternative startup script
./start_server.sh

手动启动(如果需要):

# Activate environment and start manually
source venv/bin/activate
python mcp_server.py

4.配置Amazon Q CLI

# Add MCP server to Q CLI
qchat mcp add --name code-search --command /path/to/code-search-mcp/venv/bin/python --args /path/to/code-search-mcp/mcp_server.py

# Verify configuration
qchat mcp list

库管理

为新存储库建立索引

python indexer.py --repo-path /path/to/repo --repo-name repo-name

例子:

python indexer.py --repo-path /home/user/projects/my-app --repo-name my-app

列出索引存储库

python indexer.py --list

查看存储库统计信息

# All repositories
python indexer.py --stats

# Specific repository
python indexer.py --stats --filter-repo my-app

测试搜索功能

# Test semantic search
python indexer.py --search "authentication logic"

# Test search in specific repository
python indexer.py --search "database connection" --filter-repo my-app

支持的文件类型

索引器自动处理这些文件类型:

编程语言:

  • python.py)
  • JavaScript/TypeScript(.js, .ts)
  • Java.java)
  • C.cs)
  • C/C++(.c, .cpp, .h)
  • 去吧(.go)
  • 生锈(.rs)
  • PHP(.php)
  • 红宝石(.rb)
  • Swift(.swift)
  • Kotlin(.kt)
  • Scala(.scala)

数据和配置:

  • JSON(.json)
  • YAML(.yaml, .yml)
  • XML(.xml)
  • SQL(.sql)

文档:

  • Markdown(.md)
  • HTML(.html)
  • CSS(.css)
  • 文本(.txt)

使用Amazon Q CLI

配置后,您可以向Amazon Q CLI提出以下问题:

代码发现

  • “在我的应用程序存储库中查找身份验证逻辑”
  • “显示数据库连接代码”
  • “用户验证在哪里实现?”
  • “查找处理文件上传的函数”

API文档

  • “GetUserById API做什么?”
  • “显示项目中的所有REST端点”
  • “查找错误处理模式”

架构理解

  • “应用程序是如何构建的?”
  • “显示服务层实现”
  • “查找依赖注入配置”

提供的MCP工具

工具 说明 参数
search_code_semantic 基于人工智能的语义搜索 query, repo_name, limit, min_similarity
search_code_keyword 传统关键字搜索 query, repo_name, limit
list_indexed_repos 列出所有索引存储库 无
repo_stats 获取存储库统计信息 repo_name (可选)

配置文件

  • q-cli-config.json:Amazon Q CLI MCP配置
  • chroma_db/repo_metadata.json:存储库元数据
  • requirements.txt:Python依赖关系

故障排除

Git克隆或清理后启动

如果您刚刚克隆了存储库或清理了环境:

  1. 运行快速设置:

    ./quick_start.sh
    
  2. 为您的存储库建立索引:

    source venv/bin/activate
    python indexer.py --repo-path /path/to/your/repo --repo-name repo-name
    
  3. 启动MCP服务器:

    ./start_server_simple.sh
    
  4. 配置Q CLI(如果之前没有这样做):

    qchat mcp add --name code-search --command $(pwd)/venv/bin/python --args $(pwd)/mcp_server.py
    

MCP服务器未加载

  1. 检查服务器是否正在运行: ps aux | grep mcp_server
  2. 验证Q CLI配置: qchat mcp list
  3. 检查服务器日志是否有错误

没有搜索结果

  1. 验证存储库是否已编入索引: python indexer.py --list
  2. 检查存储库路径是否正确
  3. 确保文件采用支持的格式

性能问题

  1. 大型存储库可能需要时间来索引
  2. 考虑仅对特定目录进行索引
  3. 在索引过程中监视内存使用情况

发展

项目结构

code-search-mcp/
├── indexer.py              # Repository indexing logic
├── mcp_server.py           # MCP server implementation
├── code_indexer.py         # Core indexing classes
├── start_server.sh         # Server startup script
├── quick_start.sh          # Setup script
├── requirements.txt        # Dependencies
├── chroma_db/             # Vector database
└── venv/                  # Python virtual environment

添加新文件类型

编辑 code_indexer.py 并向中添加新的扩展 SUPPORTED_EXTENSIONS 列表。

自定义块大小

修改 chunk_size 参数在 CodeIndexer 类初始化。

许可证

本项目归Savynt,股份有限公司所有。保留所有权利。

快速参考

基本命令

# Setup (first time or after cleanup)
./quick_start.sh

# Index a repository
source venv/bin/activate
python indexer.py --repo-path /path/to/repo --repo-name repo-name

# List indexed repositories
python indexer.py --list

# Start MCP server
./start_server_simple.sh

# Configure Q CLI
qchat mcp add --name code-search --command $(pwd)/venv/bin/python --args $(pwd)/mcp_server.py

# Check Q CLI configuration
qchat mcp list

安装后的文件结构

code-search-mcp/
├── venv/                   # Virtual environment (created by quick_start.sh)
├── chroma_db/             # Vector database (created when indexing)
├── mcp_server.py          # Main MCP server
├── indexer.py             # Repository indexer
├── start_server_simple.sh # Server startup script
└── README.md              # This file

支持

对于问题和疑问:

  1. 检查故障排除部分
  2. 查看MCP服务器日志
  3. 验证Amazon Q CLI配置
  4. 独立测试索引器功能