$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
詳解 MCP Go SDK / MCP Go SDK
Search
ktr
December 05, 2025
3
500
詳解 MCP Go SDK / MCP Go SDK
ktr
December 05, 2025
Tweet
Share
More Decks by ktr
See All by ktr
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
430
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1.4k
激動の一年を通じて見えてきた「技術でリードする」ということ
ktr_0731
8
10k
Monorepo における Go テストの差分実行 / Running Differential Go Tests in a Monorepo
ktr_0731
1
380
Designing libraries in Go way
ktr_0731
7
1.6k
Go Modules and Proxy Walkthrough
ktr_0731
8
27k
ソフトウェアの複雑さに立ち向かう技術 / Tackling software complexity
ktr_0731
0
230
Fuzzy finder as a Go library
ktr_0731
3
6.1k
つよくてニューゲーム / NewGame++
ktr_0731
0
1.1k
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
1
660
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
92
From π to Pie charts
rasagy
0
89
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
51
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
120
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
170
Building Applications with DynamoDB
mza
96
6.8k
Documentation Writing (for coders)
carmenintech
77
5.2k
The Language of Interfaces
destraynor
162
25k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
100
Test your architecture with Archunit
thirion
1
2.1k
Transcript
詳解 MCP Go SDK 2025年12月5日 layerx.go #3 @ktr
自己紹介 自己紹介 ktr / きたろー メルカリ → LayerX(2024/04〜) バクラク事業部 プロダクト開発部
バクラク申請・経費精算チーム テックリード © LayerX Inc. 2
MCP (Model Context Protocol) とは
MCP とは https://modelcontextprotocol.io/specification/2025-11-25/architecture © LayerX Inc. 4
MCP Go SDK © LayerX Inc. MCP とは これまではサードパーティ製 (mark3labs/mcp-go
等) のみ 2025年4月に Go チームと Anthropic が共同で公式 SDK を開発開始 2025年7月に modelcontextprotocol/go-sdk として公開 5
MCP Go SDK の設計思想
SDK が掲げる 5 つの要件 要件 説明 完全性 MCP 仕様のすべてを実装可能 言語仕様に即した設計
Go 標準ライブラリの設計パターンに準拠 堅牢性 十分なテストが行われ信頼性が高い 将来対応性 後方互換を保ったまま仕様拡張できる 拡張性 洗練された最小限の API + ミドルウェア © LayerX Inc. MCP Go SDK の設計思想 https://github.com/modelcontextprotocol/go-sdk/blob/main/design/design.md 7
コードを読んでいて特に印象的だった設計ポイントを 2 つ紹介 © LayerX Inc. 8
Design Highlight ① Transport
3 つの抽象 Design ① Transport 層 Session client/server 間のセッション管理 高レベル
API (Prompts、Resources、Tools や Elicitation などの機能) を提供 Transport Connection の確立を担当 Stdio や Streamable HTTP、カスタム実装 Connection 低レベルの読み書きを提供 JSON-RPC メッセージの送受信 © LayerX Inc. 10
シンプルなインターフェース © LayerX Inc. Design ① Transport 層 11
Stdio Transport © LayerX Inc. Design ① Transport 層 12
Streamable HTTP Transport © LayerX Inc. Design ① Transport 層
13
Custom Transport (InMemoryTransport) InMemoryTransports は net.Pipe を使っている © LayerX Inc.
Design ① Transport 層 14
Design Highlight ② ツールの登録
Go におけるツールの登録の壁 © LayerX Inc. Design ② ツールの登録 JSON Schema
ライブラリの必要性 型安全かつ使いやすいツール登録 API の設計が難しい 16
JSON Schema ライブラリの必要性 © LayerX Inc. Design ② ツールの登録 ツールの
InputSchema/OutputSchema は JSON Schema で定義される Go には標準・デファクトの JSON Schema ライブラリが存在していなかった 型の定義や、バリデーションの記述などを包括的にサポートできていなければいけない いくつかスターを集めているライブラリはあるが、どれも継続的にメンテナンスされているとはいえなかった 17
google/jsonschema-go © LayerX Inc. Design ② ツールの登録 公式 SDK と同時期に
Go チームメンバーが開発していた JSON Schema ライブラリ google/adk-go (Google の AI Agent フレームワーク) でも利用されている どういうインターフェースなのかについては後述 18
ツール登録 API の設計 各ライブラリでそれぞれ試行錯誤していた印象 © LayerX Inc. Design ② ツールの登録
リフレクションベース 明示的なスキーマ構築 19
リフレクションベースの例: metoro-io/mcp-golang © LayerX Inc. Design ② ツールの登録 Input の型情報を失わずにハンドラを書ける
JSON Schema の細かな指定はすべて struct tag で行うので複雑 20
明示的なスキーマ構築の例: mark3labs/mcp-go © LayerX Inc. Design ② ツールの登録 細かな指定ができる一方で、ボイラープレートが多くなりがち ハンドラの引数型は自身でマッピングする必要がある
21
MCP Go SDK は両方のアプローチをサポート © LayerX Inc. Design ② ツールの登録
もっともシンプルな使い方の場合、metoro-io/mcp-golang に似た書き味 JSON Schema の細かな指定については後述 22
MCP Go SDK のリフレクション © LayerX Inc. Design ② ツールの登録
型パラメータ In 、 Out を使って型安全にハンドラを定義可能 23
JSON Schema の細かな指定 © LayerX Inc. Design ② ツールの登録 google/jsonschema-go
の For を使ってスキーマを生成可能 24
その他の設計についてもいくつか… (時間があれば)
ミドルウェア © LayerX Inc. http.Handler と同じような設計パターンで実装可能 26
Cancellation © LayerX Inc. 送信中のリクエストをキャンセルする仕組み 他のメッセージと同様 JSON-RPC ベース context を使った直感的なキャンセル処理として実装されている
27
Logging © LayerX Inc. サーバからクライアントに対してログメッセージを送信する仕組み slog.Handler の実装があるので通常の logger のように直感的に利用できる 28
まとめ
まとめ © LayerX Inc. まとめ MCP 仕様を完全にサポートしつつ、Go 標準ライブラリの設計パターンに即した設計 API は必要最小限だが、洗練された抽象により拡張性が高い
google/jsonschema-go による、ジェネリクス + リフレクション中心のスキーマ定義 必要に応じてスキーマの細かいカスタマイズも可能 コードの内部品質が非常に高く、学ぶべき設計が多い 30
リソース © LayerX Inc. まとめ MCP 仕様: https://modelcontextprotocol.io/specification/2025-11-25 公式リポジトリ: https://github.com/modelcontextprotocol/go-sdk
Design Doc: design/design.md Discussion: https://github.com/orgs/modelcontextprotocol/discussions/224 31
ご清聴ありがとうございました @ktr © LayerX Inc. 32