文件搜索服务器

一个基于Model Context Protocol (MCP)的快速文件搜索服务器,支持在文件中搜索关键词并提供上下文,适用于Cursor和Claude Desktop等MCP客户端。

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

使用说明

MCP搜索服务器

一个最小、快速的模型上下文协议(MCP)服务器,它公开了一个工具: search_file 用于在文件中搜索。设计用于与Cursor和Claude Desktop配合使用,以及一个可直接使用的小型CLI。

仓库: https://github.com/devleo10/mcp-search-server

技术栈

  • Bun(运行时+包管理器)
  • TypeScript
  • @modelcontextprotocol/sdk v1.21.0(官方MCP SDK)
  • Express 5(HTTP模式)
  • JSON-RPC 2.0(协议)

这是什么(不是什么)

  • Is:一个从文件搜索工具返回上下文/结果的MCP服务器
  • 不是:模特/LLM。模型存在于MCP客户端(Cursor,Claude)

安装

bun install

跑

HTTP模式(默认):

bun run start   # http://localhost:3000/mcp

stdio模式(用于光标/克劳德):

export MCP_TRANSPORT=stdio        # macOS/Linux
$env:MCP_TRANSPORT="stdio"       # Windows PowerShell
bun run start

可选:限制对工作区根目录的文件访问

export WORKSPACE_ROOT=/path/to/project

在游标中使用(推荐)

  1. 创建或编辑您的MCP配置
  • 窗户: %APPDATA%\Cursor\mcp.json
  • macOS: ~/.cursor/mcp.json
  • Linux: ~/.config/Cursor/mcp.json
  1. 添加服务器
{
  "mcpServers": {
    "search-server": {
      "command": "bun",
      "args": ["run", "/path/to/mcp-search-server/src/server.ts"],
      "cwd": "/path/to/mcp-search-server",
      "env": {
        "MCP_TRANSPORT": "stdio",
        "WORKSPACE_ROOT": "/path/to/mcp-search-server"
      }
    }
  }
}

Windows示例 (使用双反斜杠):

{
  "mcpServers": {
    "search-server": {
      "command": "bun",
      "args": ["run", "C:\\path\\to\\mcp-search-server\\src\\server.ts"],
      "cwd": "C:\\path\\to\\mcp-search-server",
      "env": {
        "MCP_TRANSPORT": "stdio",
        "WORKSPACE_ROOT": "C:\\path\\to\\mcp-search-server"
      }
    }
  }
}

备注:替换 /path/to/mcp-search-server 使用您的实际项目目录路径。

  1. 重新启动Cursor并询问:
  • “可用的MCP工具有哪些?”→ 应列出 search_file
  • “在中搜索“关键字” samples/sample.txt 两行上下文”

提示

  • 使用相对于的路径 WORKSPACE_ROOT
  • 询问上下文:“有两行上下文”

CLI使用(直接,无MCP)

# basic
bun run cli -- samples/sample.txt keyword

# case-insensitive with context
bun run cli -- samples/sample.txt keyword -i -c 2

# regex
bun run cli -- samples/sample.txt "function.*\(" -r

选项

  • -r, --regex 启用正则表达式
  • -i, --insensitive 不区分大小写
  • -c N, --context N 上下文行(0-100)
  • -m N, --max N 最大结果(1–100000)

MCP检查员演示

以下是如何使用MCP Inspector测试该工具:

  1. 安装MCP检查器 (如果尚未安装):

    npm install -g @modelcontextprotocol/inspector
    
  2. 启动服务器:

    bun run start
    
  3. 运行MCP检查器:

    mcp-inspector http://localhost:3000/mcp
    
  4. 测试工具:

    • 选择 search_file 从工具列表中
    • 使用此示例输入:
      {
        "path": "samples/sample.txt",
        "keyword": "keyword",
        "options": {
          "insensitive": true,
          "context": 2
        }
      }
      
    • 点击“调用工具”查看结果

注意:添加一个屏幕截图,显示MCP Inspector界面以及工具调用和结果

工具API(搜索文件)

输入

{
  "path": "samples/sample.txt",
  "keyword": "keyword",
  "options": {
    "regex": false,
    "insensitive": true,
    "context": 2,
    "maxResults": 1000
  }
}

输出(内容[0]。文本包含JSON)

{
  "matches": [ { "line": 13, "text": "..." } ],
  "meta": { "path": "samples/sample.txt", "keyword": "keyword", "count": 1, "durationMs": 5 }
}

测试

bun test

项目布局

src/
  server.ts   # MCP server + transport
  search.ts   # search engine (streaming + in-memory)
bin/
  search-cli.ts
samples/
tests/

故障排除

  • “找不到文件”→ 使用内部路径 WORKSPACE_ROOT 相对于它
  • “拒绝访问:路径必须在工作区根目录内”→ fix WORKSPACE_ROOT
  • 光标不显示工具→ 重新启动Cursor,检查MCP日志(查看→ 输出→ MCP)

许可证:麻省理工学院