mcpField
P
PluggedinMCP

PluggedinMCP

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

PluggedinMCP について

PluggedinMCPはplugged.in Appの設定をもとに複数のMCPサーバーを単一インターフェースへ集約するプロキシサーバーです。ツール、プロンプト、リソースの一元利用に加え、ドキュメント検索と管理にも対応します。

主な機能

  1. 01複数のMCPサーバーを集約
  2. 02ツール、プロンプト、リソースの検出
  3. 03ドキュメントの検索と管理
  4. 04STDIOとStreamable HTTPに対応
  5. 05通知とクリップボード記憶ツール

活用シーン

  1. 01単一接続で複数のMCPサーバーを利用
  2. 02接続元のドキュメントを検索・整理
  3. 03セッションをまたいでクリップボード項目を保存・取得

MCP 対応

下流のMCPサーバーをプロキシ経由で集約し、ツール、リソース、リソーステンプレート、プロンプトをクライアントに提供します。STDIOとStreamable HTTPに対応しています。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": [
"-y",
"@pluggedin/pluggedin-mcp-proxy"
],
"env": {
"PLUGGEDIN_API_KEY": "<PLUGGEDIN_API_KEY>"
}
}
}
}
起動コマンドnpx -y @pluggedin/pluggedin-mcp-proxy
設定が必要な環境変数
PLUGGEDIN_API_KEYシークレット

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@pluggedin/pluggedin-mcp-proxy

ツール

23

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
topicenumいいえ学習する具体的なセットアップトピック。選択肢:getting_started(デフォルト)、api_key、configuration、troubleshootinggetting_started | api_key | configuration | troubleshooting

詳細

plugged.in MCP Hub — プロキシ · ナレッジ · メモリ · ツール

重要

プロジェクトのステータス(2026年10月):オープンソース、コミュニティ主導です。 ホスト型サービスの plugged.in は、別途開発される新しいプラットフォームへ移行中です。移行後、 このリポジトリでは plugged.in は動作しなくなります。コードは現在のライセンスのもとでオープンソースのまま維持され、 コミュニティによる継続を歓迎します。イシュー、プルリクエスト、フォーク、新しいメンテナーを歓迎し、 セルフホストも引き続きサポートされます。移行日はここでお知らせします。移行時点で、現在のサービスは v1.plugged.in に移り、2026年12月31日までそこで稼働します。 この変更について

このクライアントは plugged.in API と通信します。移行前に、接続先を v1.plugged.in に変更するバージョンをリリースします。2026年12月31日以降は、ご自身の pluggedin-app インスタンスを指定してください。

plugged.in ロゴ
AI データ交換の交差点

AI にナレッジ、メモリ、ツールを提供する、単なるプロキシではない統合 MCP ハブです。単一の接続からすべての MCP サーバーを管理・テストし、ドキュメント認識型やメモリ拡張型のワークフローをさまざまなクライアントで実現します。

Version GitHub Stars License TypeScript MCP MCP Badge

📋 概要

plugged.in MCP プロキシサーバーは、複数の Model Context Protocol(MCP)サーバーを単一の統合インターフェースにまとめる、高機能なミドルウェアです。plugged.in App からツール、プロンプト、リソースの設定を取得し、リクエストを適切な基盤の MCP サーバーへインテリジェントにルーティングします。

このプロキシにより、あらゆる MCP クライアント(Claude、Cline、Cursor など)とシームレスに統合できると同時に、plugged.in エコシステムを通じた高度な管理機能を利用できます。

ハブの柱:ナレッジ・メモリ・ツール・プロキシ

ナレッジ(RAG v2/AI ドキュメント交換)
出典情報を考慮した統合ドキュメント検索により、モデルの出力を検索し、根拠を示します。MCP サーバーは、バージョン管理、公開範囲の制御、モデルの出典情報を含むドキュメントを、ライブラリ内で作成・管理できます。組み込みの RAG を使って、接続されているすべてのソースを横断検索し、関連するスニペットとメタデータを返します。

メモリ(永続 AI メモリ)
セッションをまたいで保持される、ワークスペース/プロフィール単位の長期メモリです。ハブは plugged.in App の永続メモリと連携し、エージェントのアクションやインサイトを保存して、タスクをまたいで呼び出せるようにします。組み込みのメモリツールでは、同じ認証モデルのもとで手軽に利用できる get/put/search パターンを提供する予定です。

ツール
組み込み機能と下流の MCP サーバー(STDIO、SSE、Streamable HTTP)を統合します。ツールの検出結果はキャッシュされ、必要に応じて更新できます。ハブレベルの検出では、あらゆる MCP クライアント向けに統合カタログを返します。ハブはツール、リソース、リソーステンプレート、プロンプトに対応しています。

プロキシ
すべてのクライアントを1つの接続でつなぎます。STDIO(デフォルト)または、オプションの API 認証とステートレスモードを備えた Streamable HTTP で実行できます。Claude Desktop、Cline、Cursor、MCP Inspector などで動作します。既存のクライアント設定はそのままに、ポリシーとテレメトリを一元管理できます。

⭐ このプロジェクトが役に立ったら、GitHub でスターを付けていただけると幸いです! より多くの開発者に知ってもらう助けになり、改善を続ける励みになります。

✨ 主な機能

🚀 主な機能
  • 組み込み AI プレイグラウンド:クライアントのセットアップ不要で、Claude、Gemini、OpenAI、xAI を使って MCP をすぐにテストできます
  • あらゆる MCP との互換性:Claude Desktop、Cline、Cursor など、あらゆる MCP クライアントで動作します
  • マルチサーバー対応:STDIO、SSE、Streamable HTTP の MCP サーバーに接続できます
  • 2種類のトランスポートモード:プロキシを STDIO(デフォルト)または Streamable HTTP サーバーとして実行できます
  • 統合ドキュメント検索:組み込みの RAG 機能を使って、接続されているすべてのサーバーを横断検索できます
  • AI ドキュメント交換(RAG v2):MCP サーバーは、出典情報を完全に記録したドキュメントをライブラリ内で作成・管理できます
  • あらゆるモデルからの通知:オプションでメール配信を利用して、リアルタイム通知を受け取れます
  • マルチワークスペースレイヤー:異なる MCP 設定セットをワンクリックで切り替えられます
  • API 駆動型プロキシ:直接検出するのではなく、plugged.in App API から機能を取得します
  • MCP の完全サポート:ツール、リソース、リソーステンプレート、プロンプトに対応しています
  • カスタム指示:MCP プロンプトとしてフォーマットされた、サーバー固有の指示に対応しています
🎯 v1.5.0 の新機能(RAG v2 - AI ドキュメント交換)
  • AI によるドキュメント作成:MCP サーバーがライブラリ内にドキュメントを直接作成できるようになりました
    • モデルの出典情報を完全に追跡(ドキュメントを作成/更新した AI を特定)
    • 変更履歴を含むバージョン履歴
    • SHA-256 ハッシュによるコンテンツの重複排除
    • 複数の形式に対応:MD、TXT、JSON、HTML、PDF など
  • 高度なドキュメント検索:AI フィルタリングに対応した、強化版 RAG クエリ
    • AI モデル、プロバイダー、日付範囲、タグ、ソースの種類でフィルタリング
    • 関連度スコア付きのセマンティック検索
    • キーワードのハイライトを含むスニペットの自動生成
    • ai_generated、upload、api ソースのフィルタリングに対応
  • MCP によるドキュメント管理:
    • ドキュメントの公開範囲を設定:プライベート、ワークスペース、または公開
    • ドキュメントのバージョン間に親子関係を設定
    • プロジェクト単位のスコープに加え、プロフィール単位で整理
    • ドキュメント処理の進捗をリアルタイムで追跡
🎯 v1.4.0 の機能(Registry v2 のサポート)
  • OAuth トークン管理:Streamable HTTP MCP サーバーの OAuth 認証をシームレスに処理します
    • plugged.in App からトークンを自動取得
    • トークンの安全な保存と更新の仕組み
    • クライアント側での認証は不要
  • 強化された通知システム:双方向の通知をサポートします
    • plugged.in App に通知を送信
    • MCP サーバーから通知を受信
    • 通知を既読/未読に設定
    • 通知をプログラムから削除
  • トレンド分析:リアルタイムでアクティビティを追跡します
    • すべてのツール呼び出しを記録・追跡
    • トレンドサーバーの算出に反映
    • 使用状況の指標と人気度に関する分析
  • レジストリとの統合:Registry v2 の機能を完全にサポートします
    • レジストリからサーバーを自動検出
    • インストール状況の追跡と指標
    • コミュニティサーバーをサポート
📦 v1.1.0 の機能
  • Streamable HTTP のサポート:Streamable HTTP トランスポートを使用する下流 MCP サーバーを完全にサポートします
  • HTTP サーバーモード:ポートを設定して、プロキシを HTTP サーバーとして実行します
  • 柔軟な認証:HTTP エンドポイントで任意の Bearer トークン認証を使用できます
  • セッション管理:ステートフル(セッションベース)またはステートレスの動作モードを選択できます
🎯 v1.0.0 の主な機能
  • リアルタイム通知:包括的な通知機能で、すべての MCP アクティビティを追跡します
  • RAG 統合:plugged.in App を通じて、ドキュメントで補強したクエリをサポートします
  • インスペクタースクリプト:デバッグと開発のための自動テストツール
  • ヘルスモニタリング:接続を監視する ping エンドポイントを内蔵しています

🔧 ツールのカテゴリ

このプロキシは、2 つの異なるカテゴリのツールを提供します。

🔧 静的組み込みツール(常時利用可能)

これらのツールはプロキシに組み込まれており、サーバーの設定なしで使用できます。

  • pluggedin_discover_tools - キャッシュを活用したスマートな検出で、結果をすばやく取得
  • pluggedin_ask_knowledge_base - AI フィルタリング機能を備えた、ドキュメント横断型の RAG 検索
  • pluggedin_send_notification - メール送信を任意で指定できる通知の送信
  • pluggedin_create_document - ライブラリに AI 生成ドキュメントを作成
  • pluggedin_list_documents - フィルタリングオプションを指定してドキュメントを一覧表示
  • pluggedin_search_documents - クエリで特定のドキュメントを検索
  • pluggedin_get_document - ID を指定して、特定のドキュメントの全コンテンツを取得
  • pluggedin_update_document - 既存のドキュメントを更新、または内容を追記
📋 クリップボードツール(メモリシステム)
  • pluggedin_clipboard_set - 名前(セマンティックキー)またはインデックスを指定して、クリップボードのエントリを設定
  • pluggedin_clipboard_get - 名前またはインデックスを指定してクリップボードのエントリを取得、またはすべてのエントリを一覧表示
  • pluggedin_clipboard_delete - 名前またはインデックスを指定してクリップボードのエントリを削除、またはすべて削除
  • pluggedin_clipboard_list - メタデータ付きですべてのクリップボードのエントリを一覧表示
  • pluggedin_clipboard_push - インデックスを自動で増やしながら値を追加(スタックへのプッシュ)
  • pluggedin_clipboard_pop - インデックスが最も大きいエントリを取り出す(LIFO 方式)
⚡ 動的 MCP ツール(接続済みサーバーから提供)

これらのツールは設定済みの MCP サーバーから提供され、有効/無効を切り替えられます。

  • データベースツール(PostgreSQL、SQLite など)
  • ファイルシステムツール
  • API 統合ツール
  • あらゆる MCP サーバーのカスタムツール

検出ツールは両方のカテゴリをインテリジェントに表示し、AI モデルが利用可能なすべての機能にすぐアクセスできるようにします。

🚀 検出ツールの使用方法
# Quick discovery - returns cached data instantly
pluggedin_discover_tools()

# Force refresh - shows current tools + runs background discovery  
pluggedin_discover_tools({"force_refresh": true})

# Discover specific server
pluggedin_discover_tools({"server_uuid": "uuid-here"})

応答例:

## 🔧 Static Built-in Tools (Always Available):
1. **pluggedin_discover_tools** - Smart discovery with caching
2. **pluggedin_rag_query** - RAG v2 search across documents with AI filtering  
3. **pluggedin_send_notification** - Send notifications
4. **pluggedin_create_document** - (Coming Soon) Create AI-generated documents

## ⚡ Dynamic MCP Tools (8) - From Connected Servers:
1. **query** - Run read-only SQL queries
2. **generate_random_integer** - Generate secure random integers
...
📋 クリップボードの使用例

クリップボードシステムは、AI ワークフロー向けに永続的なメモリを提供します。

# Store a named entry (upserts if exists)
pluggedin_clipboard_set({
  "name": "customer_context",
  "value": "{\"name\": \"John Doe\", \"account_id\": \"12345\"}",
  "contentType": "application/json"
})

# Store an indexed entry for ordered pipelines
pluggedin_clipboard_set({
  "idx": 0,
  "value": "First pipeline step result",
  "createdByTool": "data_processor"
})

# Push to stack (auto-incrementing index)
pluggedin_clipboard_push({
  "value": "Analysis result from step 1",
  "contentType": "text/plain"
})

# Get a specific entry by name
pluggedin_clipboard_get({"name": "customer_context"})

# Pop from stack (LIFO - returns and removes highest index)
pluggedin_clipboard_pop()

# List all entries with metadata
pluggedin_clipboard_list({"limit": 20})

# Delete specific entry
pluggedin_clipboard_delete({"name": "customer_context"})

# Clear all clipboard entries
pluggedin_clipboard_delete({"clearAll": true})
📚 RAG v2 の使用例

強化された RAG v2 システムにより、MCP サーバーは完全な AI 帰属情報とともに、ドキュメントを作成・検索できます。

# Search for documents created by specific AI models
pluggedin_rag_query({
  "query": "system architecture",
  "filters": {
    "modelName": "Claude 3 Opus",
    "source": "ai_generated",
    "tags": ["technical"]
  }
})

# Search across all document sources
pluggedin_rag_query({
  "query": "deployment guide",
  "filters": {
    "dateFrom": "2024-01-01",
    "visibility": "workspace"
  }
})

# Future: Create AI-generated documents (Coming Soon)
pluggedin_create_document({
  "title": "Analysis Report",
  "content": "# Market Analysis\n\nDetailed findings...",
  "format": "md",
  "tags": ["analysis", "market"],
  "metadata": {
    "model": {
      "name": "Claude 3 Opus",
      "provider": "Anthropic"
    }
  }
})

🚀 クイックスタート

前提条件
  • Node.js 22.12 以降(engines.node で宣言されている最低バージョンです。sanitize-html が必要とします)
  • plugged.in App の API キー(plugged.in/api-keys で取得できます)
インストール
# Install and run with npx (latest v1.0.0)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY
🔄 v1.0.0 へのアップグレード

既存のインストールをアップグレードする場合は、詳しい手順について移行ガイドをご覧ください。

# Quick upgrade
npx -y @pluggedin/[email protected] --pluggedin-api-key YOUR_API_KEY
MCP クライアントの設定
Claude Desktop

Claude Desktop の設定に次の内容を追加します。

{
  "mcpServers": {
    "pluggedin": {
      "command": "npx",
      "args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
      "env": {
        "PLUGGEDIN_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}
Cline

Cline の設定に次の内容を追加します。

{
  "mcpServers": {
    "pluggedin": {
      "command": "npx",
      "args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
      "env": {
        "PLUGGEDIN_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}
Cursor

Cursor では、環境変数の代わりにコマンドライン引数を使用できます。

npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY

⚙️ 設定オプション

環境変数
変数説明必須デフォルト
PLUGGEDIN_API_KEYplugged.in App の API キーはい-
PLUGGEDIN_API_BASE_URLplugged.in App のベース URLいいえhttps://plugged.in
MCP_ALLOWED_ORIGINSStreamable HTTP:MCP エンドポイントへのアクセスを許可するブラウザーのオリジンをカンマ区切りで指定します(それ以外のオリジンからのリクエストは 403 になり、Origin ヘッダーのないリクエストには影響しません)。* はすべてのオリジンを許可しますいいえループバックオリジン(http://localhost:*、http://127.0.0.1:*、http://[::1]:*)
MCP_ALLOWED_HOSTSStreamable HTTP:MCP エンドポイントで受け入れる追加の Host 名(DNS リバインディング対策)を指定します。例:ローカルのリバースプロキシの公開名。ループバック以外の BIND_HOST では、この設定がある場合にのみチェックが適用されますいいえループバック名
コマンドライン引数

コマンドライン引数は環境変数より優先されます。

npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY --pluggedin-api-base-url https://your-custom-url.com
トランスポートオプション
オプション説明デフォルト
--transport <type>トランスポートの種類:stdio または streamable-httpstdio
--port <number>Streamable HTTP サーバーのポート12006
--statelessStreamable HTTP のステートレスモードを有効にしますfalse
--require-api-authStreamable HTTP リクエストに API キーを必須にしますfalse

オプションの一覧については、次を実行してください。

npx -y @pluggedin/pluggedin-mcp-proxy@latest --help

🌐 Streamable HTTP モード

このプロキシは STDIO の代わりに HTTP サーバーとして実行でき、ウェブ経由のアクセスやリモート接続が可能になります。

基本的な使い方
# Run as HTTP server on default port (12006)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --pluggedin-api-key YOUR_API_KEY

# Custom port
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --port 8080 --pluggedin-api-key YOUR_API_KEY

# With authentication required
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --require-api-auth --pluggedin-api-key YOUR_API_KEY

# Stateless mode (new session per request)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --stateless --pluggedin-api-key YOUR_API_KEY
HTTP エンドポイント
  • POST /mcp - MCP メッセージを送信します
  • GET /mcp - サーバー送信イベントのストリーム(任意)
  • DELETE /mcp - セッションを終了します
  • GET /health - ヘルスチェックのエンドポイント
セッション管理

ステートフルモード(デフォルト)では、セッションを維持するために mcp-session-id ヘッダーを使用します。

# First request creates a session
curl -X POST http://localhost:12006/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

# Subsequent requests use the same session
curl -X POST http://localhost:12006/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: YOUR_SESSION_ID" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"tool_name"},"id":2}'
認証

--require-api-auth を使用する場合は、API キーを Bearer トークンとして指定します。

curl -X POST http://localhost:12006/mcp \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"ping","id":1}'

🐳 Docker の使い方

Docker を使用してプロキシサーバーをビルドし、実行することもできます。

イメージのビルド

Docker がインストールされ、実行中であることを確認してください。pluggedin-mcp ディレクトリに移動し、次を実行します。

docker build -t pluggedin-mcp-proxy:latest .

ビルドコンテキストを最適化するため、.dockerignore ファイルが含まれています。

コンテナの実行
STDIO モード(デフォルト)

MCP Inspector でテストするには、コンテナを STDIO モードで実行します。

docker run -it --rm \
  -e PLUGGEDIN_API_KEY="YOUR_API_KEY" \
  -e PLUGGEDIN_API_BASE_URL="YOUR_API_BASE_URL" \
  --name pluggedin-mcp-container \
  pluggedin-mcp-proxy:latest
Streamable HTTP モード

コンテナを HTTP サーバーとして実行します。

docker run -d --rm \
  -e PLUGGEDIN_API_KEY="YOUR_API_KEY" \
  -e PLUGGEDIN_API_BASE_URL="YOUR_API_BASE_URL" \
  -p 12006:12006 \
  --name pluggedin-mcp-http \
  pluggedin-mcp-proxy:latest \
  --transport streamable-http --port 12006

YOUR_API_KEY と YOUR_API_BASE_URL(デフォルトの https://plugged.in を使用しない場合)を置き換えてください。

MCP Inspector でのテスト

コンテナの実行中に、MCP Inspector を使用して接続できます。

npx @modelcontextprotocol/inspector docker://pluggedin-mcp-container

これにより、実行中のコンテナの標準入力/出力に接続されます。

コンテナの停止

docker run を実行しているターミナルで Ctrl+C を押します。--rm フラグにより、停止時にコンテナが自動的に削除されます。

自律型エージェント(プレビュー)

このハブは、エージェントのループをエンドツーエンドでサポートするように設計されています。

MCP Client  →  plugged.in MCP Hub  →  (Plan → Act → Reflect)
                                ↘  Knowledge  ↘  Memory  ↘  Tools
  • 計画 — 目標と制約を導き出し、タスクグラフを作成します。
  • 実行 — 統合カタログのツールを呼び出し、STDIO/SSE/HTTP サーバー間で安全にルーティングします。
  • 振り返り — 結果をメモリとナレッジ(ドキュメント、メモ、成果物)に保存し、後続のステップを改善します。

セキュリティと運用
Streamable HTTP モードでは --require-api-auth を有効にし、コマンド、引数、環境変数には許可リストを使用します。サーバーレベルの検証と、プロンプトインジェクション対策を強化したクライアント側のプロンプトを組み合わせます。既存のログ記録/テレメトリーを活用して、ツールの使用状況とドキュメントの変更を追跡します。

🏗️ システムアーキテクチャ

plugged.in MCP Proxy Server は、MCP クライアントと複数の基盤となる MCP サーバーの間のブリッジとして機能します。

sequenceDiagram
    participant MCPClient as MCP Client (e.g. Claude Desktop)
    participant PluggedinMCP as plugged.in MCP Proxy
    participant PluggedinApp as plugged.in App
    participant MCPServers as Underlying MCP Servers

    MCPClient ->> PluggedinMCP: Request list tools/resources/prompts
    PluggedinMCP ->> PluggedinApp: Get capabilities via API
    PluggedinApp ->> PluggedinMCP: Return capabilities (prefixed)

    MCPClient ->> PluggedinMCP: Call tool/read resource/get prompt
    alt Standard capability
        PluggedinMCP ->> PluggedinApp: Resolve capability to server
        PluggedinApp ->> PluggedinMCP: Return server details
        PluggedinMCP ->> MCPServers: Forward request to target server
        MCPServers ->> PluggedinMCP: Return response
    else Custom instruction
        PluggedinMCP ->> PluggedinApp: Get custom instruction
        PluggedinApp ->> PluggedinMCP: Return formatted messages
    end
    PluggedinMCP ->> MCPClient: Return response

    alt Discovery tool (Smart Caching)
        MCPClient ->> PluggedinMCP: Call pluggedin_discover_tools
        alt Cached data available
            PluggedinMCP ->> PluggedinApp: Check cached capabilities
            PluggedinApp ->> PluggedinMCP: Return cached tools/resources/prompts
            PluggedinMCP ->> MCPClient: Return instant results (static + dynamic)
        else Force refresh or no cache
            PluggedinMCP ->> PluggedinApp: Trigger background discovery
            PluggedinMCP ->> MCPClient: Return current tools + "discovery running"
            PluggedinApp ->> MCPServers: Connect and discover capabilities (background)
            MCPServers ->> PluggedinApp: Return fresh capabilities
        end
    end

🔄 ワークフロー

  1. 設定:プロキシが plugged.in App からサーバー設定を取得します
  2. スマート検出(pluggedin_discover_tools):
    • キャッシュの確認:まず既存のキャッシュデータを確認します(1 秒未満)
    • 即時応答:静的ツールとキャッシュ済みの動的ツールをすぐに返します
    • バックグラウンド更新:force_refresh=true の場合、現在のツールを表示しながらバックグラウンドで検出を実行します
    • 新規検出:キャッシュデータが存在しない場合にのみ、完全な検出を実行します
  3. 機能の一覧表示:プロキシが plugged.in App API から検出済みの機能を取得します
    • tools/list:/api/tools から取得します(静的ツールと動的ツールを含みます)
    • resources/list:/api/resources から取得します
    • resource-templates/list:/api/resource-templates から取得します
    • prompts/list:/api/prompts と /api/custom-instructions から取得し、結果を統合します
  4. 機能の解決:プロキシが機能の接続先サーバーを特定します
    • tools/call:ツール名からプレフィックスを解析し、内部マップでサーバーを検索します
    • resources/read:/api/resolve/resource?uri=... を呼び出してサーバーの詳細を取得します
    • prompts/get:カスタム指示のプレフィックスを確認するか、/api/resolve/prompt?name=... を呼び出します
  5. リクエストのルーティング:リクエストを適切な基盤となる MCP サーバーにルーティングします
  6. レスポンスの処理:基盤となるサーバーからのレスポンスをクライアントに返します

🔒 セキュリティ機能

plugged.in MCP Proxy は、システムとデータを保護するための包括的なセキュリティ対策を実装しています。

入力の検証とサニタイズ
  • コマンドインジェクションの防止:実行前に、すべてのコマンドと引数を許可リストと照合して検証します
  • 環境変数のセキュリティ:引用符や複数行の値を適切に処理しながら、.env ファイルを安全に解析します
  • トークンの検証:API キーと認証トークンには、強力な正規表現パターンを使用します(32~64 桁の 16 進数文字)
ネットワークセキュリティ
  • SSRF 対策:URL 検証により、以下へのアクセスをブロックします:
    • ローカルホストとループバックアドレス(127.0.0.1、::1)
    • プライベート IP 範囲(10.x、172.16-31.x、192.168.x)
    • リンクローカルアドレス(169.254.x)
    • マルチキャストおよび予約済み範囲
    • 一般的な内部サービスのポート(SSH、データベースなど)
  • ヘッダーの検証:以下の対策により、ヘッダーインジェクションを防止します:
    • 危険なヘッダーのブロック
    • RFC 7230 に準拠したヘッダー名の検証
    • 制御文字の検出
    • ヘッダーサイズの上限(最大 8KB)
  • レート制限:
    • ツール呼び出し:1 分あたり 60 リクエスト
    • API 呼び出し:1 分あたり 100 リクエスト
  • エラーのサニタイズ:エラーメッセージをサニタイズし、情報漏えいを防止します
プロセスセキュリティ
  • 安全なコマンド実行:シェルインジェクションを防ぐため、exec() の代わりに execFile() を使用します
  • コマンドの許可リスト:実行を許可するコマンドは以下のみです:
    • node、npx — Node.js コマンド
    • python、python3 — Python コマンド
    • uv、uvx、uvenv — UV Python ツール
  • 引数のサニタイズ:すべての引数からシェルのメタ文字と制御文字を削除します
  • 環境変数の検証:英数字とアンダースコアを含むキーのみを許可します
ストリーミング可能な HTTP のセキュリティ
  • 遅延認証:ツールの検出に認証が不要なため、互換性が向上します
  • セッションのセキュリティ:暗号学的に安全なセッション ID を生成します
  • CORS 保護:ウェブアクセス用の CORS ヘッダーを設定できます
  • リクエストサイズの制限:大きなペイロードによる DoS を防止します
セキュリティユーティリティ

専用の security-utils.ts モジュールでは、以下を提供しています。

  • ベアラートークンの検証
  • SSRF 保護機能付き URL 検証
  • コマンド引数のサニタイズ
  • 環境変数の検証
  • レート制限の実装
  • エラーメッセージのサニタイズ

セキュリティ実装の詳細については、SECURITY.md をご覧ください。

🧩 plugged.in App との統合

plugged.in MCP Proxy Server は、以下の機能を提供する plugged.in App とシームレスに連携するように設計されています。

  • MCP サーバーの設定を管理するウェブベースのインターフェース
  • 一元化された機能の検出(ツール、リソース、テンプレート、プロンプト)
  • RAG v2 ドキュメントライブラリ:ドキュメントをアップロードし、出典を完全に明示した AI 生成コンテンツを利用できます
  • カスタム指示の管理
  • 異なる設定セットに対応する複数のワークスペースのサポート
  • 任意の AI モデルで MCP ツールをテストするためのインタラクティブなプレイグラウンド
  • ユーザー認証と API キー管理
  • AI ドキュメント交換:モデルの出典追跡情報とともに、ドキュメントの作成、検索、管理ができます

📚 関連リソース

🤝 コントリビューション

コントリビューションを歓迎します。お気軽にプルリクエストを送信してください。

📝 最近の更新

バージョン 1.9.0(2025 年 9 月)- セキュリティ強化
🔒 HTML サニタイズの強化
  • 業界標準のサニタイズ:正規表現ベースの独自 HTML サニタイズを、sanitize-html ライブラリに置き換えました
  • XSS 防止:クロスサイトスクリプティング攻撃に対する包括的な保護
  • HTML 属性のセキュリティ:HTML 属性のコンテキスト(引用符、アンパサンド)に対するサニタイズを強化しました
  • フォーマット文字列インジェクション:ログ出力におけるフォーマット文字列インジェクションの脆弱性を修正しました
  • セキュリティテスト:すべてのサニタイズ関数に対する包括的なテストカバレッジ
🛡️ セキュリティの改善
  • CodeQL 準拠:GitHub CodeQL 分析で特定されたすべてのセキュリティ脆弱性を解消しました
  • 入力検証:すべての関数で入力検証とサニタイズを強化しました
  • 依存関係の更新:堅牢な HTML コンテンツフィルタリングのため、sanitize-html を追加しました
  • テストカバレッジ:XSS 攻撃の防止を検証するセキュリティテストスイートを強化しました
バージョン 1.5.0(2025 年 1 月)- RAG v2
🤖 AI ドキュメント交換
  • AI 生成ドキュメント:MCP サーバーから、AI の出典を完全に明示したドキュメントをライブラリに作成できるようになりました
  • モデル出典の追跡:各ドキュメントを作成または更新した AI モデルの完全な履歴
  • 高度なドキュメント検索:AI モデル、プロバイダー、日付、タグ、ソースタイプで絞り込めます
  • ドキュメントのバージョン管理:AI 生成コンテンツの変更を追跡し、バージョン履歴を保持します
  • 複数ソースのサポート:アップロード、AI 生成、API 統合によるドキュメントに対応します
🔍 RAG 機能の強化
  • セマンティック検索:PostgreSQL の全文検索により、関連性のスコアリングを改善しました
  • スマートフィルタリング:公開範囲、モデルの出典、ドキュメントのソースで結果を絞り込めます
  • スニペット生成:キーワードを強調表示したスニペットを自動抽出します
  • パフォーマンスの最適化:インデックスを最適化し、クエリを高速化しました
バージョン 1.2.0(2025 年 1 月)
🔒 セキュリティの強化
  • URL の検証:プライベート IP、localhost、危険なポートをブロックする包括的な SSRF 対策
  • コマンドの許可リスト:承認されたコマンド(node、npx、python など)のみ実行できます
  • ヘッダーのサニタイズ:ヘッダーインジェクション攻撃から保護します
  • 遅延認証:認証なしでツールを検出できるようになり、Smithery との互換性が向上しました
🚀 パフォーマンスの改善
  • Docker ビルドの最適化:コンテナーのフットプリントを最小限に抑えるマルチステージビルド
  • 本番用の依存関係のみ:Docker イメージからテストファイルと開発用依存関係を除外
  • リソース効率:リソースが限られた環境へのデプロイを想定した設計
🔧 技術的な改善
  • Streamable HTTP トランスポートのエラーハンドリングを強化
  • セッションのクリーンアップとメモリ管理を改善
  • TypeScript の型とコード構成を改善
バージョン 1.1.0(2024年12月)
🚀 新機能
  • Streamable HTTP のサポート:最新の Streamable HTTP トランスポートを使用して、下流の MCP サーバーに接続できます
  • HTTP サーバーモード:ウェブ経由でアクセスできる HTTP サーバーとしてプロキシを実行できます
  • 柔軟なセッション管理:ステートレスモードとステートフルモードを選択できます
  • 認証オプション:HTTP エンドポイントでオプションの Bearer トークン認証を利用できます
  • ヘルスモニタリング:サービスの監視に使用できる /health エンドポイント
🔧 技術的な改善
  • 最新のプロトコルに対応するため、MCP SDK を v1.13.1 に更新
  • HTTP サーバー機能を実現する Express.js との連携を追加
  • 開発者エクスペリエンスを向上させるため、TypeScript の型を強化
バージョン 1.0.0(2025年6月)
🎯 主な機能
  • リアルタイム通知システム:包括的な通知機能により、すべての MCP アクティビティを追跡
  • RAG 連携:plugged.in App を通じたドキュメント拡張クエリに対応
  • インスペクタースクリプト:デバッグと開発のための新しい自動テストツール
  • ヘルスモニタリング:接続を監視する組み込みの ping エンドポイント
🔒 セキュリティの強化
  • 入力の検証:すべての入力に対する業界標準の検証とサニタイズ
  • URL セキュリティ:SSRF 対策を強化した URL 検証
  • 環境変数のセキュリティ:dotenv を使用した環境変数の安全な解析
  • エラーのサニタイズ:エラーレスポンスからの情報漏えいを防止
🐛 バグ修正
  • JSON-RPC プロトコルへの干渉を修正(stdout と stderr を分離)
  • 開発環境での localhost URL 検証の問題を解決
  • インスペクタースクリプトでの API キー処理を修正
  • 接続の安定性とメモリ管理を改善
🔧 開発者向けツール
  • 自動テスト用の新しいインスペクタースクリプト
  • エラーメッセージとデバッグ機能を改善
  • stderr を適切に使用した構造化ログ
  • TypeScript の型安全性を強化

詳細については、リリースノートをご覧ください。

🧪 テストと開発

ローカル開発

開発用のテストが含まれていますが、コンテナーのフットプリントを最小限に抑えるため、Docker ビルドでは除外されます。

# Run tests locally
npm test
# or
./scripts/test-local.sh

# Run tests in watch mode
npm run test:watch

# Run tests with UI
npm run test:ui
軽量な Docker ビルド

Docker イメージはフットプリントを最小限に抑えるよう最適化されています。

  • マルチステージビルドプロセス
  • 最終イメージには本番用の依存関係のみを含める
  • テストファイルと開発用依存関係を除外
  • リソースが限られた環境向けに最適化
# Build optimized Docker image
docker build -t pluggedin-mcp .

# Check image size
docker images pluggedin-mcp

📄 ライセンス

このプロジェクトは MIT ライセンスのもとでライセンスされています。詳細については、LICENSE ファイルをご覧ください。

🙏 謝辞

コメント

MCP は初めてですか?

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

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