本地文件mcp
Go中的最小MCP服务器,通过HTTP JSON-RPC公开本地文件系统目录,具有严格的路径限制和可选的文件过滤。
特性
list_files,read_file,以及search_filesMCP工具- 路径遍历保护(
..并且绝对路径被拒绝) - 可选的基于点文件和正则表达式的排除
--exclude基于正则表达式的排除别名(与--exclude-regex当两者都设置时)- 承载令牌身份验证
- 可选TLS支持
- 可选尾秤
serve整合 - 前台首先配备实时终端仪表板(TUI)
构建
go build ./...跑
默认工作流是为本地使用而设计的:
go run .这将在前台启动MCP端点,为当前目录提供服务(.),自动选择可用的本地端口,在需要时自动生成令牌,在关闭之前保持实时仪表板,在macOS上默认启用Apple沙盒(在继承Apple的基线运行时权限的同时限制对目标根的文件访问)。
如果你想固定它,你总是可以传递一个明确的监听地址:
go run . /absolute/path/to/expose 127.0.0.1:8080您可以通过以下方式禁用沙盒模式(用于调试或不受支持的环境):
go run . /absolute/path/to/expose --sandbox=false或者提供您自己的沙盒配置文件:
go run . /absolute/path/to/expose --sandbox-profile /path/to/profile.sb如果愿意,您还可以传递显式标志:
go run . \
--root /absolute/path/to/expose \
--listen 127.0.0.1:8080 \
--token ""要排除包含一个或两个正则表达式的路径,请执行以下操作:
go run . /absolute/path/to/expose --exclude='\\.(log|tmp)$'
go run . /absolute/path/to/expose --exclude='\\.git' --exclude-regex='node_modules'当两者都提供时,这两种模式与OR相结合。
如果你只想要老派的输出:
go run . /absolute/path/to/expose --no-tuiTailscale暴露
默认情况下禁用尾标曝光,可以显式启用:
--tailscale-expose 使用以下配置映射:
- 端点路径:
/mcp - 远程URL:
https:///mcp
您可以覆盖默认值:
go run . /absolute/path/to/expose \
--tailscale-path /mcp \
--tailscale-port 443 \
--tailscale-hostname my-machine.ts.net要禁用尾标尺曝光:
go run . /absolute/path/to/expose --no-tailscale环境变量
LOCALFILES_MCP_ROOT(替代--root)LOCALFILES_MCP_TOKEN(替代--token)
MCP端点
POST /mcp 接受JSON-RPC请求。
支持的方法:
initializetools/listtools/call
- 工具 list_files: - path (字符串,默认值 .) - recursive (bool,默认值 false) - glob (string,可选)--按glob模式过滤结果(例如。 *.go, **/*.test.js).设置时表示递归。 - 工具 read_file: - path (字符串,必填) - max_bytes (int,默认从 --max-file-bytes) - offset (int,可选)--部分读取时从1开始的起始行号 - limit (int,可选)--返回的最大行数 - 工具 search_files: - path (字符串,默认值 .)--要在其中搜索的目录 - query (string,必填)--要搜索的文本 - case_sensitive (bool,默认值 false) - max_matches (int,默认值 100) - max_bytes_per_file (int,可选)--跳过大于此值的文件
ChatGPT设置说明
- 打开ChatGPT应用程序。
- 添加具有端点的自定义MCP服务器:
- 远程URL: https:///mcp - 头球 Authorization: Bearer
- 使用工具
list_files,read_file,以及search_files.
如果您不提供令牌,则会生成仪表板中启动时显示的令牌。
尾垢暴露内部构件
该过程调用 tailscale serve 使用您配置的值,并在进程退出或崩溃时删除该映射。
当前命令模式:
- `tailscale serve --https= --set-path =http://
`
- 拆卸:
tailscale serve --https= --set-path =off并回落到tailscale serve reset如有需要
交互模式
默认情况下,二进制文件运行一个受Wireshark启发的终端仪表板,其中包含:
- 固定顶部栏:端点、正常运行时间、实时/暂停状态、请求计数器
- 固定底部栏:键绑定提示或过滤器输入
- 颜色编码的可滚动请求表(绿色2xx,红色错误,黄色401)
- 带有可扩展请求参数和元数据的详细信息检查器窗格
- 在第一个请求到达之前显示设置说明
键盘快捷键:
j/k或箭头:移动选择g/G:跳到顶部/底部ctrl-d/ctrl-u:半页滚动enter:展开/折叠检查器详细信息space:暂停/恢复直播/:筛选器(tool:read_file,status:200,-status:401,自由文本)c:清除事件日志q:退出
使用禁用仪表板 --no-tui 如果你需要普通原木。
测试
go test ./...