MCP代码上下文服务器
一种模型上下文协议服务器,使大型语言模型能够读取、搜索和分析代码文件,具有高级缓存和实时文件监控功能。
服务介绍
文件上下文服务器
这是一个模型上下文协议(MCP)服务器,为大型语言模型(LLMs)提供文件系统上下文。该服务器使 LLMs 能够读取、搜索和分析代码文件,并具有高级缓存和实时文件监视功能。
功能
-
文件操作
- 读取文件和目录内容
- 列出带有详细元数据的文件
- 实时文件监视和缓存失效
- 支持多种文件编码
- 递归目录遍历
- 文件类型过滤
-
代码分析
- 环路复杂度计算
- 依赖提取
- 注释分析
- 质量指标:
- 重复行检测
- 长行检测(>100个字符)
- 复杂函数识别
- 行数统计(总行数、非空行数、注释行数)
-
智能缓存
- 最近最少使用(LRU)缓存策略
- 文件更改时自动缓存失效
- 可配置限制的大小感知缓存
- 缓存统计信息和性能指标
- 上次读取结果缓存以提高搜索效率
-
高级搜索
- 正则表达式模式匹配
- 可配置上下文范围的结果
- 文件类型过滤
- 多模式搜索支持
- 缓存结果搜索
- 排除模式
安装
通过 Smithery 安装
要通过 Smithery 自动为 Claude Desktop 安装文件上下文服务器:
npx -y @smithery/cli install @bsmi021/mcp-file-context-server --client claude
手动安装
npm install @modelcontextprotocol/file-context-server
使用
启动服务器
npx file-context-server
可用工具
-
list_context_files
- 列出目录中的文件及其详细元数据
{ "path": "./src", "recursive": true, "includeHidden": false } -
read_context
- 读取文件或目录的内容及其元数据
{ "path": "./src/index.ts", "encoding": "utf8", "maxSize": 1000000, "recursive": true, "fileTypes": ["ts", "js"] } -
search_context
- 在文件中搜索带上下文的模式
{ "pattern": "function.*", "path": "./src", "options": { "recursive": true, "contextLines": 2, "fileTypes": ["ts"] } } -
analyze_code
- 分析代码文件的质量指标
{ "path": "./src", "recursive": true, "metrics": ["complexity", "dependencies", "quality"] } -
cache_stats
- 获取缓存统计信息和性能指标
{ "detailed": true }
错误处理
服务器提供了带有特定错误代码的详细错误消息:
FILE_NOT_FOUND: 文件或目录不存在PERMISSION_DENIED: 访问权限问题INVALID_PATH: 无效的文件路径格式FILE_TOO_LARGE: 文件超出大小限制ENCODING_ERROR: 文件编码问题UNKNOWN_ERROR: 意外错误
配置
用于自定义的环境变量:
MAX_CACHE_SIZE: 缓存条目的最大数量(默认:1000)CACHE_TTL: 缓存生存时间(以毫秒为单位,默认:1小时)MAX_FILE_SIZE: 读取文件的最大大小(以字节为单位)
开发
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Start in development mode
npm run dev
许可证
MIT
贡献
欢迎贡献!请阅读我们的贡献指南以了解行为准则以及提交拉取请求的过程。
跨平台路径兼容性
注意: 截至2025年4月,File Context Server 中的所有文件和目录路径处理都已更新,以提高跨平台兼容性(Windows、macOS、Linux):
- 所有 glob 模式在内部使用 POSIX 风格的路径(正斜杠),确保无论操作系统如何都能一致地匹配文件。
- 所有文件系统操作(读取、写入、stat 等)使用标准化的绝对路径以保证可靠性。
- 如果您正在开发或扩展服务器,请对 glob 模式使用
path.posix.join,对文件系统访问使用path.normalize。 - 此更改防止了不同操作系统上路径分隔符和文件匹配的问题。
最终用户无需进行任何更改,但开发者在贡献项目时应遵循这些约定。