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 を便利にしていきましょうー!