git-readonly-mcp
A read-only MCP server that exposes Git history, diffs, refs, and file contents to AI assistants, with strict access controls and security restrictions.
README
Git Readonly MCP
Gitの履歴、差分、参照、ファイル内容をAIセルフレビューへ渡すためのread-only MCPサーバーです。Kiro、Claude Code、Claude Desktop、VS Codeから、同じローカルstdioサーバーを利用できます。
任意のGitコマンド実行機能は公開しません。起動時に許可したworkspace folder、またはrepository root配下に対し、用途別の型付きツールだけを提供します。
Requirements
- Node.js 20以上
- Git 2.43以上を推奨
- 信頼できるローカルGitリポジトリ
Build
npm ci
npm run check
npm run test:integration
成果物は依存関係を含む単一ファイルです。
dist/git-readonly-mcp.mjs
直接起動する場合:
node /path/to/git-readonly-mcp/dist/git-readonly-mcp.mjs \
--workspace-folder /path/to/frontend \
--workspace-folder /path/to/backend \
--repository-root /path/to/projects
--workspace-folderを省略した場合は、プロセスの現在ディレクトリだけを候補にします。指定したfolder自体がGit worktreeのルートでなければ利用不可として一覧へ表示し、親や子のリポジトリは自動探索しません。
--repository-rootは、AIがgit_register_repositoryで後から登録できる親ディレクトリです。指定した親そのものと配下だけを許可し、symlinkを解決した実体が範囲外なら拒否します。任意パスを無制限に許可するoptionはありません。
Placement
個人で複数プロジェクトから利用する場合は、bundleをユーザーディレクトリへ1つだけ置く構成を推奨します。
~/.mcp/git-readonly/git-readonly-mcp.mjs
MCP設定ではこのbundleを絶対パスで指定し、repositoryの許可範囲だけをclient側の--workspace-folderまたは--repository-rootで渡します。bundleの配置場所とGitへのアクセス許可は分離されています。プロジェクト内への配置は、teamで同じversionを固定し、設定もrepositoryで共有したい場合に適しています。
Client configuration
VS Code
単一root用の設定は .vscode/mcp.json に含まれています。multi-root workspaceでは、workspace folder名を明示します。
{
"servers": {
"git-readonly": {
"type": "stdio",
"command": "node",
"args": [
"/absolute/path/to/git-readonly-mcp.mjs",
"--workspace-folder",
"${workspaceFolder:Frontend}",
"--workspace-folder",
"${workspaceFolder:Backend}",
"--repository-root",
"${workspaceFolder}"
]
}
}
}
Kiro
このリポジトリを直接開く場合の設定は .kiro/settings/mcp.json に含まれています。別プロジェクトから利用する場合はbundleとrepositoryを絶対パスで指定します。
提供する15ツールのうち、14個のGit参照ツールはread-onlyとしてautoApproveへ明示的に列挙しています。git_register_repositoryはserverが読める範囲を広げるため、自動承認から除外しています。
{
"mcpServers": {
"git-readonly": {
"command": "node",
"args": [
"/absolute/path/to/git-readonly-mcp.mjs",
"--repository-root",
"/absolute/path/to/projects"
],
"disabled": false,
"autoApprove": [
"git_list_repositories",
"git_status",
"git_log",
"git_show_commit",
"git_diff",
"git_range_diff",
"git_blame",
"git_grep",
"git_list_refs",
"git_list_tree",
"git_read_file",
"git_compare_refs",
"git_list_remotes",
"git_list_remote_refs"
]
}
}
}
Claude Code
claude mcp add --transport stdio --scope project git-readonly -- \
node /absolute/path/to/git-readonly-mcp.mjs \
--workspace-folder /absolute/path/to/repository
またはproject rootの .mcp.json に設定します。
{
"mcpServers": {
"git-readonly": {
"type": "stdio",
"command": "node",
"args": [
"/absolute/path/to/git-readonly-mcp.mjs",
"--workspace-folder",
"/absolute/path/to/repository"
]
}
}
}
Claude Desktop
Developer settingsの claude_desktop_config.json に同じstdio起動設定を追加します。
{
"mcpServers": {
"git-readonly": {
"type": "stdio",
"command": "node",
"args": [
"/absolute/path/to/git-readonly-mcp.mjs",
"--workspace-folder",
"/absolute/path/to/repository"
]
}
}
}
Claude Desktop向けのワンクリック配布用 .mcpb は現在の成果物には含まれません。
Tools
| Tool | Purpose |
|---|---|
git_list_repositories |
設定済みfolderとrepositoryIdを一覧化 |
git_register_repository |
許可されたroot配下のworktreeを登録 |
git_status |
branch、staged、unstaged、untracked状態を取得 |
git_log |
revision、期間、author、message、pathで履歴を検索 |
git_show_commit |
commit metadata、stat、任意のpatchを取得 |
git_diff |
working tree、index、2 revisionを比較 |
git_range_diff |
2つのcommit rangeを比較 |
git_blame |
fileの行単位attributionを取得 |
git_grep |
working tree、index、revisionの内容を検索 |
git_list_refs |
branch、tag、remote-tracking refを一覧化 |
git_list_tree |
revision時点のtreeを一覧化 |
git_read_file |
revision時点のbounded blobを取得 |
git_compare_refs |
merge baseとahead/behind件数を取得 |
git_list_remotes |
URLを開示せずremote名を一覧化 |
git_list_remote_refs |
設定済みpublic anonymous HTTPS remoteのrefを取得 |
最初にgit_list_repositoriesを呼びます。対象が未登録ならgit_register_repositoryへpathを渡し、返されたrepositoryIdを以後のツールへ渡します。ツール結果はstructuredContentとJSON textの両方で返されます。
Security model
- Gitはshellを介さず
spawnします。 - pager、external diff、textconv、credential helper、interactive prompt、optional lock、lazy fetchを抑止します。
- revision rangeは個別parameterからサーバー側で構築します。
- file pathはrepository-relative literalだけを許可します。
- 動的repository登録は、起動時の
--repository-rootをcanonical pathで検証した配下だけに制限します。 - local queryは既定15秒、blameとrange-diffは30秒、remote queryは10秒で停止します。
- stdoutは1 MiB、stderrは64 KiBを上限とします。
- remote問い合わせは設定済みremote名だけを受け取り、資格情報のないHTTPS URLかつpublic IPへ解決される場合だけ
ls-remoteを実行します。 - SSH、HTTP、file URL、private/local address、fetch、pull、push、cloneは許可しません。
このサーバーはsandboxではありません。Git自体が読むrepository metadataを含め、信頼できるworkspaceだけを登録してください。
Development
npm run dev -- --workspace-folder /path/to/repository
npm run lint
npm run typecheck
npm test
npm run build
npm run test:integration
npm run pack:dry-run
MCP Inspectorで確認する場合:
npx @modelcontextprotocol/inspector node dist/git-readonly-mcp.mjs \
--workspace-folder /path/to/repository
ログはstderrへ出力してください。stdio MCPのstdoutへ診断メッセージを出すとJSON-RPC通信が壊れます。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。