Plugged.in MCP Server

официальный

Всесторонний прокси, объединяющий несколько MCP-серверов в единый MCP. Обеспечивает обнаружение и управление инструментами, подсказками, ресурсами и шаблонами на разных серверах, а также площадку для отладки при создании MCP-серверов.

Документация

plugged.in MCP Hub — Прокси · Знания · Память · Инструменты

plugged.in Logo

Перекрёсток для обмена данными ИИ

Единый MCP-хаб, который даёт вашему ИИ Знания, Память и Инструменты — не просто прокси. Управляйте и тестируйте все MCP-серверы через одно подключение, одновременно используя рабочие процессы с учётом документов и расширенной памятью на разных клиентах.

smithery badge Version GitHub Stars License TypeScript MCP MCP Badge

📋 Обзор

Прокси-сервер plugged.in MCP — это мощное промежуточное ПО, которое объединяет несколько серверов Model Context Protocol (MCP) в единый унифицированный интерфейс. Он получает конфигурации инструментов, подсказок и ресурсов из приложения plugged.in и интеллектуально направляет запросы к соответствующим нижележащим MCP-серверам.

Этот прокси обеспечивает бесшовную интеграцию с любым MCP-клиентом (Claude, Cline, Cursor и др.), предоставляя расширенные возможности управления через экосистему plugged.in.

Столпы хаба: Знания · Память · Инструменты · Прокси

Знания (RAG v2 / Обмен документами ИИ)
Поиск и обоснование результатов модели с помощью унифицированного поиска документов с учётом авторства. MCP-серверы могут создавать документы в вашей библиотеке и управлять ими, используя версионирование, контроль видимости и указание авторства модели. Используйте встроенный RAG для поиска по всем подключённым источникам и получения релевантных фрагментов и метаданных.

Память (Постоянная память ИИ)
Долговременная память в рамках рабочего пространства/профиля, сохраняющаяся между сессиями. Хаб интегрируется с постоянной памятью приложения plugged.in, так что действия и выводы агента могут сохраняться и извлекаться в разных задачах. В дорожной карте — встроенные инструменты памяти, предоставляющие простые шаблоны get/put/search в рамках той же модели аутентификации.

Инструменты
Объединение встроенных возможностей с нижестоящими MCP-серверами (STDIO, SSE, Streamable HTTP). Обнаружение инструментов кэшируется и может обновляться по требованию; обнаружение на уровне хаба возвращает унифицированный каталог для любого MCP-клиента. Хаб поддерживает инструменты, ресурсы, шаблоны ресурсов и подсказки.

Прокси
Одно подключение для каждого клиента. Запускается как STDIO (по умолчанию) или Streamable HTTP с опциональной API-аутентификацией и режимом без состояния. Работает с Claude Desktop, Cline, Cursor, MCP Inspector и другими; сохраняйте существующие конфигурации клиентов, централизуя политики и телеметрию.

Если этот проект оказался полезным, поставьте ему звезду на GitHub! Это поможет привлечь больше разработчиков и мотивирует нас продолжать улучшения.

✨ Ключевые возможности

🚀 Основные возможности

  • Встроенная площадка для ИИ: Тестируйте свои MCP мгновенно с Claude, Gemini, OpenAI и xAI без настройки клиента
  • Универсальная совместимость с MCP: Работает с любым MCP-клиентом, включая Claude Desktop, Cline и Cursor
  • Поддержка нескольких серверов: Подключайтесь к MCP-серверам через STDIO, SSE и Streamable HTTP
  • Два режима транспорта: Запускайте прокси как STDIO (по умолчанию) или как сервер Streamable HTTP
  • Унифицированный поиск документов: Ищите по всем подключённым серверам с помощью встроенных возможностей RAG
  • Обмен документами ИИ (RAG v2): MCP-серверы могут создавать документы в вашей библиотеке и управлять ими с полным указанием авторства
  • Уведомления от любой модели: Получайте уведомления в реальном времени с опциональной доставкой по email
  • Слой рабочих пространств: Переключайтесь между разными наборами конфигураций MCP одним кликом
  • Прокси на основе API: Получает возможности из API приложения plugged.in, а не через прямое обнаружение
  • Полная поддержка MCP: Обрабатывает инструменты, ресурсы, шаблоны ресурсов и подсказки
  • Пользовательские инструкции: Поддерживает инструкции для конкретных серверов, оформленные как подсказки MCP

🎯 Новое в v1.5.0 (RAG v2 - Обмен документами ИИ)

  • Создание документов ИИ: MCP-серверы теперь могут создавать документы непосредственно в вашей библиотеке
    • Полное отслеживание авторства модели (какой ИИ создал/обновил документ)
    • История версий с отслеживанием изменений
    • Дедупликация контента через хеширование SHA-256
    • Поддержка различных форматов: MD, TXT, JSON, HTML, PDF и других
  • Расширенный поиск документов: Улучшенные RAG-запросы с фильтрацией по ИИ
    • Фильтрация по модели ИИ, провайдеру, диапазону дат, тегам и типу источника
    • Семантический поиск с оценкой релевантности
    • Автоматическая генерация фрагментов с подсветкой ключевых слов
    • Поддержка фильтрации: источники ai_generated, upload или api
  • Управление документами через MCP:
    • Настройка видимости документа: приватный, рабочее пространство или публичный
    • Отношения родитель-потомок для версий документов
    • Организация на основе профиля наряду с ограничением по проекту
    • Отслеживание прогресса обработки документов в реальном времени

🎯 Возможности из v1.4.0 (Поддержка Registry v2)

  • Управление OAuth-токенами: Бесшовная обработка OAuth-аутентификации для MCP-серверов Streamable HTTP
    • Автоматическое получение токенов из приложения plugged.in
    • Безопасное хранение токенов и механизмы обновления
    • Аутентификация на стороне клиента не требуется
  • Улучшенная система уведомлений: Двунаправленная поддержка уведомлений
    • Отправка уведомлений в приложение plugged.in
    • Получение уведомлений от MCP-серверов
    • Пометка уведомлений как прочитанных/непрочитанных
    • Программное удаление уведомлений
  • Аналитика трендов: Отслеживание активности в реальном времени
    • Каждый вызов инструмента логируется и отслеживается
    • Участвует в расчётах трендов серверов
    • Метрики использования и аналитика популярности
  • Интеграция с реестром: Полная поддержка функций Registry v2
    • Автоматическое обнаружение серверов из реестра
    • Отслеживание установок и метрики
    • Поддержка серверов сообщества

📦 Возможности из v1.1.0

  • Поддержка Streamable HTTP: Полная поддержка нижестоящих MCP-серверов, использующих транспорт Streamable HTTP
  • Режим HTTP-сервера: Запуск прокси как HTTP-сервера с настраиваемыми портами
  • Гибкая аутентификация: Опциональная аутентификация по Bearer-токену для HTTP-эндпоинтов
  • Управление сессиями: Выбор между режимами с сохранением состояния (на основе сессий) или без состояния

🎯 Основные возможности из v1.0.0

  • Уведомления в реальном времени: Отслеживание всех действий MCP с полной поддержкой уведомлений
  • Интеграция RAG: Поддержка запросов, расширенных документами, через приложение plugged.in
  • Скрипты инспектора: Автоматизированные инструменты тестирования для отладки и разработки
  • Мониторинг состояния: Встроенная конечная точка ping для мониторинга подключения

🔧 Категории инструментов

Прокси предоставляет две отдельные категории инструментов:

🔧 Статические встроенные инструменты (всегда доступны)

Эти инструменты встроены в прокси и работают без какой-либо настройки сервера:

  • pluggedin_discover_tools - Умное обнаружение с кэшированием для мгновенных результатов
  • pluggedin_ask_knowledge_base - RAG-поиск по вашим документам с возможностями фильтрации по ИИ
  • pluggedin_send_notification - Отправка уведомлений с опциональной доставкой по email
  • pluggedin_create_document - Создание документов, сгенерированных ИИ, в вашей библиотеке
  • 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-сервера

Инструмент обнаружения интеллектуально показывает обе категории, предоставляя моделям ИИ немедленный доступ ко всем доступным возможностям.

🚀 Использование инструмента обнаружения

# 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
...

📋 Примеры использования буфера обмена

Система буфера обмена предоставляет постоянную память для рабочих процессов ИИ:

# 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-серверам создавать и искать документы с полным указанием авторства ИИ:

# 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+)
  • API-ключ из приложения plugged.in (получите его на 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_KEYAPI-ключ из приложения plugged.inДа-
PLUGGEDIN_API_BASE_URLБазовый URL приложения plugged.inНет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 HTTP12006
--statelessВключить режим без состояния для Streamable HTTPfalse
--require-api-authТребовать API-ключ для запросов Streamable HTTPfalse

Для полного списка опций:

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

🌐 Режим Streamable HTTP

Прокси может работать как HTTP-сервер вместо STDIO, обеспечивая веб-доступ и удалённые подключения.

Базовое использование

# 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 (по умолчанию)

Запустите контейнер в режиме STDIO для тестирования с MCP Inspector:

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

Это подключится к стандартному вводу/выводу работающего контейнера.

Остановка контейнера

Нажмите Ctrl+C в терминале, где выполняется docker run. Флаг --rm гарантирует автоматическое удаление контейнера при остановке.

☁️ Развёртывание в Smithery Cloud

Разверните прокси plugged.in MCP в Smithery Cloud для хостингового, постоянно доступного доступа к вашим MCP-серверам.

Быстрый старт

  1. Перейдите на smithery.ai и войдите в систему
  2. Подключите свою учётную запись GitHub и выберите репозиторий pluggedin-mcp
  3. Настройте API-ключ Plugged.in в интерфейсе Smithery
  4. Разверните и получите свою HTTPS-конечную точку

Преимущества

  • Доступность 24/7: Ваш прокси всегда работает
  • Нулевая конфигурация: Smithery автоматически определяет настройки из smithery.yaml
  • Автоматическое масштабирование: Обработка нескольких одновременных подключений
  • Веб-доступ: Идеально для веб-приложений и удалённых клиентов

Документация

Полные инструкции по развёртыванию, параметры конфигурации, устранение неполадок и технические детали смотрите здесь:

📖 Руководство по развёртыванию Smithery

Автономные агенты (предварительная версия)

Хаб спроектирован для сквозной поддержки агентных циклов:

MCP Client  →  plugged.in MCP Hub  →  (Plan → Act → Reflect)
                                ↘  Knowledge  ↘  Memory  ↘  Tools
  • Планирование — определение целей и ограничений, формирование графов задач.
  • Действие — вызов инструментов из единого каталога; безопасная маршрутизация между серверами STDIO/SSE/HTTP.
  • Рефлексия — сохранение результатов в Память и Знания (документы, заметки, артефакты) для улучшения последующих шагов.

Безопасность и эксплуатация
Включите --require-api-auth в режиме Streamable HTTP; используйте списки разрешённых команд, аргументов и переменных окружения. Сочетайте проверку на уровне сервера с клиентскими запросами, усиленными против инъекций в запросы. Используйте существующее логирование/телеметрию для отслеживания использования инструментов и изменений документов.

🏗️ Архитектура системы

Прокси-сервер 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. Перечисление возможностей: Прокси получает обнаруженные возможности из API приложения plugged.in
    • 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 шестнадцатеричных символа)

Сетевая безопасность

  • Защита от SSRF: Проверка URL блокирует доступ к:
    • Адресам localhost и loopback (127.0.0.1, ::1)
    • Диапазонам частных IP (10.x, 172.16-31.x, 192.168.x)
    • Link-local адресам (169.254.x)
    • Multicast и зарезервированным диапазонам
    • Распространённым портам внутренних служб (SSH, базы данных и т.д.)
  • Проверка заголовков: Защита от инъекций в заголовки с помощью:
    • Блокировки опасных заголовков
    • Проверки имён заголовков на соответствие RFC 7230
    • Обнаружения управляющих символов
    • Ограничения размера заголовков (макс. 8 КБ)
  • Ограничение частоты запросов:
    • Вызовы инструментов: 60 запросов в минуту
    • Вызовы API: 100 запросов в минуту
  • Очистка ошибок: Предотвращает раскрытие информации путём очистки сообщений об ошибках

Безопасность процессов

  • Безопасное выполнение команд: Использует execFile() вместо exec() для предотвращения инъекций в оболочку
  • Список разрешённых команд: Разрешает выполнение только:
    • node, npx — команды Node.js
    • python, python3 — команды Python
    • uv, uvx, uvenv — инструменты UV Python
  • Очистка аргументов: Удаляет метасимволы оболочки и управляющие символы из всех аргументов
  • Проверка переменных окружения: Разрешает только буквенно-цифровые ключи с подчёркиваниями

Безопасность Streamable HTTP

  • Отложенная аутентификация: Обнаружение инструментов не требует аутентификации, улучшая совместимость
  • Безопасность сессий: Криптографически безопасная генерация идентификаторов сессий
  • Защита CORS: Настраиваемые заголовки CORS для веб-доступа
  • Ограничения размера запросов: Предотвращает DoS-атаки через большие полезные нагрузки

Утилиты безопасности

Специальный модуль security-utils.ts предоставляет:

  • Проверку Bearer-токенов
  • Проверку URL с защитой от SSRF
  • Очистку аргументов команд
  • Проверку переменных окружения
  • Реализацию ограничения частоты запросов
  • Очистку сообщений об ошибках

Подробности реализации безопасности смотрите в SECURITY.md.

🧩 Интеграция с приложением plugged.in

Прокси-сервер plugged.in MCP разработан для бесшовной работы с приложением plugged.in, которое предоставляет:

  • Веб-интерфейс для управления конфигурациями MCP-серверов
  • Централизованное обнаружение возможностей (Инструменты, Ресурсы, Шаблоны, Запросы)
  • Библиотека документов RAG v2: Загружайте документы и включайте контент, сгенерированный ИИ, с полным указанием авторства
  • Управление пользовательскими инструкциями
  • Поддержка нескольких рабочих пространств для различных наборов конфигураций
  • Интерактивная площадка для тестирования MCP-инструментов с любой моделью ИИ
  • Аутентификация пользователей и управление API-ключами
  • Обмен документами ИИ: Создание, поиск и управление документами с отслеживанием авторства моделей

📚 Связанные ресурсы

🤝 Участие в разработке

Приветствуются любые вклады! Пожалуйста, не стесняйтесь отправлять Pull Request.

📝 Последние обновления

Версия 1.9.0 (сентябрь 2025) — Улучшения безопасности

🔒 Улучшенная очистка HTML

  • Очистка промышленного стандарта: Заменена пользовательская очистка HTML на основе регулярных выражений библиотекой sanitize-html
  • Предотвращение XSS: Комплексная защита от атак межсайтового скриптинга
  • Безопасность атрибутов HTML: Улучшенная очистка для контекстов атрибутов HTML (кавычки, амперсанды)
  • Инъекция строк формата: Исправлены уязвимости инъекции строк формата в логировании
  • Тестирование безопасности: Комплексное тестовое покрытие для всех функций очистки

🛡️ Улучшения безопасности

  • Соответствие CodeQL: Устранены все уязвимости безопасности, выявленные анализом GitHub CodeQL
  • Проверка ввода: Усилена проверка и очистка ввода во всех функциях
  • Обновление зависимостей: Добавлен sanitize-html для надёжной фильтрации HTML-контента
  • Тестовое покрытие: Расширен набор тестов безопасности с проверкой предотвращения XSS-атак

Версия 1.5.0 (январь 2025) — RAG v2

🤖 Обмен документами ИИ

  • Документы, сгенерированные ИИ: MCP-серверы теперь могут создавать документы в вашей библиотеке с полным указанием авторства ИИ
  • Отслеживание авторства моделей: Полная история того, какие модели ИИ создали или обновили каждый документ
  • Расширенный поиск документов: Фильтрация по модели ИИ, провайдеру, дате, тегам и типу источника
  • Версионирование документов: Отслеживание изменений и ведение истории версий для контента, сгенерированного ИИ
  • Поддержка нескольких источников: Документы из загрузок, генерации ИИ или API-интеграций

🔍 Расширенные возможности RAG

  • Семантический поиск: Улучшенная оценка релевантности с полнотекстовым поиском PostgreSQL
  • Умная фильтрация: Фильтрация результатов по видимости, авторству модели и источнику документа
  • Генерация сниппетов: Автоматическое извлечение сниппетов с подсветкой ключевых слов
  • Оптимизация производительности: Более быстрые запросы благодаря оптимизированной индексации

Версия 1.2.0 (январь 2025)

🔒 Улучшения безопасности

  • Проверка URL: Комплексная защита от SSRF, блокирующая частные IP, localhost и опасные порты
  • Список разрешённых команд: Только одобренные команды (node, npx, python и т.д.) могут выполняться
  • Очистка заголовков: Защита от атак инъекции в заголовки
  • Отложенная аутентификация: Улучшенная совместимость со Smithery благодаря обнаружению инструментов без аутентификации

🚀 Улучшения производительности

  • Оптимизированные сборки Docker: Многоэтапные сборки для минимального размера контейнера
  • Только production-зависимости: Тестовые файлы и зависимости для разработки исключены из образов Docker
  • Эффективность ресурсов: Спроектировано для развёртывания в средах с ограниченными ресурсами

🔧 Технические улучшения

  • Улучшенная обработка ошибок в транспорте Streamable HTTP
  • Улучшенная очистка сессий и управление памятью
  • Улучшенные типы TypeScript и организация кода

Версия 1.1.0 (декабрь 2024)

🚀 Новые функции

  • Поддержка Streamable HTTP: Подключение к нижележащим MCP-серверам с использованием современного транспорта Streamable HTTP
  • Режим HTTP-сервера: Запуск прокси как HTTP-сервера для веб-доступа
  • Гибкое управление сессиями: Выбор между режимами без состояния и с состоянием
  • Варианты аутентификации: Опциональная аутентификация по Bearer-токену для HTTP-конечных точек
  • Мониторинг состояния: Конечная точка /health для мониторинга службы

🔧 Технические улучшения

  • Обновлён MCP SDK до версии 1.13.1 для поддержки последней версии протокола
  • Добавлена интеграция с Express.js для функциональности HTTP-сервера
  • Улучшенные типы TypeScript для лучшего опыта разработчика

Версия 1.0.0 (июнь 2025)

🎯 Основные функции

  • Система уведомлений в реальном времени: Отслеживание всех действий MCP с комплексной поддержкой уведомлений
  • Интеграция RAG: Поддержка запросов, дополненных документами, через приложение plugged.in
  • Скрипты инспектора: Новые инструменты автоматизированного тестирования для отладки и разработки
  • Мониторинг состояния: Встроенная конечная точка ping для мониторинга соединения

🔒 Улучшения безопасности

  • Проверка ввода: Проверка и очистка всех вводов в соответствии с промышленными стандартами
  • Безопасность URL: Улучшенная проверка URL с защитой от SSRF
  • Безопасность окружения: Безопасный разбор переменных окружения с помощью dotenv
  • Очистка ошибок: Предотвращает раскрытие информации в ответах с ошибками

🐛 Исправления ошибок

  • Исправлено вмешательство в протокол JSON-RPC (разделение stdout и stderr)
  • Решена проблема проверки URL localhost для сред разработки
  • Исправлена обработка 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 оптимизирован для минимального размера:

  • Многоэтапный процесс сборки
  • Только production-зависимости в финальном образе
  • Тестовые файлы и зависимости для разработки исключены
  • Оптимизировано для сред с ограниченными ресурсами
# Build optimized Docker image
docker build -t pluggedin-mcp .

# Check image size
docker images pluggedin-mcp

📄 Лицензия

Этот проект лицензирован под лицензией MIT — подробности смотрите в файле LICENSE.

🙏 Благодарности