plugged.in MCP Proxy Server について
plugged.in MCP Proxy Server は、複数の MCP サーバーを単一のインターフェースにまとめるミドルウェアです。plugged.in App からツール、プロンプト、リソースの設定を取得します。複数の MCP サーバーを一つの接続から管理したいユーザー向けで、ナレッジベース検索と永続メモリも備えています。
主な機能
- 01下流の MCP サーバーのツール、プロンプト、リソースを集約
- 02STDIO と Streamable HTTP の両方のトランスポートに対応
- 03RAG v2 によるドキュメント検索と作成機能
- 04永続メモリ用のクリップボード型ツール
- 05ツール検出結果のキャッシュと手動更新
活用シーン
- 01Claude Desktop や Cursor から一つの接続で複数の MCP サーバーを利用
- 02AI モデルによるアップロード済みまたは生成済みドキュメントの検索と引用
- 03別々のセッション間でのコンテキストデータの保存と取得
MCP 対応
MCP クライアントの単一の入口として動作する MCP プロキシサーバーです。下流の MCP サーバーに接続して管理し、集約したツール、プロンプト、リソースをクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
23掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| topic | enum | いいえ | 学習する具体的なセットアップトピック。選択肢:getting_started(デフォルト)、api_key、configuration、troubleshootinggetting_started | api_key | configuration | troubleshooting |
詳細
plugged.in MCP Hub — プロキシ · ナレッジ · メモリー · ツール
AI データ交換の交差点
単なるプロキシではなく、AI にナレッジ、メモリー、ツールを提供する統合 MCP ハブです。1 つの接続からすべての MCP サーバーを管理・テストできるほか、クライアント間でドキュメントを活用し、メモリーを拡張したワークフローを実現します。
📋 概要
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 18+(v20+ を推奨)
- 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_KEY | plugged.in App の API キー | はい | - |
PLUGGEDIN_API_BASE_URL | plugged.in App のベース URL | いいえ | https://plugged.in |
コマンドライン引数
コマンドライン引数は環境変数より優先されます。
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-http | stdio |
--port <number> | Streamable HTTP サーバーのポート | 12006 |
--stateless | Streamable HTTP のステートレスモードを有効化 | false |
--require-api-auth | Streamable 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 フラグにより、停止時にコンテナーが自動的に削除されます。
☁️ Smithery Cloud へのデプロイ
plugged.in MCP Proxy を Smithery Cloud にデプロイすると、ホスト型の MCP サーバーにいつでもアクセスできます。
クイックスタート
- smithery.ai にアクセスしてサインインします
- GitHub アカウントを接続し、
pluggedin-mcpリポジトリを選択します - Smithery UI で Plugged.in API キーを設定します
- デプロイして HTTPS エンドポイントを取得します
メリット
- 24 時間 365 日の可用性:プロキシが常時稼働します
- 設定不要:Smithery が
smithery.yamlから設定を自動検出します - 自動スケーリング:複数の同時接続に対応します
- Web アクセス:Web アプリケーションやリモートクライアントに最適です
ドキュメント
デプロイ手順、設定オプション、トラブルシューティング、技術的な詳細については、以下をご覧ください。
自律型エージェント(プレビュー)
このハブは、エージェントのループをエンドツーエンドでサポートするように設計されています。
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
🔄 ワークフロー
- 設定:プロキシは、plugged.in App からサーバー設定を取得します
- スマート検出(
pluggedin_discover_tools):- キャッシュの確認:まず、既存のキャッシュデータを確認します(1 秒未満)
- 即時応答:静的ツールとキャッシュ済みの動的ツールをただちに返します
- バックグラウンド更新:
force_refresh=trueの場合、現在のツールを表示しながらバックグラウンドで検出を実行します - 新規検出:キャッシュデータがない場合に限り、完全な検出を実行します
- 機能の一覧表示:プロキシは、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から取得し、結果を統合します
- 機能の解決:プロキシは、機能を対象サーバーに解決します
tools/call:ツール名からプレフィックスを解析し、内部マップでサーバーを検索しますresources/read:/api/resolve/resource?uri=...を呼び出し、サーバーの詳細を取得しますprompts/get:カスタム指示のプレフィックスを確認するか、/api/resolve/prompt?name=...を呼び出します
- リクエストのルーティング:リクエストは、適切な基盤となる MCP サーバーにルーティングされます
- レスポンスの処理:基盤となるサーバーからのレスポンスがクライアントに返されます
🔒 セキュリティ機能
plugged.in MCP Proxy は、システムとデータを保護するための包括的なセキュリティ対策を実装しています。
入力の検証とサニタイズ
- コマンドインジェクションの防止:実行前に、すべてのコマンドと引数を許可リストに照らして検証します
- 環境変数のセキュリティ:引用符や複数行の値を適切に処理しながら、
.envファイルを安全に解析します - トークンの検証:API キーと認証トークンに対して、強力な正規表現パターンを使用します(32〜64 桁の 16 進数文字)
ネットワークセキュリティ
- SSRF 対策:URL の検証により、次へのアクセスをブロックします。
- localhost およびループバックアドレス(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 ツール
- 引数のサニタイズ:すべての引数からシェルのメタ文字と制御文字を除去します
- 環境変数の検証:英数字とアンダースコアのみを含むキーを許可します
Streamable 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 サーバーとして実行し、Web ベースのアクセスを提供します
- 柔軟なセッション管理:ステートレスモードとステートフルモードを選択できます
- 認証オプション: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 Proxy Serverに着想を得ています
- Model Context Protocolを基盤としています
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。