文件搜索服务

一个基于MCP协议的文件搜索服务器,提供文件和目录中的关键词搜索功能。

  • by mohdjami
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mohdjami/file-search-mcp

使用说明

文件搜索MCP服务器

一种MCP(模型上下文协议)服务器,提供在文件和目录中搜索关键字的工具。

特性

  • 在文件中搜索:在特定文件中搜索关键字,并获得与行号匹配的行
  • 在目录中搜索:在目录中的多个文件中搜索关键字(支持模式匹配)

安装

此项目使用 uv 用于依赖性管理。确保你有 uv 安装:

curl -LsSf https://astral.sh/uv/install.sh | sh

然后安装依赖项:

uv sync

运行服务器

要直接运行服务器,请执行以下操作:

uv run server.py

备注:此服务器使用STDIO传输与Claude Desktop进行本地MCP连接。服务器将通过标准输入/输出监听JSON-RPC消息。

Claude桌面配置

要将此服务器与Claude Desktop一起使用,请将以下内容添加到您的Claude Desktop配置文件中:

macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json

视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "file-search": {
      "command": "/path/to/uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/ressl_mcp",
        "run",
        "server.py"
      ]
    }
  }
}

配置详细信息:

  1. 找到 uv 可执行路径:

    • macOS/Linux:运行 which uv 以获得完整路径(例如。, /Users/username/.local/bin/uv)
    • Windows:运行 where uv 获取完整路径
  2. 获取项目的绝对路径:

    • 导航到 ressl_mcp 目录
    • 跑 pwd (macOS/Linux)或 cd (Windows)获取绝对路径
    • 例子: /Users/username/ressl_mcp
  3. 更新配置:

    • 替换 /path/to/uv 与您的实际路径 uv 可执行
    • 替换 /ABSOLUTE/PATH/TO/ressl_mcp 此项目目录的绝对路径

配置示例:

{
  "mcpServers": {
    "file-search": {
      "command": "/Users/username/.local/bin/uv",
      "args": [
        "--directory",
        "/Users/username/ressl_mcp",
        "run",
        "server.py"
      ]
    }
  }
}

重要提示:

  • 使用 完全绝对路径 到 uv 可执行于 command 领域
  • 使用 完全绝对路径 到您的项目目录中 args 数组
  • 在更新配置之后, 完全重新启动克劳德桌面 (退出应用程序,不要只是关闭窗口)

可用工具

search_in_file

在特定文件中搜索关键字。

参数:

  • file_path (string):要搜索的文件的路径(可以是绝对路径或相对路径)
  • keyword (string):要搜索的关键字或短语
  • case_sensitive (boolean,可选):搜索是否应区分大小写(默认值:False)

例子:

  • “在server.py中搜索'def'”
  • “在myfile.py中敏感地查找所有出现的'import'”

search_in_directory

在目录中的多个文件中搜索关键字。

参数:

  • directory_path (string):要搜索的目录的路径
  • keyword (string):要搜索的关键字或短语
  • file_pattern (字符串,可选):用于匹配文件的Glob模式(例如,“南美国家巴拉圭的缩写(Paraguay).txt“,”“)(默认值:”")
  • case_sensitive (boolean,可选):搜索是否应区分大小写(默认值:False)
  • max_results (整数,可选):返回的最大结果数(默认值:100)

例子:

  • “在src目录中的所有Python文件中搜索'TODO'”
  • “在当前目录中的所有文件中查找'error'”

最佳实践

  • 服务器使用正确的日志记录到stderr(而不是stdout),以避免损坏JSON-RPC消息
  • 文件路径支持绝对路径和相对路径,主目录采用波浪号扩展
  • 二进制文件会自动检测并得到适当处理
  • 权限错误通过清晰的错误消息得到妥善处理

故障排除

如果服务器未出现在Claude Desktop中:

  1. 检查路径是否正确 claude_desktop_config.json 是绝对的(不是相对的)
  2. 验证路径 uv 正确(如果需要,请使用完整路径)
  3. 完全重新启动Claude Desktop(退出应用程序,不要只是关闭窗口)
  4. 检查登录 ~/Library/Logs/Claude/mcp*.log (macOS)错误

发展

该服务器是使用FastMCP构建的,它可以根据Python类型提示和文档字符串自动生成工具定义。