Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
詳解 MCP Go SDK / MCP Go SDK
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ktr
December 05, 2025
3
550
詳解 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
450
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.2k
つよくてニューゲーム / NewGame++
ktr_0731
0
1.1k
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
14k
Docker and Python
trallard
47
3.7k
Statistics for Hackers
jakevdp
799
230k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Six Lessons from altMBA
skipperchong
29
4.1k
Building the Perfect Custom Keyboard
takai
2
680
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Odyssey Design
rkendrick25
PRO
1
490
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Done Done
chrislema
186
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
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