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
0
77
詳解 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
360
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
1k
Featured
See All Featured
Building Adaptive Systems
keathley
44
2.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Balancing Empowerment & Direction
lara
5
780
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
120
20k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
GitHub's CSS Performance
jonrohan
1032
470k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
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