GitHubのAPIと連携し、リポジトリのファイル操作、リポジトリ管理、検索機能などを提供するModel Context Protocol(MCP)サーバーをDockerコンテナとして提供します。
GitHub Personal Access Tokenを作成します
repo
スコープ(「プライベートリポジトリの完全な制御」)を選択
public_repo
スコープのみを選択.env
ファイルにトークンを設定:
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here
# Dockerイメージのビルド
docker build -t mcp/github -f src/github/Dockerfile .
docker run -it --rm -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN -p 5000:5000 mcp/github
# .envファイルを作成してトークンを設定
cp .env.template .env
# 環境変数を編集
nano .env
# 起動
docker-compose up -d
これにより、2つの異なるポート(5002と5003)でGitHub MCPサーバーが起動します。 コンテナはttyモードで起動し、stdioインターフェースを通じて通信を待機します。
MCPサーバーは標準入出力(stdio)を介して通信するように設計されています。Cursorと連携するには、claude_desktop_config.json
に以下の設定を追加してください:
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}
この設定により、Cursorが必要なときにだけMCPサーバーを起動し、処理が完了すると自動的に終了します。
MCPサーバーは、ツール名とその入力パラメータを含むメッセージ形式でリクエストを受け付けます。
curl -X POST http://localhost:5002/respond \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": {
"tool_name": "create_or_update_file",
"input": {
"owner": "your-username",
"repo": "your-repo",
"path": "example.txt",
"content": "Hello, world!",
"message": "Add example file",
"branch": "main"
}
}
}
]
}'
curl -X POST http://localhost:5002/respond \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": {
"tool_name": "search_repositories",
"input": {
"query": "modelcontextprotocol"
}
}
}
]
}'
curl -X POST http://localhost:5002/respond \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": {
"tool_name": "get_file_contents",
"input": {
"owner": "octocat",
"repo": "Hello-World",
"path": "README.md"
}
}
}
]
}'
GitHub MCPサーバーは以下の機能を提供します:
create_or_update_file
- リポジトリに単一ファイルを作成/更新push_files
- 複数ファイルを一度のコミットでプッシュsearch_repositories
- GitHubリポジトリを検索create_repository
- 新しいGitHubリポジトリを作成get_file_contents
- ファイルまたはディレクトリの内容を取得create_issue
- 新しいイシューを作成create_pull_request
- 新しいプルリクエストを作成fork_repository
- リポジトリをフォークcreate_branch
- 新しいブランチを作成list_commits
- ブランチのコミット一覧を取得list_issues
- リポジトリのイシュー一覧を取得update_issue
- 既存のイシューを更新add_issue_comment
- イシューにコメントを追加search_code
- コードを検索search_issues
- イシューとプルリクエストを検索search_users
- GitHubユーザーを検索get_issue
- 特定のイシューの詳細を取得get_pull_request
- 特定のプルリクエストの詳細を取得list_pull_requests
- プルリクエスト一覧を取得create_pull_request_review
- プルリクエストのレビューを作成merge_pull_request
- プルリクエストをマージget_pull_request_files
- プルリクエストの変更ファイル一覧を取得get_pull_request_status
- プルリクエストのステータスを取得update_pull_request_branch
- プルリクエストのブランチを更新get_pull_request_comments
- プルリクエストのコメントを取得get_pull_request_reviews
- プルリクエストのレビューを取得詳細な各ツールの入力パラメータや使用方法については、公式リポジトリのドキュメントを参照してください。
このプロジェクトは、元のMCP serverと同じMITライセンスのもとで提供されています。
Seamless access to top MCP servers powering the future of AI integration.