リモート開発メインのソフトウェア開発企業のエンジニアブログです

GitHub MCP Server をカスタマイズして Organization にメンバーを招待できる様にした

最近は AI エージェント関連の調査をしていて、MCP サーバーもよく触っていますが、少し前に GitHub MCP Server が GA になったので早速ある業務の効率化に使えないか試してみました。

その業務では所定の Organization に新しいメンバーを追加する必要があるのですが、調べてみると執筆時点(2025年10月)では Organization への Invitation を送る機能には対応していませんでした。Organization 関連のツールは search_orgs だけの様です。

このままでは使えないと思ったのですが、幸いサーバーのコードはオープンソースとして github/github-mcp-server で公開されておりローカルでも動作させる事ができる様です。そこで、今回は必要な機能を自分で実装する事にしました。

準備

まずは GitHub で github/github-mcp-server を Fork してチェックアウトし、ビルドします。ビルドはシンプルに以下でできました:

go build -o github-mcp-server cmd/github-mcp-server/main.go
Moba Pro

起動と動作確認

バイナリができたので、これを起動します。

なお、このコードベースでは stdio モードのみサポートしています。GitHub はこのコードベースをベースに内部の非公開リポジトリでリモートサーバーを別途開発しているみたいです。

The remote GitHub MCP server is built using this repository as a library, and binding it into GitHub server infrastructure with an internal repository.

https://github.com/github/github-mcp-server/blob/84ae0092e69085aef67a8f7e88d8d0eb25e7e1ce/docs/remote-server.md

認証は GitHub の PAT(Personal Access Token)を GITHUB_PERSONAL_ACCESS_TOKEN 環境変数に設定する事ができるのでそれを使いました。

export GITHUB_PERSONAL_ACCESS_TOKEN="your_token_here"

stdio なのでこんな感じでテストできます(結構長々と出力されます):

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | ./github-mcp-server stdio --toolsets all | jq

Organization 招待の機能実装

さて、今回は Organization に招待する API を呼び出すツールを実装します。ドキュメントは こちらになります。

いきなり完成形になってしまいますが、実装した物が以下になります。

https://github.com/github/github-mcp-server/pull/1226

※一応今回プルリクとして出していますが、反応がイマイチなのでマージはされないかもしれません。使ってみたい方はこのブランチをチェックアウトして go build -o github-mcp-server cmd/github-mcp-server/main.go してください。

動作確認

PAT についての注意点

その前に PAT について注意があります。今回は Organization への招待を行うので、事前にその権限が付いた PAT を用意する必要があります。これが結構わかりづらい(と個人的に思った)んですが、自分自身のユーザーの PAT ではなく、対象となる Organization の PAT を発行する必要があります。ちなみにこれには自分自身がその Organization の Owner である必要があります。具体的には GitHub の Fine-grained token 作成ページから新規に Fine-grained token を作る際、”Resource owner” で自分自身ではなく、対象の Organization を選択します。

なお、必要な権限は “Members” の Read and write 権限になります。

modelcontextprotocol/inspector を使って動作確認

先ほどは stdio の簡単なチェックで echo を使いましたが、今回はもう少し複雑になるので @modelcontextprotocol/inspector を使いたいと思います。

以下を実行します:

npx @modelcontextprotocol/inspector -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN ./github-mcp-server stdio --toolsets orgs

うまく動作するとブラウザが立ち上がります。

左下の “Connect” で接続します。そうすると右側の画面が変わります。

メニューから “Tools” を選択し、”List Tools” を実行してみます。

実装した “create_org_invitation” が確認できます。これを早速実行してみましょう。一覧からこれをクリックします。そうすると右側にフォームが出てくるので、必要な情報を入れて Submit してみます。email または invitee_id(GitHub User ID)のいずれかは必須になります。今回は email を使って mobalab org に招待したいと思います。値を入れて “Run Tool” を実行します。

招待成功

成功しました。見切れていますが、”Total Result: Success” の下に JSON で結果が出力されています。

早速 GitHub の方を確認してみましょう。Organization の People から “Invitations” を見てみると、無事に招待が飛んでいる様です。

メールによる通知も飛んできました。

番外:AI エージェントで動作させてみる

単体テストで動作確認できたので、一応 AI エージェントとも連携してみようと思います。適当なエージェントの MCP 設定に今回ビルドした MCP Server を stdio モードで追加します。今回は Claude Desktop を使いました。以下は設定例です:

{
  "mcpServers": {
    "github": {
      "command": "/path/to/github-mcp-server",
      "args": ["stdio", "--toolsets", "orgs"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

以下は実際に動かしてみた所です。無事に招待ができました。

まとめ

  • GitHub MCP Server は公式がホストしている Remote Server が存在するが、ローカルで stdio として動作させる事もできる
  • コードは OSS として公開されているので自分でカスタマイズも可能
  • カスタマイズしたコードは本体にプルリクを投げる事ができる。このコードは Remote Server でも使われているので、もしかしたら自分の成果物が取り込まれるかもしれない

← 前の投稿

次の投稿 →

🛡️SSHホストキー変更警告が出たときの安全な対処法(セキュリティ視点)

コメントを残す