my-mcp-servers

my-mcp-servers

0

This project is a Dockerized MCP server that interfaces with GitHub's API to facilitate operations like file management, repository search, and issue tracking, providing automated branch creation, comprehensive error handling, and advanced search features.

Dockerized GitHub MCP Server

GitHubのAPIと連携し、リポジトリのファイル操作、リポジトリ管理、検索機能などを提供するModel Context Protocol(MCP)サーバーをDockerコンテナとして提供します。

機能

  • 自動ブランチ作成: ファイル作成/更新時やpush時に、存在しないブランチを自動的に作成
  • 包括的なエラーハンドリング: 一般的な問題に対する明確なエラーメッセージを提供
  • Gitヒストリー保持: 操作は強制pushを使わず適切なGitヒストリーを維持
  • バッチ操作: 単一ファイルと複数ファイルの両方の操作をサポート
  • 高度な検索: コード、イシュー/PR、ユーザーの検索をサポート

セットアップ

1. GitHub Personal Access Tokenの準備

  1. GitHub Personal Access Tokenを作成します

    • GitHubの設定 > 開発者設定 > Personal access tokenに移動
    • このトークンがアクセスできるリポジトリを選択(Public、All、または特定のリポジトリ)
    • repoスコープ(「プライベートリポジトリの完全な制御」)を選択
      • または、公開リポジトリのみを操作する場合はpublic_repoスコープのみを選択
    • 生成されたトークンをコピー
  2. .envファイルにトークンを設定:

    GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here
    

2. Dockerによるビルドと起動

ビルド手順
# Dockerイメージのビルド
docker build -t mcp/github -f src/github/Dockerfile .
起動手順(docker runの場合)
docker run -it --rm -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN -p 5000:5000 mcp/github
複数コンテナ起動(docker-compose)
# .envファイルを作成してトークンを設定
cp .env.template .env
# 環境変数を編集
nano .env
# 起動
docker-compose up -d

これにより、2つの異なるポート(5002と5003)でGitHub MCPサーバーが起動します。 コンテナはttyモードで起動し、stdioインターフェースを通じて通信を待機します。

3. Cursorでの使用方法

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サーバーは、ツール名とその入力パラメータを含むメッセージ形式でリクエストを受け付けます。

リクエスト例(/respond エンドポイント)

ファイルの作成または更新
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サーバーは以下の機能を提供します:

  1. create_or_update_file - リポジトリに単一ファイルを作成/更新
  2. push_files - 複数ファイルを一度のコミットでプッシュ
  3. search_repositories - GitHubリポジトリを検索
  4. create_repository - 新しいGitHubリポジトリを作成
  5. get_file_contents - ファイルまたはディレクトリの内容を取得
  6. create_issue - 新しいイシューを作成
  7. create_pull_request - 新しいプルリクエストを作成
  8. fork_repository - リポジトリをフォーク
  9. create_branch - 新しいブランチを作成
  10. list_commits - ブランチのコミット一覧を取得
  11. list_issues - リポジトリのイシュー一覧を取得
  12. update_issue - 既存のイシューを更新
  13. add_issue_comment - イシューにコメントを追加
  14. search_code - コードを検索
  15. search_issues - イシューとプルリクエストを検索
  16. search_users - GitHubユーザーを検索
  17. get_issue - 特定のイシューの詳細を取得
  18. get_pull_request - 特定のプルリクエストの詳細を取得
  19. list_pull_requests - プルリクエスト一覧を取得
  20. create_pull_request_review - プルリクエストのレビューを作成
  21. merge_pull_request - プルリクエストをマージ
  22. get_pull_request_files - プルリクエストの変更ファイル一覧を取得
  23. get_pull_request_status - プルリクエストのステータスを取得
  24. update_pull_request_branch - プルリクエストのブランチを更新
  25. get_pull_request_comments - プルリクエストのコメントを取得
  26. get_pull_request_reviews - プルリクエストのレビューを取得

詳細な各ツールの入力パラメータや使用方法については、公式リポジトリのドキュメントを参照してください。

注意事項

  • アクセストークン: GitHub Personal Access Tokenは必要なスコープ(repoまたはpublic_repo)を持つものを使用してください。APIレート制限にも注意してください。
  • リクエスト形式: MCPのプロトコルに準拠し、各メッセージはroleとcontent(中にtool_nameとinput)を含む必要があります。
  • stdioモード: このMCPサーバーはHTTPサーバーではなく、標準入出力(stdio)を介して通信するよう設計されています。Cursorなどのツールから呼び出して使用するのが最適です。

ライセンス

このプロジェクトは、元のMCP serverと同じMITライセンスのもとで提供されています。