mcpField
F
FS-MCP: Universal File Reader & Intelligent Search MCP Server

FS-MCP: Universal File Reader & Intelligent Search MCP Server

本地服务
github.com/boleyn搜索与检索773 周前更新

关于 FS-MCP: Universal File Reader & Intelligent Search MCP Server

FS-MCP 是面向文件浏览、读取和文档搜索的 MCP 服务,适用于需要检索本地代码和资料的场景。它提供多格式文档转换、语义搜索,并将访问限制在配置的安全目录内。

主要功能

  1. 01自动识别文本文件
  2. 02读取多种文档格式
  3. 03按行范围读取内容
  4. 04文档转换为 Markdown 并缓存
  5. 05语义、文件名及混合搜索
  6. 06限制目录访问并校验路径

适用场景

  1. 01按概念搜索代码和文档
  2. 02读取大型文件的指定行段
  3. 03浏览受限目录中的项目文件

MCP 相关

该 MCP 服务向兼容客户端提供目录树、文件读取与预览、文件列表、文档搜索和索引管理工具。客户端可通过配置连接本地进程或使用 SSE 连接到 `http://localhost:3002`。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

FS-MCP:通用文件读取与智能搜索 MCP 服务

Python FastMCP License PRs Welcome

强大的 MCP(Model Context Protocol)服务,提供智能文件读取和语义搜索功能

English | 中文


English

🚀 功能特性
  • 🧠 智能文本检测:自动识别文本文件,不依赖文件扩展名
  • 📄 多格式支持:支持文本文件和文档格式(Word、Excel、PDF 等)
  • 🔒 安全优先:仅允许访问已配置的安全目录
  • 📏 范围读取:支持读取大型文件中的指定行范围
  • 🔄 文档转换:自动将文档转换为 Markdown 并缓存
  • 🔍 向量搜索:由 AI 嵌入提供支持的语义搜索
  • ⚡ 高性能:支持批处理和智能缓存
  • 🌐 多语言:支持英文和中文内容
📋 目录
🚀 快速开始
1. 克隆并安装
git clone https://github.com/yourusername/fs-mcp.git
cd fs-mcp

使用 uv(推荐):

uv sync

使用 pip:

pip install -r requirements.txt  # If you have a requirements.txt
# OR install directly
pip install fastmcp>=2.0.0 langchain>=0.3.0 python-dotenv>=1.1.0
2. 环境配置

在项目根目录中创建 .env 文件:

# Security Settings
SAFE_DIRECTORY=.                    # Directory restriction (required)
MAX_FILE_SIZE_MB=100                # File size limit in MB

# Encoding Settings
DEFAULT_ENCODING=utf-8

# AI Embeddings Configuration (for vector search)
OPENAI_EMBEDDINGS_API_KEY=your-api-key
OPENAI_EMBEDDINGS_BASE_URL=http://your-embedding-service/v1
EMBEDDING_MODEL_NAME=BAAI/bge-m3    # Or your preferred model
EMBEDDING_CHUNK_SIZE=1000
3. 启动服务
python main.py

服务将在 http://localhost:3002 上启动,并自动构建向量索引。

🛠️ 安装
系统要求
  • Python:3.12 或更高版本
  • 操作系统:Windows、macOS、Linux
  • 内存:建议为向量搜索配置 4GB 以上
  • 存储空间:缓存和索引需要 1GB 以上
依赖项

核心依赖项在 pyproject.toml 中管理:

  • fastmcp>=2.0.0 - MCP 服务框架
  • langchain>=0.3.0 - AI 和向量搜索
  • python-dotenv>=1.1.0 - 环境管理
  • 文档处理库(pandas、openpyxl、python-docx 等)
⚙️ 配置
环境变量
变量默认值描述
SAFE_DIRECTORY.文件访问的根目录
MAX_FILE_SIZE_MB100最大文件大小限制
DEFAULT_ENCODINGutf-8默认文件编码
OPENAI_EMBEDDINGS_API_KEY-嵌入服务的 API 密钥
OPENAI_EMBEDDINGS_BASE_URL-嵌入服务 URL
EMBEDDING_MODEL_NAMEBAAI/bge-m3用于生成嵌入的 AI 模型
EMBEDDING_CHUNK_SIZE1000处理文本块的大小
高级配置

对于生产环境部署,可考虑:

  • 设置速率限制
  • 配置日志轮换
  • 使用外部向量数据库
  • 设置监控
🔧 MCP 工具
1. view_directory_tree

用途:以树形格式显示目录结构

view_directory_tree(
    directory_path=".",     # Target directory
    max_depth=3,           # Maximum depth
    max_entries=300        # Maximum entries to show
)
2. read_file_content

用途:读取文件内容,支持指定行范围

read_file_content(
    file_path="example.py",  # File path
    start_line=1,           # Start line (optional)
    end_line=50             # End line (optional)
)
3. search_documents

用途:对文档进行智能语义搜索

search_documents(
    query="authentication logic",     # Search query
    search_type="semantic",          # semantic/filename/hybrid/extension
    file_extensions=".py,.js",       # File type filter (optional)
    max_results=10                   # Maximum results
)
4. rebuild_document_index

用途:重建用于搜索的向量索引

rebuild_document_index()  # No parameters needed
5. get_document_stats

用途:获取索引统计信息和系统状态

get_document_stats()  # Returns comprehensive stats
6. list_files

用途:根据模式匹配列出目录中的文件

list_files(
    directory_path="./src",  # Directory to list
    pattern="*.py",         # File pattern
    include_size=True       # Include file sizes
)
7. preview_file

用途:快速预览文件内容

preview_file(
    file_path="example.py",  # File to preview
    lines=20                # Number of lines
)
🔍 向量搜索
功能
  • 语义理解:搜索“用户身份验证”可找到“登录验证”代码
  • 同义词识别:搜索“database”可找到“数据库”内容
  • 多语言支持:支持英语、中文及混合内容
  • 上下文感知:理解代码语义及关系
搜索类型
  1. 语义搜索(semantic):由 AI 驱动的理解
  2. 文件名搜索(filename):快速匹配文件名
  3. 扩展名搜索(extension):按文件类型筛选
  4. 混合搜索(hybrid):结合语义搜索与文件名搜索
技术栈
  • 嵌入模型:BAAI/bge-m3(1024 维向量)
  • 向量数据库:ChromaDB
  • 文本切分:智能语义分块
  • 增量更新:基于哈希的变更检测
📁 支持的格式
自动检测的文本文件
  • 编程语言:.py、.js、.ts、.java、.cpp、.c、.go、.rs 等
  • 配置文件:.json、.yaml、.toml、.ini、.xml、.env
  • 文档:.md、.txt、.rst
  • Web 文件:.html、.css、.scss
  • 数据文件:.csv、.tsv
  • 无扩展名文件(自动检测)
文档格式(自动转换为 Markdown)
  • Microsoft Office:.docx、.xlsx、.pptx
  • OpenDocument:.odt、.ods、.odp
  • PDF:.pdf(文本提取)
  • 旧版格式:.doc、.xls(支持有限)
🔒 安全功能
访问控制
  • 目录限制:访问范围限制为 SAFE_DIRECTORY 及其子目录
  • 路径遍历防护:自动防止 ../ 攻击
  • 符号链接控制:可配置符号链接访问权限
  • 文件大小限制:防止读取过大的文件
验证
  • 路径净化:自动清理并验证路径
  • 权限检查:访问前验证读取权限
  • 错误处理:发生故障时优雅处理并提供说明性消息
🔗 集成
Claude Desktop

将其添加到 Claude Desktop MCP 配置中:

{
  "mcpServers": {
    "fs-mcp": {
      "command": "python",
      "args": ["main.py"],
      "cwd": "/path/to/fs-mcp",
      "env": {
        "SAFE_DIRECTORY": "/your/project/directory"
      }
    }
  }
}
其他 MCP 客户端

使用 Server-Sent Events(SSE)协议连接到 http://localhost:3002。

API 集成

该服务提供标准 MCP 端点,可与任何兼容 MCP 的客户端集成。

🏗️ 项目结构
fs-mcp/
├── main.py                    # Main MCP server
├── src/                       # Core modules
│   ├── __init__.py           # Package initialization
│   ├── file_reader.py        # Core file reading logic
│   ├── security_validator.py # Security and validation
│   ├── text_detector.py      # Intelligent file detection
│   ├── config_manager.py     # Configuration management
│   ├── document_cache.py     # Document caching system
│   ├── file_converters.py    # Document format converters
│   ├── dir_tree.py          # Directory tree generation
│   ├── embedding_config.py   # AI embedding configuration
│   ├── codebase_indexer.py   # Vector indexing system
│   ├── codebase_search.py    # Search engine
│   ├── index_scheduler.py    # Index scheduling
│   └── progress_bar.py       # Progress display utilities
├── tests/                    # Test suite
├── cache/                    # Document cache (auto-created)
├── logs/                     # Log files (auto-created)
├── pyproject.toml           # Project configuration
├── .env.example             # Environment template
├── .gitignore              # Git ignore rules
└── README.md               # This file
💻 开发
设置开发环境
# Clone repository
git clone https://github.com/yourusername/fs-mcp.git
cd fs-mcp

# Install with development dependencies
uv sync --group dev

# OR with pip
pip install -e ".[dev]"
运行测试
# Run all tests
pytest

# Run with coverage
pytest --cov=src

# Run specific test
pytest tests/test_file_reader.py
代码质量
# Format code
black src/ tests/

# Lint code
flake8 src/ tests/

# Type checking
mypy src/
调试

实时监控日志:

tail -f logs/mcp_server_$(date +%Y%m%d).log
🤝 贡献

欢迎贡献!以下是开始参与的步骤:

1. Fork 并克隆
git clone https://github.com/yourusername/fs-mcp.git
cd fs-mcp
2. 创建功能分支
git checkout -b feature/your-feature-name
3. 进行修改
  • 遵循现有代码风格
  • 为新功能添加测试
  • 根据需要更新文档
4. 测试你的修改
pytest
black src/ tests/
flake8 src/ tests/
5. 提交 Pull Request
  • 清晰描述你的修改
  • 引用相关问题
  • 确保所有测试通过
开发指南
  • 代码风格:遵循 PEP 8,使用 Black 格式化代码
  • 测试:保持测试覆盖率高于 80%
  • 文档:更新 README 和文档字符串
  • 提交:使用约定式提交消息
  • 安全:遵循安全最佳实践
📋 路线图
  • 增强 PDF 处理:改进表格和图像提取
  • 更多嵌入模型:支持本地模型
  • 实时索引:文件系统监视器
  • 高级搜索:正则表达式、邻近搜索、分面搜索
  • 性能优化:异步处理、改进缓存
  • Web 界面:可选的管理 Web UI
  • 插件系统:自定义文件类型处理器
  • 企业功能:身份验证、速率限制、监控
📄 许可证

本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。

🙏 Acknowledgments
📞 Support

中文

🚀 功能特点
  • 🧠 智能文本检测: 无需依赖扩展名,自动识别文本文件
  • 📄 多格式支持: 支持文本文件和文档格式(Word、Excel、PDF等)
  • 🔒 安全验证: 只允许读取配置的安全目录中的文件
  • 📏 按行读取: 支持指定行范围读取,便于处理大文件
  • 🔄 文档转换: 自动将文档格式转换为Markdown并缓存
  • 🔍 向量搜索: 基于AI嵌入的语义搜索
  • ⚡ 高性能: 支持批量文件处理和智能缓存
  • 🌐 多语言: 支持中英文内容处理
🚀 快速开始
1. 克隆和安装
git clone https://github.com/yourusername/fs-mcp.git
cd fs-mcp

# 推荐使用 uv
uv sync

# 或使用 pip
pip install -r requirements.txt
2. 环境配置

创建 .env 文件:

# 安全设置
SAFE_DIRECTORY=.                    # 目录访问限制(必需)
MAX_FILE_SIZE_MB=100                # 文件大小限制(MB)

# 编码设置
DEFAULT_ENCODING=utf-8

# AI嵌入配置(用于向量搜索)
OPENAI_EMBEDDINGS_API_KEY=your-api-key
OPENAI_EMBEDDINGS_BASE_URL=http://your-embedding-service/v1
EMBEDDING_MODEL_NAME=BAAI/bge-m3    # 或您偏好的模型
EMBEDDING_CHUNK_SIZE=1000
3. 启动服务器
python main.py

服务器将在 http://localhost:3002 启动并自动建立向量索引。

🛠️ MCP工具说明

详细的工具使用方法请参考英文部分的 MCP Tools 章节。

🔍 向量搜索功能
  • 概念匹配:搜索"用户认证"能找到"登录验证"相关代码
  • 同义词理解:搜索"database"能找到"数据库"相关内容
  • 多语言支持:同时理解中英文代码和注释
  • 上下文理解:理解代码的语义和上下文关系
📁 支持的文件格式

详细的格式支持请参考英文部分的 Supported Formats 章节。

🔒 安全特性
  • 路径验证: 只允许访问配置的安全目录及其子目录
  • 文件大小限制: 防止读取过大文件
  • 路径遍历防护: 自动防止 ../ 等路径遍历攻击
  • 符号链接控制: 可配置是否允许访问符号链接
🔗 集成方式
Claude Desktop集成

在 Claude Desktop 的 MCP 配置中添加:

{
  "mcpServers": {
    "fs-mcp": {
      "command": "python",
      "args": ["main.py"],
      "cwd": "/path/to/fs-mcp",
      "env": {
        "SAFE_DIRECTORY": "/your/project/directory"
      }
    }
  }
}
💻 开发
开发环境设置
# 克隆仓库
git clone https://github.com/yourusername/fs-mcp.git
cd fs-mcp

# 安装开发依赖
uv sync --group dev
运行测试
# 运行所有测试
pytest

# 运行覆盖率测试
pytest --cov=src
🤝 贡献

欢迎贡献代码!请参考英文部分的 Contributing 章节了解详细信息。

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。


Made with ❤️ for the AI community

⬆ Back to top

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。