Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
2
420
詳解 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
420
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
370
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
220
Fuzzy finder as a Go library
ktr_0731
3
6.1k
つよくてニューゲーム / NewGame++
ktr_0731
0
1.1k
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
700
The Language of Interfaces
destraynor
162
25k
Unsuck your backbone
ammeep
671
58k
Producing Creativity
orderedlist
PRO
348
40k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
RailsConf 2023
tenderlove
30
1.3k
Done Done
chrislema
186
16k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
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