文件抓取器MCP(MCP服务器)1.0.0.2
一种模型上下文协议(MCP)服务器,提供全面的文件操作、解析功能和Scriban模板处理。建在。NET 10,支持HTTP和Stdio传输。
测试8
通知
该项目目前正在积极开发中,可能会发生重大变化。功能和API可能会发生变化,在未来的版本中可能会发生重大变化。请自行决定使用。
总结
FileScrubberMCP 是一个功能强大、企业就绪的MCP服务器,它通过全面的文件系统操作、数据解析和模板渲染功能扩展了AI助手。它使AI模型能够与本地和远程文件交互,跨多种格式查询结构化数据,转换内容,并通过Scriban模板生成文档。
关键能力
- 📁 文件系统操作:读取、写入和列出具有完整元数据的文件,包括时间戳、大小和属性。支持递归目录扫描和灵活的搜索模式。
- 🔍 多格式解析:使用行业标准查询语言(JSONPath用于JSON/YAML/CSV/Excel,XPath用于XML)从JSON、XML、YAML、CSV和Excel文件中查询和提取数据。
- 🔄 数据转换:使用带有可选输出的XSLT样式表将XML文档转换为文件。
- 📝 模板处理:使用JSON数据渲染Scriban(.sbn)模板,以生成报告、文档或任何基于文本的输出。将模板处理为文件或以字符串形式返回。
- 🌐 HTTP客户端操作:使用自定义标头和JSON有效载荷执行HTTP请求(GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS)。
- ⚙️ 工作流程自动化:执行JSON文件中定义的复杂多步骤工作流。将操作链接在一起,在步骤之间传递数据,并自动化整个数据处理管道。
- 🤖 人工智能集成:内置GitHub Copilot集成,用于工作流中的人工智能分析和内容生成。
- 🔌 柔性运输:支持HTTP和Stdio传输,与各种MCP客户端和AI平台无缝集成。
理想用例
- 数据分析:从结构化数据文件(JSON、XML、YAML、CSV、Excel)中查询和提取信息
- 报告生成:使用Scriban模板从文件列表、数据查询或任何JSON数据创建格式化报告
- 文件管理:自动化文件操作、目录扫描和内容操作
- 数据转换:在格式之间转换,使用XSLT转换XML,处理结构化数据
- API集成:向REST API发出HTTP请求并处理响应
- 文档:从代码、数据或文件元数据生成文档
- 工作流程自动化:在声明性JSON工作流中将多个操作链接在一起
- AI驱动的分析:利用GitHub Copilot进行智能数据分析和内容生成
建筑
建立在 .NET 10 采用简洁的模块化架构:
- 服务层:文件、解析器、模板和URI操作的业务逻辑
- 工具层:MCP工具实现将服务暴露给AI模型
- 依赖注入:对可测试性和可维护性的全面DI支持
- 结构化日志记录:使用Serilog进行全面的日志记录,用于监控和调试
- 综合测试:84个单元测试,涵盖边缘情况下的服务和工具
特性
🗂️ 文件操作
- 读取文件 -从任何路径读取文件内容
- 写入文件 -通过自动目录创建将内容写入文件
- 列出文件 -包含元数据(大小、日期、属性)的综合文件列表
- 搜索模式和递归目录扫描
📄 文件解析和查询
支持多种文件格式,具有强大的查询功能:
- JSON -保留关键路径的JSONPath查询
- 可扩展标记语言 -支持命名空间的XPath查询
- YAML -YAML数据的JSONPath查询
- CSV -支持头部的JSONPath查询
- Excel(.xlsx) -JSONPath查询支持多工作表
- XSLT -XML转换功能(使用带有可选文件输出的XSLT样式表转换XML文档)
📝 Scriban模板处理
- 流程模板 -使用JSON数据渲染.sbn模板并保存到文件
- 渲染模板 -渲染模板并以字符串形式返回输出
- 支持循环、条件、过滤器和自定义函数
- 包括文件列表报告的示例模板
🌐 HTTP/URI操作
对REST API集成的完全HTTP客户端支持:
- 获取、发布、放置、修补、删除 -标准HTTP方法
- 头部,选项 -HTTP元数据操作
- 自定义标头和JSON有效载荷
- 解析和验证URI
- 提取URI组件(方案、主机、路径、查询、片段)
⚙️ 工作流程自动化
执行复杂的多步骤工作流,步骤之间有数据流:
- 顺序执行 -通过上下文共享按顺序运行步骤
- 数据转换管道 -链文件操作、HTTP请求、解析和模板
- 占位符参考 -使用
{StepName.OutputName}参考前一步的输出 - 条件执行 -动态启用/禁用步骤
- GitHub复制集成 -工作流程中基于人工智能的分析和内容生成
- 看
Documents/WORKFLOW_SERVICE_README.md详情
快速开始
先决条件
- .NET 10.0 SDK或更高版本
- Windows、Linux或macOS
备注:从升级。网9?请参阅 迁移指南 有关详细的升级说明。
安装
# Clone the repository
git clone
cd filescrubberMCP
# Restore dependencies
dotnet restore
# Build the project
dotnet build
# Run tests
dotnet test运行服务器
HTTP传输(默认)
dotnet run服务器将于启动 http://localhost:5000 (或配置的端口)。
标准运输
$env:FILESCRUBBER_MCP_TRANSPORT="Stdio"
dotnet run或者使用提供的PowerShell脚本:
# HTTP mode
.\Scripts\Start-Http.ps1
# Stdio mode
.\Scripts\Start-Stdio.ps1配置
应用程序参数
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"ConnectionStrings": {
"DefaultConnection": "Data Source=app.db"
},
"Cors": {
"AllowedOrigins": ["http://localhost:3000"],
"AllowedMethods": ["GET", "POST", "PUT", "DELETE"],
"AllowedHeaders": ["*"],
"ExposedHeaders": [],
"AllowCredentials": true
}
}环境变量
FILESCRUBBER_MCP_TRANSPORT-设置为"Http"或"Stdio"(默认值:"Http")FILESCRUBBER_MCP_LOG_DIR-日志文件的自定义目录(默认:Logs在应用程序目录中)FILESCRUBBER_FILE_DIRECTORY-文件操作的根目录。设置后,所有相对文件路径都将相对于此目录进行解析。对于Docker部署设置工作目录很有用。(默认:当前工作目录)
MCP工具
文件工具
fscrub_file_read
读取文件的内容。
参数:
filePath(string)-要读取的文件的路径
例子:
{
"filePath": "C:\\Projects\\data.txt"
}fscrub_file_write
将内容写入文件。
参数:
filePath(string)-要写入的文件的路径content(string)-要写入文件的内容
例子:
{
"filePath": "C:\\Projects\\output.txt",
"content": "Hello, World!"
}fscrub_file_list
列出包含元数据的目录中的文件。
参数:
directoryPath(string)-要搜索的目录searchPattern(字符串,可选)-文件模式(默认值:“\*”)recursive(bool,可选)-搜索子目录(默认值:true)
例子:
{
"directoryPath": "C:\\Projects",
"searchPattern": "*.cs",
"recursive": true
}解析器工具
fscrub_parser_search_json
使用JSONPath搜索JSON文件。
参数:
jsonFilePath(string)-JSON文件的路径jsonPath(string)-JSONPath查询(例如,“$.users\[\*\].email”)indented(bool,可选)-格式化输出(默认值:true)showKeyPaths(bool,可选)-在结果中包含路径(默认值:false)
fscrub_parser_search_xml
使用XPath搜索XML文件。
参数:
xmlFilePath(string)-XML文件的路径xPath(string)-XPath查询(例如,“//user/@email”)indented(bool,可选)-格式化输出(默认值:true)showKeyPaths(bool,可选)-在结果中包含路径(默认值:false)
fscrub_parser_search_yaml
使用JSONPath搜索YAML文件。
参数:
yamlFilePath(string)-YAML文件的路径jsonPath(string)-JSONPath查询indented(bool,可选)-格式化输出(默认值:true)showKeyPaths(bool,可选)-在结果中包含路径(默认值:false)
fscrub_parser_search_csv
使用JSONPath搜索CSV文件。
参数:
csvFilePath(string)-CSV文件的路径jsonPath(string)-JSONPath查询hasHeaderRecord(bool,可选)-第一行是标题(默认值:true)ignoreBlankLines(bool,可选)-忽略空白行(默认值:true)
fscrub_parser_search_excel
使用JSONPath搜索Excel文件。
参数:
excelFilePath(string)-Excel文件(.xlsx)的路径jsonPath(string)-JSONPath查询(例如,“$.Sheet1\[\*\].ColumnName”)
fscrub_parser_transform_xml
使用XSLT样式表转换XML。
参数:
xmlFilePath(string)-XML文件的路径xsltFilePath(string)-XSLT样式表的路径destinationFilePath(字符串,可选)-输出文件路径
Scriban模板工具
fscrub_scriban_process_template
使用JSON数据处理Scriban模板并保存到文件。
参数:
templateFilePath(string)-.sbn模板文件的路径jsonData(string)-模板的JSON数据outputFilePath(string)-输出文件路径
例子:
{
"templateFilePath": "Examples/file_list_report.sbn",
"jsonData": "{\"title\":\"Report\",\"items\":[{\"name\":\"Item1\"}]}",
"outputFilePath": "output/report.md"
}fscrub_scriban_render_template
渲染Scriban模板并返回输出。
参数:
templateFilePath(string)-.sbn模板文件的路径jsonData(string)-模板的JSON数据
URI工具
fscrub_uri_get
向指定的URI发送GET请求。
参数:
uri(string)-用于向其发送GET请求的URIheadersJson(string,可选)-头部的JSON对象
fscrub_uri_post
向指定的URI发送POST请求。
参数:
uri(string)-用于向其发送POST请求的URIjsonBody(字符串,可选)-请求的JSON正文headersJson(string,可选)-头部的JSON对象
fscrub_uri_put
向指定的URI发送PUT请求。
参数:
uri(string)-用于向其发送PUT请求的URIjsonBody(字符串,可选)-请求的JSON正文headersJson(string,可选)-头部的JSON对象
fscrub_uri_patch
向指定的URI发送PATCH请求。
参数:
uri(string)-用于向其发送PATCH请求的URIjsonBody(字符串,可选)-请求的JSON正文headersJson(string,可选)-头部的JSON对象
fscrub_uri_delete
向指定的URI发送DELETE请求。
参数:
uri(string)-用于向其发送DELETE请求的URIheadersJson(string,可选)-头部的JSON对象
fscrub_uri_head
向指定的URI发送HEAD请求。
参数:
uri(string)-URI,用于向其发送HEAD请求headersJson(string,可选)-头部的JSON对象
fscrub_uri_options
向指定的URI发送OPTIONS请求。
参数:
uri(string)-用于向其发送OPTIONS请求的URIheadersJson(string,可选)-头部的JSON对象
工作流工具
fscrub_workflow_execute
执行JSON文件中定义的多步骤工作流。
参数:
workflowFilePath(string)-工作流JSON文件的路径
例子:
{
"workflowFilePath": ".fscrub/workflows/data-pipeline.json"
}工作流功能:
- 通过数据传递顺序执行步骤
- 参考前一步的输出
{StepName.OutputName} - 支持所有文件、解析器、模板和URI操作
- 用于AI分析的GitHub Copilot集成
- 启用/禁用单个步骤
- 详细的执行指标和错误处理
看 Documents/WORKFLOW_SERVICE_README.md 用于工作流定义格式和示例。
AI集成工具
fscrub_ask_github_copilot
向GitHub Copilot发送提示,以进行AI驱动的分析或内容生成。
参数:
prompt(string)-发送到GitHub Copilot的提示
例子:
{
"prompt": "Analyze the following employee data and provide insights:\n\n{PreviousStep.Content}"
}注: 此工具主要用于工作流中,但可以独立调用。
模板示例
这 Examples/ 目录包含示例Scriban模板:
文件列表报告模板
# File Listing Report
**Directory:** {{ directoryPath }}
**Total Files:** {{ fileCount }}
{{ for file in files }}
- {{ file.file_name }} ({{ file.size_in_bytes }} bytes)
{{ end }}用法示例
- 列出文件:
fscrub_file_list("C:\\Projects", "*.cs", true)- 带有输出的流程模板:
fscrub_scriban_process_template(
"Examples/file_list_report.sbn",
,
"report.md"
)看 Examples/SCRIBAN_TEMPLATES_README.md 了解更多详情。
项目结构
filescrubberMCP/
├── Configuration/ # Configuration providers
├── Examples/ # Sample files and templates
│ ├── *.json # Sample JSON/XML/YAML files
│ ├── *.sbn # Scriban template examples
│ └── SCRIBAN_TEMPLATES_README.md
├── Extensions/ # Service collection extensions
├── Interfaces/ # Service and tool interfaces
├── Logs/ # Application logs
├── Models/ # Data models
├── Scripts/ # PowerShell startup scripts
├── Services/ # Business logic services
│ ├── FileService.cs
│ ├── ParserService.cs
│ ├── TemplateService.cs
│ └── UriService.cs
├── Tests/ # Unit tests
│ ├── Services/
│ └── Tools/
├── Tools/ # MCP tool implementations
│ ├── FileTools.cs
│ ├── ParserTools.cs
│ ├── TemplateTools.cs
│ └── UriTools.cs
├── Program.cs # Application entry point
├── appsettings.json # Configuration
└── README.md发展
运行测试
# Run all tests
dotnet test
# Run specific test suite
dotnet test --filter "FullyQualifiedName~FileServiceTests"
# Run with coverage
dotnet test /p:CollectCoverage=true添加新工具
- 在中创建界面
Interfaces/ - 实施服务
Services/ - 在中实施MCP工具
Tools/ - 注册
Program.cs和ServiceCollectionExtensions.cs - 在中添加测试
Tests/
代码风格
- 对I/O操作使用async/await
- 遵循依赖注入模式
- 使用Serilog进行全面测井
- 结构化错误处理
- XML文档注释
测试
该项目包括全面的单元测试:
- 总共84次测试
- 具有模拟依赖关系的服务层测试
- 使用模拟服务进行工具层测试
- 边缘情况和错误场景
- 集成场景
看 Tests/TEMPLATE_TESTS_SUMMARY.md 查看详细的测试覆盖率。
依赖项
核心
- .NET 10.0
- 模型上下文协议。AspNetCore(0.1.0-评论.13)
日志记录
- Serilog。AspNetCore(9.0.0)
文件处理
- ClosedXML(0.105.0)-Excel文件
- CsvHelper(33.1.0)-CSV文件
- YamlDotNet(16.3.0)-YAML文件
- Newtonsoft。Json(13.0.3)-Json处理
模板处理
- Scriban(5.10.0)-模板引擎
测试
- xUnit(2.9.3)
- 月环比(4.20.72)
- 微软。网。测试。私人有限公司(18.0.1)
日志记录
日志被写入 Logs/ 目录(或由指定的自定义目录 FILESCRUBBER_MCP_LOG_DIR 环境变量):
- HTTP模式:
Logs/filescrubber-mcp-http-YYYYMMDD.log - 标准模式:
Logs/filescrubber-mcp-stdio-YYYYMMDD.log
日志级别可以在中配置 appsettings.json.
错误处理
所有MCP工具都返回结构化的JSON响应:
成功:
{
"success": true,
"data": { ... }
}错误:
{
"success": false,
"error": "Error message"
}贡献
- 复刻仓库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
许可证
\[您的许可证在这里\]
支持
对于问题、疑问或贡献,请 打开一个问题.
