mcpField
M
mcp-dino

mcp-dino

ローカル
github.com/shennawardana23開発ツール010 週間前に更新

mcp-dino について

mcp-dinoは、恐竜データとインタラクティブなダッシュボードを通じて、MCPツール、リソース、MCP Appsを示すGo製のリファレンス実装です。MCPやGoサーバーの実装を学ぶ開発者向けで、ブラウザー単独でも表示できます。

主な機能

  1. 01恐竜関連の3つのツール
  2. 02MCP Appとしてのインタラクティブなダッシュボード
  3. 03stdioとStreamable HTTPに対応
  4. 04HTMLリソースをバイナリに埋め込み
  5. 05APIキーなしで動作

活用シーン

  1. 01GoでのMCPサーバー実装の学習
  2. 02MCP Appsの対話型UIのテスト
  3. 03クライアントやブラウザーで恐竜データを表示

MCP 対応

stdioとStreamable HTTPに対応するMCPサーバーで、3つのツール、HTMLリソース、MCP Appsによるダッシュボードを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbdino-mcp-darwin-arm64.mcpb0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

dino-mcp

インタラクティブな HTML ダッシュボード UI を備えた、本番環境対応の MCP サーバーです — Go で記述され、使いやすさにもこだわっています。

Go MCP Go SDK Gin Tests License Binary Size


📋 目次


🦕 概要と理由

dino-mcp は、最新の MCP スタックの各レイヤーをすべて紹介する、Go による Model Context Protocol(MCP) のリファレンス実装です。

レイヤー実装重要な理由
トランスポートstdio + Streamable HTTPClaude Desktop とウェブブラウザーの両方で動作します
MCP Apps@modelcontextprotocol/ext-apps App classClaude Desktop の iframe でインタラクティブな HTML UI を表示します
ツールdino_think、dino_ask、dino_dashboard型付きの Go ハンドラー、構造化された JSON 結果
リソース//go:embed HTML → text/html;profile=mcp-app約 11MB の自己完結型バイナリで、実行時の依存関係はゼロです

MCP サーバーを一から構築する場合も、MCP Apps プロトコルを学ぶ場合も、Go、Gin、ext-apps SDK の連携例をお探しの場合も、このプロジェクトがお役に立ちます。


⚡ クイックスタート

# Clone & enter
git clone https://github.com/shennawardana23/mcp-dino.git && cd mcp-dino

# Build & run in one shot (≈2 seconds)
make build-fast && make dev-http

# Open the standalone dashboard
open http://localhost:9010/dashboard
出力例 — クリックして展開
=== dino-mcp server ===
Transport: http
Listening on :9010

[GIN] 2026/06/21 - 12:30:00 | 200 | 4.2ms | ::1 | GET "/dashboard"
[GIN] 2026/06/21 - 12:30:01 | 200 | 2.1ms | ::1 | GET "/api/dinosaurs"

🏗 アーキテクチャの概要

flowchart TB
  subgraph CLI["CLI Layer"]
    STDIO["stdio subcommand"]
    HTTP["http subcommand"]
  end

  subgraph SERVER["Server (internal/server/)"]
    GIN["Gin Router :9010"]
    MCPH["MCP StreamableHTTPHandler"]
    CORS["CORS Middleware"]
    TOOLS["Tools: think · ask · dashboard"]
    RES["Resources: //go:embed HTML"]
  end

  subgraph UI["View (ui/src/)"]
    APP["ext-apps App class"]
    POST["postMessage protocol"]
  end

  subgraph FALLBACK["Standalone Fallback"]
    DASH["/dashboard (HTML)"]
    API["/api/dinosaurs (JSON)"]
  end

  CLI --> GIN
  GIN --> CORS
  CORS --> MCPH
  MCPH --> TOOLS
  TOOLS --> RES
  RES --> APP
  APP --> POST
  MCPH -.->|"MCP Apps"| APP
  GIN -.->|"direct route"| DASH
  GIN -.->|"direct route"| API

  style CLI fill:#1a1a2e,color:#e0e0e0,stroke:#2d2a44
  style SERVER fill:#1a1a2e,color:#e0e0e0,stroke:#2d2a44
  style UI fill:#1a1a2e,color:#e0e0e0,stroke:#2d2a44
  style FALLBACK fill:#1a1a2e,color:#e0e0e0,stroke:#2d2a44
  style STDIO fill:#2d2a44,color:#a78bfa
  style HTTP fill:#2d2a44,color:#a78bfa
  style GIN fill:#0099e5,color:#fff
  style MCPH fill:#a78bfa,color:#fff
  style TOOLS fill:#22c55e,color:#fff
  style RES fill:#22c55e,color:#fff
  style APP fill:#facc15,color:#000
  style POST fill:#facc15,color:#000
  style DASH fill:#f87171,color:#fff
  style API fill:#f87171,color:#fff

データは 3 つの経路を通って流れます:

経路プロトコルクライアント用途
MCP ツールstdio 上の JSON-RPCClaude Desktopテキストツール(dino_think、dino_ask)
MCP Appsstdio 上の JSON-RPC + postMessageClaude Desktop iframeインタラクティブ UI(dino_dashboard)
スタンドアロンHTTP GETブラウザー直接アクセス(/dashboard、/api/dinosaurs)

✨ 機能

MCP 標準への準拠
機能ステータス備考
ツール(tools/list、tools/call)✅ 完了型付けされた 3 つのツールと構造化 JSON レスポンス
リソース(resources/list、resources/read)✅ 完了//go:embed の HTML を ui:// URI で提供
MCP Apps プロトコル✅ 完了_meta.ui.resourceUri + ui/initialize ハンドシェイク
stdio トランスポート✅Claude Desktop、Cursor、Copilot
Streamable HTTP✅MCP Inspector、curl、ブラウザー、トンネル
SSE トランスポート❌ 削除済みMCP 仕様 v2025-11-25 で非推奨
開発者エクスペリエンス
  • 3 秒のビルドサイクル — make build-fast && make dev-http
  • 7 つの統合テスト — make test ですべてのプロトコルメソッドをテスト
  • インタラクティブなデバッグ — make test-inspector で MCP Inspector を起動
  • リモートテスト — make run-tunnel で公開 trycloudflare.com URL を作成
  • API キー不要 — すべての恐竜データがバイナリに組み込まれています
  • ランタイム依存関係ゼロ — HTML を埋め込んだ単一の静的バイナリ
インタラクティブなダッシュボード

dino_dashboard ツールは、Claude Desktop の iframe 内に HTML のカードグリッドを表示します。

  • 食性でフィルター — 肉食、草食、またはすべてを表示
  • 時代でフィルター — 三畳紀、ジュラ紀、白亜紀
  • 12 種の恐竜 — T-Rex から Velociraptor まで
  • フォールバックモード — http://localhost:9010/dashboard を直接開く

注:フィルターはツールの呼び出し時にサーバー側で適用されます。特定のフィルターで開くと、アプリ内のフィルターボタンで絞り込めるのは同じ結果セット内だけです。最初の呼び出しで除外された種を再び表示することはできません。

HTML ビューは公式の @modelcontextprotocol/ext-apps SDK で構築され、postMessage を介した JSON-RPC で通信します。


🎮 試してみる

Claude Desktop で
Show me the dinosaur dashboard with carnivores

→ Claude が MCP App を検出 → iframe を表示 → フィルター可能な恐竜カードが表示されます

ブラウザーで
open http://localhost:9010/dashboard

→ 組み込み REST API からすべての恐竜データを取得するスタンドアロン HTML

MCP Inspector で
make test-inspector

→ http://localhost:5173 を開く → http://localhost:9010/mcp に接続

curl で
# Initialize
curl -s -X POST http://localhost:9010/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}' \
  | python3 -m json.tool

# List tools
SID="<session-id-from-above>"
curl -s -X POST http://localhost:9010/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: $SID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | python3 -m json.tool

# Call dino_think
curl -s -X POST http://localhost:9010/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: $SID" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"dino_think","arguments":{}}}' \
  | python3 -m json.tool

🔧 ツールのリファレンス

ツール種類入力出力プロンプトの例
dino_thinkテキスト{}ランダムな豆知識 + 種の JSON「恐竜の豆知識を教えて」
dino_askテキスト{"question": "..."}回答 + 質問の JSON「T-Rex は何を食べていたの?」
dino_dashboardMCP App{"filter": "Carnivore"}HTML iframe + JSON データ「肉食恐竜を見せて」

dino_ask は現在、質問に関係なく同じ恐竜時代の概要を返します。質問文に応じた分岐にはまだ対応していません。既知の制限事項として記録されています。

dino_think のレスポンス例:

{
  "content": [
    { "type": "text", "text": "🦕 Did you know? The Velociraptor was only about the size of a turkey!" }
  ],
  "structuredContent": {
    "fact": "The Velociraptor was only about the size of a turkey",
    "species": "Velociraptor"
  }
}

dino_dashboard のレスポンス例:

{
  "content": [
    { "type": "text", "text": "Displaying dinosaur dashboard with 4 dinosaurs (filter: Carnivore)" }
  ],
  "structuredContent": {
    "filter": "Carnivore",
    "dinosaurs": [
      {
        "name": "Tyrannosaurus Rex",
        "period": "Cretaceous",
        "diet": "Carnivore",
        "length": "40 ft (12 m)",
        "weight": "9 tons (8,000 kg)",
        "funFact": "T-Rex had the strongest bite of any land animal ever",
        "imageStyle": "bg-red-900"
      }
    ],
    "timestamp": "2026-06-21T12:00:00Z"
  }
}

💬 Claude Desktop との連携

CLI モード(stdin/stdout)

バイナリの場所を確認し、claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "dino-mcp": {
      "command": "/absolute/path/to/mcp-dino/bin/dino-mcp",
      "args": ["stdio"]
    }
  }
}

保存したら Claude Desktop を再起動します。チャット中にツールにハンマーアイコン(🔨)が表示されます。クリックして直接呼び出すか、Claude に判断させてください。

HTTP モード(デバッグ用)
make dev-http
# Server starts on :9010

🛠 開発

前提条件
ツールバージョン用途
Go≥ 1.25サーバーバイナリ
Node.js≥ 18UI のビルド(Vite)
cloudflared任意リモートテスト用のトンネル
コマンド
# Build — three options
make build            # Full: Vite UI + Go binary
make build-fast       # Quick: Go binary only (reuses existing UI)
make build-ui         # Vite UI only

# Run
make dev-http         # HTTP mode with verbose logging
make run-stdio        # stdio mode for Claude Desktop
make run-tunnel       # HTTP + Cloudflare Tunnel

# Test & verify
make test             # 7 integration tests — all must pass
make test-inspector   # Launch MCP Inspector in browser
make lint             # go vet + go fmt

# Utility
make help             # All targets with descriptions
make clean            # Remove all build artifacts
プロジェクト構成
mcp-dino/
├── bin/                          # Go build output (~11MB static binary)
├── cmd/dino-mcp/main.go          # CLI entry point (stdio | http | help)
├── internal/
│   ├── server/
│   │   └── server.go             # Composition root: mcp.Server + Gin + CORS
│   ├── tools/
│   │   ├── tools.go              # Shared types, constants, helpers
│   │   ├── think.go              # RegisterThink (dino_think tool)
│   │   ├── ask.go                # RegisterAsk (dino_ask tool)
│   │   └── dashboard.go          # RegisterDashboardTool + 12 dino species + REST API
│   └── resources/
│       ├── dashboard.go          # RegisterDashboardResource + //go:embed HTML
│       └── dashboard_ui.html     # Vite-built HTML (354KB)
├── ui/
│   └── src/
│       └── mcp-app.ts            # ext-apps App class + postMessage
├── docs/                         # Diátaxis documentation (see below)
├── test_mcp.sh                   # 7 integration tests
├── AGENTS.md                     # AI agent instructions (canonical)
├── ARCHITECTURE.md               # C4 diagrams + sequence flows
├── TECH_DESIGN.md                # Interface contracts + data model
├── Makefile                      # All targets
├── go.mod + go.sum               # Go dependencies
└── README.md                     # ← you are here

🗺 ドキュメントマップ

dino-mcp では Diátaxis フレームワークを採用しています。4 つのドキュメント形式があり、それぞれ異なるニーズに対応します。

対象読者まずはこちら対象者
👋 プロジェクトを初めて利用する方クイックスタートすべての方
🧑‍💻 ツールを追加する方初めてのツール開発者
🦕 恐竜を追加する方恐竜を追加するコンテンツ編集者
🧪 Inspector でテストする方Inspector でテストするQA/開発者
🔍 リファレンスを確認したい方CLI リファレンス運用担当者
🏗 設計を理解したい方アーキテクチャアーキテクト
🤖 AI を利用して実装する方AGENTS.mdAI コーディングエージェント
📚 アーキテクチャを深く理解したい方ARCHITECTURE.mdシニアエンジニア
📐 技術仕様を確認したい方TECH_DESIGN.md実装チーム
⏳ 開発の履歴を確認したい方MEMORY.mdすべてのコントリビューター
📋 ロードマップを確認したい方PLAN.mdステークホルダー
⚖️ 設計上のトレードオフを確認したい方DESIGN.mdアーキテクト
🎯 スキルのリファレンスを確認したい方SKILL.md開発者/AI エージェント
🤝 貢献方法を確認したい方CONTRIBUTOR.mdコントリビューター
📜 行動規範を確認したい方CODE_CONDUCT.mdコミュニティ
📄 ADRdocs/adr/意思決定の履歴を確認する方
🤖 LLM 向けの完全なコンテキストllms-full.txtAI エージェント(RAG)

📊 プロジェクトのステータス

MVP ── Production ── Enhanced UI ── Ecosystem ── Advanced
  ●                    ○               ○             ○
フェーズステータス主な内容
MVP✅ 完了3 つのツール、MCP Apps UI、7 件のテスト、ドキュメント
本番環境🔄 進行中Go のユニットテスト、CI、レート制限、Docker
UI の拡張📅 予定リアルタイムデータ、比較、タイムライン
エコシステム📅 予定Homebrew、GitHub リリース、MCP Registry
高度な機能💭 将来ストリーミングによるツール入力、WebSocket 同期
ビルド指標
指標値
バイナリサイズ約 11 MB(圧縮後)
バイナリ形式Mach-O 64-bit arm64
Go のバージョン1.25
MCP SDK のバージョンv1.7.0
依存関係30 個以上の Go モジュール(すべて間接依存)
UI バンドル354 KB の埋め込み HTML(単一ファイルの Vite)
テストカバレッジ7 件中 7 件の統合テストに合格(シェルベース。Go のユニットテストはまだありません)

📖 さらに読む

リソースリンク
MCP 仕様spec.modelcontextprotocol.io
MCP Go SDKgithub.com/modelcontextprotocol/go-sdk
MCP Apps プロトコルmodelcontextprotocol.io/docs/apps/overview
ext-apps SDKgithub.com/modelcontextprotocol/ext-apps
Gin Web フレームワークgithub.com/gin-gonic/gin
Go プログラミング言語go.dev

❤️ を込めて、Go、 Gin、 MCP Go SDK、 および @modelcontextprotocol/ext-apps を使用して構築

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。