Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
510
詳解 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
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
0
100
Making Projects Easy
brettharned
120
6.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Designing for Performance
lara
610
69k
The Language of Interfaces
destraynor
162
25k
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
31
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Site-Speed That Sticks
csswizardry
13
1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
850
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