代码引用搜索服务

一个基于TypeScript的语言服务器协议实现,支持多种搜索策略的代码引用搜索工具,适用于开发者在不同环境中快速查找代码引用。

  • by Meeneshsolanki
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 meeneshsolanki/mcp-server

使用说明

MCP服务器(语言服务器协议)

基于TypeScript的语言服务器协议实现,用于代码引用搜索,支持多种搜索策略。

特性

  • 🔍 使用ripgrep快速搜索代码引用
  • 🌐 易于搜索的Web界面
  • 💻 用于命令行使用的终端界面
  • 📊 按文件类型对结果进行分组
  • 🔄 后备搜索机制
  • 🔥 热重载开发支持

先决条件

在开始之前,请确保已安装以下内容:

  • Node.js(v14或更高版本)
  • npm(附带Node.js)
  • Homebrew(适用于macOS用户)
  • ripgrep(建议用于更快的搜索)

安装

1.克隆存储库

git clone <your-repository-url>
cd <repository-name>/src/mcp-server/v1

2.安装Homebrew(仅限macOS)

# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Add Homebrew to PATH (follow the instructions shown after installation)
# Usually these commands:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

# Restart your terminal or run
source ~/.zprofile

3.安装ripgrep

# macOS (using Homebrew)
brew install ripgrep

# Ubuntu/Debian
sudo apt-get update && sudo apt-get install ripgrep

# Fedora
sudo dnf install ripgrep

# Windows (using Chocolatey)
choco install ripgrep

4.安装依赖项

npm install

用法

建设项目

npm run build

启动服务器

生产模式

npm run start

开发模式(热重载)

npm run dev

访问接口

  1. web界面

    • 打开浏览器并导航到: http://localhost:3000
    • 输入您的搜索词和目录
    • 查看按文件类型分组的结果
  2. 终端接口

    • 终端界面与服务器自动启动
    • 按照提示输入搜索词
    • 结果将显示在终端中

搜索策略

服务器按以下顺序使用多种搜索策略:

  1. ripgrep (最快)

    • 使用正则表达式进行精确匹配和部分匹配
    • 不包括常用目录(node_modules、.git等)
    • 提供行号和上下文
  2. 全局正则表达式打印 (回退)

    • 如果ripgrep不可用,则使用
    • 功能相似,但速度较慢
  3. Node.js (最终回退)

    • 纯JavaScript实现
    • 如果ripgrep和grep都不可用,则使用

配置

环境要求

  • 服务器会自动检查所需的软件
  • 如果缺少任何内容,则提供安装说明
  • 验证工作目录是否正确

TypeScript配置

  • 目标:ES2020
  • 模块:CommonJS
  • 已启用严格类型检查
  • 为调试生成的源映射

故障排除

常见问题

  1. 目录错误

    • 确保你在 src/mcp-server/v1 目录
    • 检查环境检查中显示的路径
  2. 自制咖啡安装

    • 如果Homebrew命令失败,请确保配置了PATH
    • 检查 ~/.zprofile 用于Homebrew配置
  3. 未找到ripgrep

    • 验证Homebrew是否已安装并位于PATH中
    • 尝试重新安装: brew reinstall ripgrep
  4. 端口已在使用中

    • 服务器将自动找到可用端口
    • 默认端口为3000

错误消息

如果您看到这些错误,请尝试以下操作:

  1. command not found: brew

    • 重新安装Homebrew
    • 重新配置路径
  2. command not found: rg

    • 安装ripgrep: brew install ripgrep
    • 验证PATH配置
  3. EADDRINUSE

    • 端口正在使用中
    • 服务器将自动尝试其他端口

发展

可用脚本

  • npm run build:构建项目
  • npm run start:以生产模式启动
  • npm run dev:从热重新加载开始
  • npm run clean:清洁构建输出

添加新功能

  1. 修改 server.ts 核心功能
  2. 更新 index.html 用于web界面更改
  3. 在开发模式下运行以测试更改
  4. 构建并重新启动以应用