Plugged.in MCP Server

公式

複数のMCPサーバーを単一のMCPに統合する包括的なプロキシです。サーバー間でのツール、プロンプト、リソース、テンプレートの検出と管理、さらにMCPサーバー構築時のデバッグ用プレイグラウンドを提供します。

ドキュメント

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

plugged.in Logo

AIデータ交換の交差点

AIにナレッジメモリツールを提供する統合MCPハブ — 単なるプロキシではありません。単一の接続からすべてのMCPサーバーを管理・テストしながら、ドキュメント対応でメモリ拡張されたワークフローをクライアント間で実現します。

smithery badge 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(デフォルト)または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_generatedupload、または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"
    }
  }
})

🚀 クイックスタート

前提条件

インストール

# 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

コマンドライン引数

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

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サーバーとして実行でき、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_KEYYOUR_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サーバーへのホストされた常時利用可能なアクセスを実現します。

クイックスタート

  1. smithery.ai にアクセスしてサインイン
  2. GitHub アカウントを連携し、pluggedin-mcp リポジトリを選択
  3. Smithery UI で Plugged.in API キーを設定
  4. デプロイして HTTPS エンドポイントを取得

メリット

  • 24時間365日の可用性: プロキシは常に稼働
  • ゼロコンフィグレーション: Smithery が smithery.yaml から設定を自動検出
  • 自動スケーリング: 複数の同時接続を処理
  • Web アクセス: Web アプリケーションやリモートクライアントに最適

ドキュメント

完全なデプロイ手順、設定オプション、トラブルシューティング、技術詳細については、以下を参照してください:

📖 Smithery デプロイガイド

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

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

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

🔄 ワークフロー

  1. 設定: プロキシは plugged.in アプリからサーバー設定を取得します
  2. スマートディスカバリー (pluggedin_discover_tools):
    • キャッシュチェック: 最初に既存のキャッシュデータを確認します (1秒未満)
    • 即時応答: 静的ツールとキャッシュされた動的ツールを即座に返します
    • バックグラウンド更新: force_refresh=true の場合、現在のツールを表示しながらバックグラウンドでディスカバリーを実行します
    • フレッシュディスカバリー: キャッシュデータが存在しない場合にのみ、完全なディスカバリーを実行します
  3. 機能一覧: プロキシは plugged.in アプリ 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 プロキシは、システムとデータを保護するための包括的なセキュリティ対策を実装しています:

入力検証とサニタイズ

  • コマンドインジェクション防止: すべてのコマンドと引数は、実行前に許可リストと照合されます
  • 環境変数セキュリティ: 引用符や複数行の値を適切に処理する .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() を使用
  • コマンド許可リスト: 以下からの実行のみを許可:
    • nodenpx - Node.js コマンド
    • pythonpython3 - Python コマンド
    • uvuvxuvenv - 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 ファイルを参照してください。

🙏 謝辞