Plugged.in MCP Server
официальныйВсесторонний прокси, объединяющий несколько MCP-серверов в единый MCP. Обеспечивает обнаружение и управление инструментами, подсказками, ресурсами и шаблонами на разных серверах, а также площадку для отладки при создании MCP-серверов.
Документация
plugged.in MCP Hub — Прокси · Знания · Память · Инструменты
Перекрёсток для обмена данными ИИ
Единый MCP-хаб, который даёт вашему ИИ Знания, Память и Инструменты — не просто прокси. Управляйте и тестируйте все MCP-серверы через одно подключение, одновременно используя рабочие процессы с учётом документов и расширенной памятью на разных клиентах.
📋 Обзор
Прокси-сервер 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- Отправка уведомлений с опциональной доставкой по emailpluggedin_create_document- Создание документов, сгенерированных ИИ, в вашей библиотекеpluggedin_list_documents- Список документов с опциями фильтрацииpluggedin_search_documents- Поиск конкретных документов по запросуpluggedin_get_document- Получение полного содержимого конкретного документа по IDpluggedin_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_KEY | API-ключ из приложения 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-http | stdio |
--port <number> | Порт для сервера Streamable HTTP | 12006 |
--stateless | Включить режим без состояния для Streamable HTTP | false |
--require-api-auth | Требовать API-ключ для запросов Streamable HTTP | false |
Для полного списка опций:
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- Отправка сообщений MCPGET /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-серверам.
Быстрый старт
- Перейдите на smithery.ai и войдите в систему
- Подключите свою учётную запись GitHub и выберите репозиторий
pluggedin-mcp - Настройте API-ключ Plugged.in в интерфейсе Smithery
- Разверните и получите свою 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
🔄 Рабочий процесс
- Конфигурация: Прокси получает конфигурации серверов из приложения plugged.in
- Умное обнаружение (
pluggedin_discover_tools):- Проверка кэша: Сначала проверяет наличие закэшированных данных (< 1 секунды)
- Мгновенный ответ: Немедленно возвращает статические инструменты + закэшированные динамические инструменты
- Фоновое обновление: Для
force_refresh=trueвыполняет обнаружение в фоне, показывая текущие инструменты - Полное обнаружение: Выполняет полное обнаружение только при отсутствии закэшированных данных
- Перечисление возможностей: Прокси получает обнаруженные возможности из API приложения plugged.in
tools/list: Получает из/api/tools(включает статические + динамические инструменты)resources/list: Получает из/api/resourcesresource-templates/list: Получает из/api/resource-templatesprompts/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 шестнадцатеричных символа)
Сетевая безопасность
- Защита от 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.jspython,python3— команды Pythonuv,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-ключами
- Обмен документами ИИ: Создание, поиск и управление документами с отслеживанием авторства моделей
📚 Связанные ресурсы
- Репозиторий приложения plugged.in
- Спецификация Model Context Protocol (MCP)
- Документация Claude Desktop
- Документация Cline
🤝 Участие в разработке
Приветствуются любые вклады! Пожалуйста, не стесняйтесь отправлять 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.
🙏 Благодарности
- Вдохновлено MCP Proxy Server
- Построено на основе Model Context Protocol