Plugged.in MCP Server
公式複数のMCPサーバーを単一のMCPに統合する包括的なプロキシです。サーバー間でのツール、プロンプト、リソース、テンプレートの検出と管理、さらにMCPサーバー構築時のデバッグ用プレイグラウンドを提供します。
ドキュメント
plugged.in MCP Hub — プロキシ · ナレッジ · メモリ · ツール
AIデータ交換の交差点
AIにナレッジ、メモリ、ツールを提供する統合MCPハブ — 単なるプロキシではありません。単一の接続からすべての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(デフォルト)またはStreamable HTTPとして実行し、オプションのAPI認証とステートレスモードを利用できます。Claude Desktop、Cline、Cursor、MCP Inspectorなどと連携。既存のクライアント設定を維持しながら、ポリシーとテレメトリを一元化します。
⭐ このプロジェクトが役立つと思われたら、GitHubでスターを付けていただけると幸いです! より多くの開発者に届き、改善の励みになります。
✨ 主な機能
🚀 コア機能
- 組み込みAIプレイグラウンド: クライアント設定なしで、Claude、Gemini、OpenAI、xAIでMCPを即座にテスト
- ユニバーサルMCP互換性: Claude Desktop、Cline、Cursorを含むあらゆるMCPクライアントで動作
- マルチサーバーサポート: STDIO、SSE、Streamable HTTP MCPサーバーに接続
- デュアルトランスポートモード: プロキシを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の機能 (レジストリv2サポート)
- OAuthトークン管理: Streamable HTTP MCPサーバー向けのシームレスなOAuth認証処理
- plugged.in Appからの自動トークン取得
- 安全なトークン保存とリフレッシュメカニズム
- クライアント側の認証不要
- 強化された通知システム: 双方向通知サポート
- plugged.in Appへの通知送信
- MCPサーバーからの通知受信
- 通知の既読/未読マーク
- プログラムによる通知削除
- トレンド分析: リアルタイムアクティビティ追跡
- すべてのツール呼び出しがログに記録・追跡
- トレンドサーバー計算に貢献
- 使用量メトリクスと人気度インサイト
- レジストリ統合: レジストリ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サーバーとして実行でき、Webベースのアクセスとリモート接続を可能にします。
基本的な使用法
# 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プロキシを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 プロキシサーバーは、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 アプリからサーバー設定を取得します
- スマートディスカバリー (
pluggedin_discover_tools):- キャッシュチェック: 最初に既存のキャッシュデータを確認します (1秒未満)
- 即時応答: 静的ツールとキャッシュされた動的ツールを即座に返します
- バックグラウンド更新:
force_refresh=trueの場合、現在のツールを表示しながらバックグラウンドでディスカバリーを実行します - フレッシュディスカバリー: キャッシュデータが存在しない場合にのみ、完全なディスカバリーを実行します
- 機能一覧: プロキシは plugged.in アプリ 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 プロキシは、システムとデータを保護するための包括的なセキュリティ対策を実装しています:
入力検証とサニタイズ
- コマンドインジェクション防止: すべてのコマンドと引数は、実行前に許可リストと照合されます
- 環境変数セキュリティ: 引用符や複数行の値を適切に処理する
.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)
- レート制限:
- ツール呼び出し: 毎分 60 リクエスト
- API 呼び出し: 毎分 100 リクエスト
- エラーサニタイズ: エラーメッセージをサニタイズして情報漏洩を防止
プロセスセキュリティ
- 安全なコマンド実行: シェルインジェクションを防ぐために
exec()の代わりにexecFile()を使用 - コマンド許可リスト: 以下からの実行のみを許可:
node、npx- Node.js コマンドpython、python3- Python コマンドuv、uvx、uvenv- UV Python ツール
- 引数サニタイズ: すべての引数からシェルメタ文字と制御文字を削除
- 環境変数検証: アンダースコアを含む英数字キーのみを許可
Streamable HTTP セキュリティ
- 遅延認証: ツールディスカバリーは認証を必要とせず、互換性が向上
- セッションセキュリティ: 暗号的に安全なセッション ID 生成
- CORS 保護: Web アクセス用に設定可能な CORS ヘッダー
- リクエストサイズ制限: 大きなペイロードによる DoS を防止
セキュリティユーティリティ
専用の security-utils.ts モジュールが以下を提供:
- Bearer トークン検証
- SSRF 保護付き URL 検証
- コマンド引数サニタイズ
- 環境変数検証
- レート制限の実装
- エラーメッセージサニタイズ
詳細なセキュリティ実装については、SECURITY.md を参照してください。
🧩 plugged.in アプリとの統合
plugged.in MCP プロキシサーバーは、plugged.in アプリ とシームレスに連携するように設計されており、以下を提供します:
- MCP サーバー設定を管理するための Web ベースのインターフェース
- 一元化された機能ディスカバリー (ツール、リソース、テンプレート、プロンプト)
- 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、ローカルホスト、危険なポートをブロックする包括的な SSRF 保護
- コマンド許可リスト: 承認されたコマンド (node、npx、python など) のみ実行可能
- ヘッダーサニタイズ: ヘッダーインジェクション攻撃からの保護
- 遅延認証: 認証不要のツールディスカバリーによる Smithery 互換性の向上
🚀 パフォーマンス改善
- 最適化された Docker ビルド: 最小限のコンテナフットプリントのためのマルチステージビルド
- 本番依存関係のみ: テストファイルと開発依存関係を Docker イメージから除外
- リソース効率: リソース制約のある環境へのデプロイ用に設計
🔧 技術的改善
- Streamable HTTP トランスポートでのエラーハンドリングを強化
- セッションクリーンアップとメモリ管理の改善
- TypeScript 型とコード編成の改善
バージョン 1.1.0 (2024年12月)
🚀 新機能
- Streamable HTTP サポート: 最新の Streamable HTTP トランスポートを使用して下流の MCP サーバーに接続
- HTTP サーバーモード: Web ベースのアクセスのためにプロキシを HTTP サーバーとして実行
- 柔軟なセッション管理: ステートレスモードまたはステートフルモードを選択可能
- 認証オプション: HTTP エンドポイント用のオプションの Bearer トークン認証
- ヘルスモニタリング: サービス監視用の
/healthエンドポイント
🔧 技術的改善
- 最新プロトコルサポートのために MCP SDK を v1.13.1 に更新
- HTTP サーバー機能のために Express.js 統合を追加
- 開発者エクスペリエンス向上のために TypeScript 型を強化
バージョン 1.0.0 (2025年6月)
🎯 主要機能
- リアルタイム通知システム: 包括的な通知サポートにより、すべての MCP アクティビティを追跡
- RAG 統合: plugged.in アプリを通じたドキュメント強化クエリのサポート
- インスペクタースクリプト: デバッグと開発のための新しい自動テストツール
- ヘルスモニタリング: 接続監視用の組み込み ping エンドポイント
🔒 セキュリティ強化
- 入力検証: すべての入力に対する業界標準の検証とサニタイズ
- URL セキュリティ: SSRF 保護付きの URL 検証の強化
- 環境セキュリティ: dotenv による環境変数の安全な解析
- エラーサニタイズ: エラーレスポンスでの情報漏洩を防止
🐛 バグ修正
- JSON-RPC プロトコル干渉を修正 (stdout と stderr の分離)
- 開発環境用のローカルホスト 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 プロキシサーバー に触発されました
- Model Context Protocol 上に構築されています