GitHub の MCP Server を Go で構築する
AI 開発が進む中で、LLM と様々なデータソース・ツールを連携させる標準的な方法が求められています。
そんな中、Claude を開発する Anthropic 発の MCP (Model Context Protocol) が急速に注目を集めています。
新しい技術をキャッチアップするには手を動かしてみるのが一番!
ということで本記事では、GitHub 公式の GitHub MCP Server を Go で構築する方法を解説します。
MCP とは?
MCP は、アプリケーションが LLM にコンテキストを提供するためのプロトコルです。
USB-C が様々なデバイスを接続する標準規格であるように、「MCP は AI 開発における USB-C ポート」と例えられることもあります。
MCP のアーキテクチャ
MCP は次の主要コンポーネントで構成されています:
(引用:https://modelcontextprotocol.io/introduction)
- MCP Host - MCP を通じてデータにアクセスするプログラム (Claude や VS Code など)
- MCP Server - 特定の機能を MCP を通じて提供するプログラム
- Data Source - ローカルのファイル、データベース、API など、MCP Server がアクセスするリソース
その他の詳細については、MCP 公式ドキュメントを参照してください。 https://modelcontextprotocol.io/introduction
今回のアーキテクチャ
日本時間 4 月 5 日に、本家 GitHub が Go 製の GitHub MCP Server をオープンソースで公開しました!
この記事では、そのリリースされたばかりの GitHub MCP Server を Claude Desktop から利用します。
つまり
- MCP Host - Claude Desktop
- MCP Server - GitHub MCP Server
- Data Source - GitHub API
という構成になります。
Go の環境構築
README にある通り Docker で動かせますが、新しいマシンで Go の環境構築もしておきたかったので、今回は macOS で進めます。
Go のインストール(macOS)
Homebrew で Go をインストールします。
brew install go
インストールとバージョンを確認。
which go
# -> /opt/homebrew/bin/go
go version
# -> go version go1.24.2 darwin/arm64
Go の環境設定
ワークスペースを作成。
mkdir -p ./go/{bin,pkg,src}
cd ./go/src
環境変数を設定し、パスを通す。
# ~/.zshrc など
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
設定を反映。
source ~/.zshrc
これで Go の開発環境が整いました。
次に GitHub MCP Server を構築していきましょう。
GitHub MCP Server のセットアップ
準備
GitHub のアクセストークンが必要となるので、README を参考に作成しておいてください。
リポジトリのクローン
まずは GitHub が公開している MCP Server のリポジトリをクローンします:
# リポジトリをクローン
cd ./go/src
git clone [email protected]:github/github-mcp-server.git
cd github-mcp-server
ビルド
ソースをビルドします。 カレントディレクトリに github-mcp-server
というバイナリが生成されます。
go build ./cmd/github-mcp-server
サーバーを起動
バイナリを実行して MCP Server が正常に起動するか確認しておきます。
サーバーは Claude Desktop が自動で起動するので停止しておいてください。
export GITHUB_PERSONAL_ACCESS_TOKEN="YOUR_GITHUB_PERSONAL_ACCESS_TOKEN"
./github-mcp-server stdio
# -> GitHub MCP Server running on stdio
これでローカルマシンで MCP Server が起動できるようになりました!
Claude Desktop での MCP Server の設定
VS Code や Cline など MCP に対応した MCP Host はいくつかありますが、今回は MCP の生みの親である Anthropic が開発する Claude Desktop (以下 Claude) を利用します。
Claude のインストール
現時点で Web 版は MCP に対応していないので、こちらから Claude のデスクトップアプリをインストールしてください。
MCP Server の設定方法
ログインが完了したら、Claude のアプリ選択中に表示されるメニューから Settings > Developer > Edit Config を選択してください。
設定ファイル claude_desktop_config.json
を任意のエディタで開いたら、以下の設定を追加してください。
{
"mcpServers": {
"github": {
"command": "/Users/your-name/go/src/github-mcp-server/github-mcp-server",
"args": ["stdio"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PERSONAL_ACCESS_TOKEN"
}
}
}
}
設定が完了したら、変更を反映するためにアプリを再起動してください。
GitHub MCP Server の利用方法
設定が正しくできていれば、チャット入力欄にハンマーアイコンが表示されているはずです。
横の数字は利用可能な機能 (Tool) の数です。
クリックすると Tool の一覧が表示されます。
あとはいつも通り Claude に話しかけると、依頼内容に応じて Claude が MCP Server 経由で GitHub にアクセスし、必要な情報を取ってきてくれたり、処理を実行してくれたりします。
たとえば「指定したリポジトリに Issue 作って」とお願いするとこの通り。
他にも
- リポジトリの最近のコミット履歴を表示して
- リポジトリの Issue 一覧を取得して
など GitHub API が提供している機能は、ほとんどチャットインターフェースで実行できちゃいます。
自然言語をもとによしなに処理を実行する様子は、やはり何度見てもワクワクしますし、一気にエージェント感が増しますね!
MCP の将来性
MCP が広まることで以下のような変化が起きそうだなと考えています。
- 標準規格化によりデベロッパー体験が改善され、MCP Server の開発が加速する
- LLM でできることが飛躍的に増え、それを利用する一般ユーザーも増えていく
- アプリや Web ブラウザの接触時間が減り、LLM アプリが主要なユーザーインターフェースになっていく
レイテンシーが改善されれば、音声がメインになるかも?
いずれにしても今後が楽しみです!
次のステップ
今回は MCP Server 自体は実装していないので、今度はそちらも紹介してみたいと思います。
ちなみに、LLM をフル活用して MCP Server を実装するベストプラクティスも確立してきているようです。
https://modelcontextprotocol.io/tutorials/building-mcp-with-llms
上記ドキュメントを参考にワンプロンプトで生成した Google Calendar の MCP Server がこちら。
https://github.com/masa1023/google-calendar-mcp-server
紹介されていた LLM に与えるコンテキストのクオリティが素晴らしく、一撃でかなり精度高くコードが生成されました。
プロンプトエンジニアリング恐るべし。
雰囲気だけ掴みたい方は、以下の動画を指定時間から 2 分ほど視聴してみてください。
https://youtu.be/v_6EXt6T83I?si=1ew0RdtCiLTbS0p4&t=957
このように実装方法に型がもたらされたことで、LLM による実装がしやすくなったというのも MCP の大きなメリットですね。
まとめ
この記事では、GitHub の MCP Server を Go で構築する方法を解説しました。
MCP の基本概念から始まり、Go の開発環境の構築、MCP Server のセットアップ、Claude での設定方法まで一連のプロセスを紹介しました。
自分が実装した MCP Server が世界中の人に使われる可能性があるのも、このアーリーフェーズの醍醐味だと思います。
既存の MCP Server を活用しつつ、足りないものは自分で作ってもっと LLM を便利にしていきましょうー!