文件系统操作服务

LocalFilesMCP是一个基于C#和ModelContextProtocol SDK构建的文件系统操作MCP服务器,允许代理通过MCP协议以安全、沙盒化的方式与文件系统交互。

  • by FWCorey
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 FWCorey/LocalFilesMCP

使用说明

本地文件MCP

LocalFilesMCP是一个用于文件系统操作的MCP服务器,使用C#和ModelContextProtocol SDK构建。 它允许代理通过MCP协议以安全、沙盒的方式与文件系统交互。

0.4.2-beta的新功能(突破性)

  • 添加 Find 和 FReg 用于基于glob的文件搜索和正则表达式内容搜索的工具。
  • 移除 ChangeDir 和 ListFiles。所有工具现在都是无状态的——使用 directory 参数打开 Find, FReg,以及 ListFolders 相反。 (断裂)
  • 固定的 GetVolumeDescription 现在读取由指定的文件 --vol-desc (未实施)。
  • 固定的 ListFolders 和 FReg 现在返回相对于卷根的路径。

查看完整 变更列表 了解详情。


命令行参数

  • --stdio 使用标准输入/输出(stdio)传输运行服务器。这是与集成所必需的 LM Studio或VS Code等工具。

  • --root-path <path> 为所有文件操作设置根目录。所有文件和目录访问权限将仅限于 这条路。 例子:

    dotnet run -- --stdio --root-path "C:\My\Sandbox"
    
    
  • --port 服务器的侦听器端口(仅在以下情况下使用 --stdio 未指定)。
dotnet run -- --port 5000 --root-path "/home/user/sandbox"

如果 --root-path 如果未指定,则使用当前工作目录作为根目录。 如果 --port 如果未指定,服务器将侦听端口5000。 如果 --stdio 如果未指定,服务器将使用HTTP/SSE传输。


将LocalFilesMCP添加到LM Studio

  1. 构建项目 跑 dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true 生成独立的可执行文件。
  2. 找到可执行文件 输出将在 bin/Release/net10.0/<your-platform>/publish/.
  3. 配置LM Studio 创建或编辑 mcp.json LM Studio工作区目录中的文件。
  4. 添加服务器配置 使用以下示例,更新 command 已发布可执行文件的路径和 --root-path 根据需要。

示例 mcp.json LM工作室

{
  "mcpServers": {
    "LocalFilesMCP": {
      "command": "C:\\Path\\To\\LocalFilesMCP.exe",
      "args": [
        "--stdio",
        "--root-path=C:\\Path\\To\\Your\\Sandbox"
      ]
    }
  }
}

示例 mcp.json Visual Studio中的CoPilot

{
  "inputs": [],
  "servers": {
    "LocalFilesMCP": {
      "command": "C:\\Path\\To\\LocalFilesMCP.exe",
      "args": [
        "--stdio",
        "--root-path=C:\\Path\\To\\Your\\Sandbox"
      ],
      "env": {}
    },
    "OtherLocalFilesMCP": {
      "command": "C:\\Path\\To\\LocalFilesMCP.exe",
      "args": [
        "--stdio",
        "--root-path=C:\\Path\\To\\Your\\Other\\Sandbox"
      ],
      "env": {}
    }
  }
}


卷描述

卷描述文件用于通知代理所公开的文件系统卷的内容和用途 通过MCP。这有助于CoPilot和Cursor等代理了解如何与其中的文件和目录进行交互 卷,而不是覆盖解决方案文件上下文。描述应清晰简洁,提供基本信息 没有压倒性细节的信息。

必须采用markdown格式。 必须以a开头 #卷描述 头球 您可以在此标题中包含任何用户评论,这些评论将不会返回给代理。 您可以根据需要为您的特定LLM代理添加其他部分。

建议使用以“.”开头的文件名来推断它是隐藏的。

建议包括以下部分:

  • ##目的:简要解释该卷包含的内容以及代理人应如何解释。
  • ##注意事项:关于该卷的任何重要细节或注意事项,例如:
    • 路径是相对于卷根的。
    • 此卷可能包含也可能不包含项目文件。
    • 此卷是只读的。

例子:

# Volume Description

This is a read-only filesystem volume exposed via MCP.

## Purpose
This volume contains files and directories that the agent can read and analyze to assist with queries about FooBar projects.

## Notes
- Paths are relative to the volume root.
- This volume may contain code files for example only but will not contain any project files.
- This volume is read-only.

工具

LocalFilesMCP项目中提供了以下工具:

  • GetVolume说明:检索卷描述。

    • 描述:返回一个markdown字符串,描述文件系统卷的内容和用途。
    • 参数:没有。
  • 列表文件夹:列出指定目录中的文件夹。

    • 描述:列出给定目录中的所有文件夹。如果未指定目录,则默认为当前目录。
    • 参数:
      • directory (可选):要列出的目录。
  • 找到:搜索与glob模式匹配的文件。

    • 描述:搜索与glob模式匹配的文件(例如。, **/*.cs, src/**/*.txt)在体积内。
    • 参数:
      • pattern:匹配文件的球形图案。
      • directory (可选):要搜索的目录。默认为当前目录。
  • 弗雷格:在文件内容中搜索正则表达式模式。

    • 描述:使用可配置的输出模式和可选的上下文行按正则表达式模式搜索文件内容。
    • 参数:
      • pattern:用于在文件内容中搜索的正则表达式模式。
      • directory (可选):要搜索的目录。默认为当前目录。
      • fileGlob (可选):Glob模式用于过滤搜索的文件(例如。, *.cs).默认为所有文件。
      • outputMode (可选): files 仅返回匹配的文件路径, content 返回具有匹配行和行号的文件路径。默认为 content.
      • contextLines (可选):每场比赛前后要包含的上下文行数。默认为0。
  • ReadFileText:读取文件的文本内容。

    • 描述:读取并返回指定文件的文本内容。
    • 参数:
      • path:要读取的文件的路径。
  • 读取二进制文件:读取文件的二进制内容。

    • 描述:读取并返回指定文件的二进制内容。
    • 参数:
      • path:要读取的文件的路径。

更多信息


许可证

该项目根据 带有Commons条款的Apache许可证2.0.

这意味着:

  • 个人免费使用: 您可以自由下载、修改和使用它。
  • 免费供内部业务使用: 您可以在公司内部使用此功能(例如,游戏工作室、企业工作流)。
  • 无商业转售: 您不能销售此软件,不能将其作为付费服务提供,也不能将其包装在第三方的商业产品中。

看 LICENSE.txt 查看完整的法律文本。