mcp文件存储
一个MCP服务器,将私有GitHub存储库作为文本文件的可编辑文件系统公开,可作为无状态Cloudflare Worker部署,兼容自由层。支持单个部署中的多个存储库和多个代理。
这个仓库上的所有代码都是由Claude编写的,如下所示 这个规格.
哲学
目标是为LLM提供与Claude Code在本地运行时相同的文件系统交互——读取、搜索和手术编辑文件,而无需在每次操作中传输全部内容——但通过MCP,因此您可以将其与Claude Projects或任何其他支持MCP的客户端一起使用。工具接口直接基于Claude Code自己的文件系统工具建模,但存在有意的差异:破坏性覆盖被显式覆盖所取代 create_file/delete_file,以及每个回购 .agent_config 文件控制着每个代理可以查看和修改的内容。标记为受保护的文件只能通过GitHub pull请求进行更改,在更改生效之前需要人工审核。标记为隐藏的文件对代理完全不可见。
看 规格.md 有关工具和设计决策的完整详细信息。
设置
1.创建私有GitHub仓库 为您的文件。用至少一个空提交初始化它(git commit --allow-empty -m "init").
2.创建细粒度的个人访问令牌 (GitHub→ 设置→ 开发者设置→ 细粒度令牌)的作用域为该仓库:
- 内容:读写
- 拉取请求:读和写
- 元数据:只读(自动包含)
3.克隆此仓库并配置 .dev.vars:
cp .dev.vars.example .dev.vars填写 .dev.vars:
JWT_SECRET=a-long-random-string
OAUTH_AUTO_APPROVE=true
REPO_CONFIG={
"my-repo": {
"github_token": "github_pat_...",
"owner": "your-github-username",
"repo": "your-repo-name",
"agents": {
"oauth-client-id-alice": {
"agent_id": "alice",
"client_secret": "another-long-random-string"
}
}
}
}JWT_SECRET:用于对所有OAuth令牌进行签名的长随机字符串。旋转它会立即撤销所有活动会话。OAUTH_AUTO_APPROVE:如果true,将跳过授权页面,并以静默方式授予访问权限。个人使用罚款;着手false如果你想要一个明确的批准步骤。agents将OAuth客户端ID映射到{ agent_id, client_secret }客户端ID和密钥是您在MCP客户端的OAuth字段中输入的内容;代理ID是用于.agent_config.
您可以从一个部署中为多个存储库和多个代理提供服务——只需添加更多条目。
4.安装依赖项:
npm install5.部署到Cloudflare Workers:
wrangler deploy
node scripts/push-secrets.jspush-secrets.js 读取 .dev.vars 并通过批量上传所有机密到Cloudflare wrangler secret bulk。每次添加仓库或代理时都可以再次运行它,无需重新部署。
6.创建 .agent_config 在您的GitHub仓库中 定义每个代理可以查看和修改的内容。使用git配置样式部分语法:
[default "hidden"]
**
!general_instructions.txt
[default "protected"]
general_instructions.txt
[alice "hidden"]
!alice/**
[alice "protected"]
!alice/**hidden:与这些gitignore样式的glob模式匹配的文件对代理完全不可见——从列表中排除,不可搜索,读取时“找不到文件”。protected:正常可读,但写操作被重定向到GitHub拉取请求以供人工审查。[default "..."]模式适用于每个代理。附加了特定于代理的模式,因此否定(!)白名单文件是否可以退出默认规则。- 每个连接的代理都必须在中有一个部分
.agent_config。没有分区的代理在每次工具调用时都会出错。 .agent_config它本身是一个系统文件,对所有代理都不可见。
7.连接您的MCP客户端。 将其指向worker URL:
https://your-worker.workers.dev在Claude Projects中,使用该URL添加一个新的MCP连接器,并输入您的 client_id 和 client_secret 在OAuth字段中。Claude将在首次使用时打开一个授权窗口——批准后,您就可以连接了。如果 OAUTH_AUTO_APPROVE=true,窗口自动关闭。
8.在本地运行 (可选,用于开发):
wrangler dev