Skip to main content
Glama

privateGPT MCP Server

by Fujitsu-AI

Сервер MCP privateGPT

Оглавление

Сервер MCP privateGPT

Реализация сервера Model Context Protocol (MCP), которая позволяет использовать privateGPT в качестве агента для вашего предпочтительного клиента MCP. Это обеспечивает бесшовную интеграцию между мощными возможностями privateGPT и любым совместимым с MCP приложением.

Что такое МКП?

MCP — это открытый протокол, который стандартизирует, как приложения предоставляют контекст LLM. Думайте о MCP как о порте USB-C для приложений ИИ. Так же, как USB-C предоставляет стандартизированный способ подключения ваших устройств к различным периферийным устройствам и аксессуарам, MCP предоставляет стандартизированный способ подключения моделей ИИ к различным источникам данных и инструментам.

Почему МКП?

MCP помогает вам создавать агентов и сложные рабочие процессы поверх LLM. LLM часто нуждаются в интеграции с данными и инструментами, и MCP обеспечивает:

  • Растущий список готовых интеграций, к которым ваш LLM может напрямую подключиться
  • Гибкость переключения между поставщиками и вендорами LLM
  • Лучшие практики по защите данных в вашей инфраструктуре

Как это работает

По своей сути MCP следует архитектуре клиент-сервер, где хост-приложение может подключаться к нескольким серверам:

Общая архитектура MCP

  • Хосты MCP : программы, такие как приложения, Claude Desktop, IDE или инструменты ИИ, которым требуется доступ к данным через MCP.
  • Клиенты MCP : клиенты протокола, поддерживающие соединения 1:1 с серверами.
  • Серверы MCP : легкие программы, каждая из которых предоставляет определенные возможности через стандартизированный протокол контекста модели.
  • Локальные источники данных : файлы, базы данных и службы вашего компьютера, к которым серверы MCP могут получить безопасный доступ.
  • Удаленные службы : внешние системы, доступные через Интернет (например, через API), к которым могут подключаться серверы MCP.

Обзор

Этот сервер обеспечивает мост между клиентами MCP и API privateGPT, позволяя вам:

  • Общайтесь с privateGPT, используя как публичные, так и частные базы знаний
  • Создавайте и управляйте источниками знаний
  • Организуйте источники в группы
  • Управление доступом с помощью групповых разрешений

Почему агенты

Агент по отношению к LLM (большим языковым моделям) и серверам MCP — это специализированный программный компонент, который действует как посредник между языковыми моделями и приложениями. Он решает такие задачи, как обработка запросов, взаимодействие с LLM через MCP, управление рабочими процессами, обеспечение безопасности и эффективности в рамках всей системы и многое другое. Используя агентов, можно разрабатывать сложные приложения на основе ИИ так, чтобы они были эффективными, безопасными и масштабируемыми. Код для агентов в этом репозитории можно использовать для внедрения в собственные решения/приложения.

Взаимодействие между агентами, LLM и серверами MCP

Взаимодействие этих компонентов позволяет разрабатывать мощные, масштабируемые и безопасные приложения ИИ. Ниже приведен упрощенный сценарий, иллюстрирующий это взаимодействие:

  1. Пользовательский ввод: пользователь отправляет запрос через пользовательский интерфейс, размещенный на сервере MCP.
  2. Обработка агентом: агент на сервере MCP получает запрос, проверяет его и подготавливает для LLM.
  3. Взаимодействие с LLM: агент пересылает запрос в LLM, который генерирует ответ.
  4. Обработка ответа: агент получает ответ от LLM, при необходимости обрабатывает его дополнительно (например, форматирует, интегрирует с другими источниками данных) и отправляет его обратно пользователю.
  5. Безопасность и ведение журнала: в ходе этого процесса агент отслеживает взаимодействия, обеспечивает соблюдение политик безопасности и регистрирует соответствующую информацию для последующего анализа.

Преимущества использования агентов в этом контексте

  • Модульность: агенты позволяют четко разделить обязанности, что упрощает обслуживание и масштабирование системы.
  • Безопасность: Централизованное управление доступом и мониторинг действий помогают минимизировать риски безопасности.
  • Эффективность: автоматизированные агенты могут выполнять задачи быстрее и более последовательно, чем ручные процессы.
  • Гибкость: Агенты можно легко адаптировать или расширить для поддержки новых функций или изменений в бизнес-требованиях.

Важность шифрования паролей

В любом приложении, обрабатывающем конфиденциальные данные, безопасность имеет первостепенное значение. Этот сервер управляет двумя критическими наборами учетных данных:

  1. Заголовки прокси: используются, например, HAProxy для аутентификации и управления трафиком.
  2. Пароли доступа LLM: используются для защиты доступа к большим языковым моделям.

Хранение этих паролей в открытом виде создает значительные риски безопасности, включая несанкционированный доступ и потенциальные утечки данных. Чтобы снизить эти риски, важно шифровать эти пароли и обрабатывать только их зашифрованный текст в системе.

Преимущества использования только шифротекста

  • Повышенная безопасность: даже если злоумышленник получит доступ к файлам конфигурации или переменным среды, зашифрованные пароли останутся непонятными без соответствующих ключей дешифрования.
  • Соответствие требованиям: шифрование помогает соблюдать стандарты и правила безопасности, которые требуют защиты конфиденциальной информации.
  • Целостность: гарантирует невозможность подделки паролей, поддерживая целостность механизмов аутентификации.

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

Для обеспечения защиты данных и безопасной связи между клиентским приложением и сервером реализованы следующие функции безопасности. Эти функции охватывают шифрование, дешифрование, управление ключами и безопасность транспорта.


1. Безопасность транспортного уровня (TLS)

  • Для обеспечения безопасности связи между клиентом и сервером можно активировать TLS. Все данные, передаваемые между клиентом и сервером, шифруются с использованием TLS (минимальная версия 1.2).

Почему следует включить TLS между клиентом и сервером?

а) Шифрование связи

  • TLS (Transport Layer Security) гарантирует, что все данные, передаваемые между клиентом и сервером, зашифрованы. Это защищает конфиденциальную информацию, такую как пароли, данные кредитных карт и персональные данные, от атак с перехватом (атаки Man-in-the-Middle).

б) Целостность данных

  • TLS гарантирует, что передаваемые данные остаются неизменными и неизмененными. Проверка целостности гарантирует, что полученные данные точно такие же, как и отправленные.

в) Аутентификация

  • TLS обеспечивает безопасную аутентификацию сервера (и опционально клиента) с помощью цифровых сертификатов. Это не позволяет пользователям стать жертвами фишинговых атак на поддельных веб-сайтах.

г. Защита от атак типа «человек посередине»

  • TLS шифрует соединение, делая практически невозможным для злоумышленников перехват или манипуляцию трафиком. Без TLS злоумышленники могли бы захватывать и изменять пакеты данных.

е. Соблюдение стандартов и правил безопасности

  • Многие нормативные требования (например, GDPR, PCI-DSS) требуют безопасной передачи данных. TLS является основополагающим компонентом этих требований безопасности.

е. Предотвращение атак понижения и повторного воспроизведения

  • TLS защищает от атак, которые пытаются понизить версию соединения до небезопасной (атаки понижения) или повторить ранее действительные запросы (атаки повторного воспроизведения).

Заключение

Включение TLS между клиентом и сервером необходимо для обеспечения конфиденциальности данных, безопасности и целостности связи. Это не только защищает конфиденциальную информацию, но и помогает соответствовать требованиям соответствия и повышает доверие пользователей.


2. Шифрование пароля

Пароли могут быть зашифрованы с помощью криптографии с открытым ключом RSA (Rivest–Shamir–Adleman). Это гарантирует, что конфиденциальные данные, такие как пароли пользователей, никогда не будут передаваться в открытом виде.

Метод

  • Шифрование с открытым ключом длиной 2048 бит .
  • Заполнение : RSA_PKCS1_PADDING для повышения безопасности и предотвращения известных атак с заполнением.

Процесс

  1. Администратор сервера шифрует пароль клиента с помощью открытого ключа сервера ( id_rsa_public.pem ), выполнив node security/generate_encrypted_password.js ~/.ssh/id_rsa_public.pem и передав зашифрованный пароль клиенту.
  2. Альтернатива: Клиент шифрует пароль с помощью открытого ключа сервера ( id_rsa_public.pem ) с помощью keygen - Function. Поэтому функция должна быть включена в конфигурации сервера ( privateGPT.env.json ). Важно: Использование этой функции также означает передачу данных по сети. Поэтому убедитесь, что трафик данных защищен и не может быть перехвачен.
  3. Наконец, зашифрованный пароль отправляется на сервер, где он расшифровывается с помощью закрытого ключа сервера.

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

  • Асимметричное шифрование гарантирует, что расшифровать пароль сможет только сервер.
  • Даже если канал связи скомпрометирован, зашифрованные данные остаются в безопасности.

3. Управление ключами

Для обеспечения безопасности процессов передачи данных и шифрования соблюдаются следующие принципы управления ключами:

Открытый ключ

  • Надежно хранится на сервере ( id_rsa.pub ).
  • Используется только для шифрования и не представляет угрозы безопасности в случае раскрытия.

PEM-ключ

  • Надежно хранится на сервере ( id_rsa_public.pem ).
  • Необходимо создать с использованием публичного сертификата (см.: Конфигурация сервера )

Закрытый ключ

  • Надежно хранится на сервере ( id_rsa ).
  • Ограниченный доступ с соответствующими разрешениями на файл ( chmod 600 ).
  • Используется исключительно для операций дешифрования.

Поворот ключа

  • Ключи можно менять периодически или при обнаружении инцидента безопасности. Важно: если они перевыпускаются, клиенты или агенты AI немедленно теряют доступ к серверу MCP и требуют новый ключ RSA (зашифрованный пароль)!
  • Старые ключи надежно аннулируются.

4. Расшифровка на сервере

Расшифровка выполняется исключительно на сервере с использованием закрытого ключа:

Процесс

  1. Сервер получает зашифрованный пароль от клиента.
  2. Закрытый ключ расшифровывает пароль, чтобы получить исходный открытый текст.
  3. Расшифрованный пароль используется внутри системы (например, для аутентификации) и никогда не сохраняется в открытом виде.

Безопасное обращение

  • Расшифрованные пароли существуют в памяти только на время обработки.
  • Безопасные методы управления памятью гарантируют немедленное удаление конфиденциальных данных после использования.

Проверка сертификата

  • Сертификаты проверяются с обеих сторон, чтобы гарантировать подлинность сервера и клиента.
  • При желании можно включить взаимный TLS для повышения безопасности.

5. Токены авторизации

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

Управление токенами

  • Токены генерируются при успешном входе в систему.
  • Они недолговечны и автоматически сгорают по истечении заданного времени.
  • Токены подписываются с использованием HMAC или RSA, что делает их защищенными от несанкционированного доступа.

6. Ограничение генерации ключей (Keygen)

Для предотвращения несанкционированного использования системы генерация ключей ( keygen ) ограничена:

Конфигурация

  • Сервер имеет опцию конфигурации ( ALLOW_KEYGEN ) для включения или отключения генерации ключей.
  • Попытки вызвать функцию генератора ключей при отключенной функции приводят к сообщению об ошибке.

Аудит ведения журнала

  • Все операции по генерации ключей регистрируются в целях аудита и мониторинга.

7. Контроль доступа на основе сертификатов (CBAC)

  • Так как агент не требует пароля при активации аутентификации сертификата и входит на сервер с помощью ключа, он автоматически блокируется на этом сервере. Если он захочет войти на другой сервер MCP privateGPT, эта попытка входа будет отклонена, так как ключ проверяется по личному сертификату сервера.

Функции

  • Такие функции, как keygen , store_user и edit_source доступны только для авторизованных ролей.
  • Попытки несанкционированного доступа отклоняются с предоставлением подробных сообщений об ошибках.

Конфигурация

  • Включенные или отключенные функции можно указать в конфигурации сервера (объект Functions ).

8. Безопасная конфигурация

Конфигурация сервера содержит несколько опций, связанных с безопасностью:

SSL_VALIDATE

  • Проверяет сертификаты SSL/TLS для обеспечения безопасной связи.
  • Может быть включен или отключен в зависимости от требований среды (например, тестирование или производство).

PW_ENCRYPTION

  • Включает или отключает шифрование пароля.
  • Обеспечивает совместимость в средах, где шифрование невозможно.

9. Ведение журнала и мониторинг

Все события, связанные с безопасностью, регистрируются для мониторинга и устранения неполадок:

Зарегистрированные события

  • Неудачные попытки входа в систему.
  • Запросы на генерацию ключей.
  • Попытки несанкционированного доступа.
  • Ошибки шифрования и дешифрования.

Краткое содержание

Реализованные функции безопасности обеспечивают:

  • Конфиденциальность конфиденциальных данных благодаря шифрованию и безопасной передаче.
  • Целостность операций благодаря надежному управлению ключами и проверке токенов.
  • Настраиваемый контроль доступа к функциям системы на основе ролей .
  • Комплексный мониторинг для упреждающего обнаружения и реагирования на угрозы безопасности.

В совокупности эти меры обеспечивают безопасную среду для клиент-серверного взаимодействия и обработки данных.

Обзор функций сервера privateGPT

Сервер privateGPT предлагает надежный набор функций, разработанных для обеспечения эффективной, гибкой и безопасной связи с протоколом Model Context Protocol (MCP). Ниже приведен обзор основных функций и возможностей, доступных на сервере.


Основные характеристики

1. Аутентификация и авторизация

  • Функциональность входа : аутентификация пользователей с помощью адреса электронной почты и пароля для генерации токенов доступа.
  • Функция выхода из системы : безопасная отмена действия токенов пользователя для завершения сеансов.

2. Управление чатом

  • Начать чат : начать беседу с сервером, при желании используя общедоступные базы знаний или контексты определенных групп.
  • Продолжить чат : возобновите текущий разговор, указав идентификатор чата и последующее сообщение.
  • Извлечение информации о чате : извлечение метаданных и сообщений для определенного чата по его идентификатору.
  • Удалить все чаты : удаляет предыдущие истории чатов выполняющего пользователя (историю чатов).
  • Удалить чат : удаляет текущий чат выполняющего пользователя.

3. Управление группой

  • Список групп : просмотр персональных и назначаемых групп, доступных пользователю.
  • Создание групп : добавление новых групп с названиями и описаниями для организационных целей.
  • Удалить группы : удалить существующие группы (если включено в конфигурации).

4. Управление источниками

  • Создание источников : добавление новых источников с контентом и назначение их определенным группам.
  • Редактировать источники : обновить существующие источники новым контентом или метаданными.
  • Удалить источники : Удалите источники, которые больше не нужны.
  • Извлечение источников : получение информации о конкретном источнике по его идентификатору.
  • Список источников : просмотр всех источников, назначенных определенной группе.

5. Управление пользователями

  • Создание пользователей : регистрация новых пользователей с настраиваемыми ролями, группами и настройками.
  • Редактировать пользователей : обновить информацию о пользователе, включая имя, адрес электронной почты, пароль и роли.
  • Удалить пользователей : удалить пользователей из системы (если включено в конфигурации).
  • Повторная активация пользователя : повторная активация пользователя, который был ранее деактивирован.

6. Гибкость конфигурации

  • Активация/деактивация функций : включение или отключение отдельных функций сервера с помощью файла конфигурации .env .
  • Поддержка языков : настройте системные сообщения сервера на предпочитаемый вами язык (например, английский или немецкий).
  • Проверка SSL : включение и выключение проверки SSL для защищенных подключений к серверу.

7. Обработка и регистрация ошибок

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

8. Функции безопасности

  • Аутентификация на основе токенов : обеспечивает безопасный и контролируемый доступ к функциям сервера.
  • Ограниченный групповой доступ : возможность ограничить доступ к assignableGroups для повышения конфиденциальности.

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

  1. Поддержка клиентов : используйте функции чата для создания интеллектуальных диалоговых агентов.
  2. Управление знаниями : управление и извлечение структурированных данных из источников и групп.
  3. Многопользовательская совместная работа : создавайте, редактируйте и распределяйте пользователей по группам для совместной работы.
  4. Настраиваемая функциональность : активируйте только те функции, которые необходимы для вашего приложения.

Как использовать

  1. Скопируйте файл privateGPT.env.json.example в privateGPT.env.json , например, с помощью cp .\privateGPT.env.json.example .\privateGPT.env.json
  2. Настройте сервер, отредактировав файл privateGPT.env.json .
  3. Запустите сервер, используя предоставленный скрипт.
  4. Взаимодействуйте с сервером посредством вызовов API для использования его функций.

Подробные инструкции по использованию и примеры для каждой конечной точки см. в документации API.


PrivateGPT Server — это мощный инструмент для управления структурированными коммуникациями и данными в настраиваемой среде. Настройте его функции в соответствии с вашими потребностями для максимальной эффективности и контроля.

Установка

  1. Клонируйте репозиторий:
git clone https://github.com/privateGPT-dev/MCP-Server-for-MAS-Developments.git cd MCP-Server-for-MAS-Developments

Теперь вам предстоит выбрать: вручную или автоматически.

Manually step-by-step Installation

  1. Установите npm , например:
sudo apt install npm
  1. Установить зависимости
npm install
  1. Создайте проект:
npm run build

or Automatic Installation

  1. Сделайте InstallMPCServer.sh исполняемым (Linux):
sudo chmod +x InstallMPCServer.sh
  1. Запустите скрипт и все готово. Следите за сообщениями об ошибках и убедитесь, что все в порядке.
./InstallMPCServer.sh

Описание конфигурации

Конфигурация прокси-сервера

В этом разделе приведены подробные пояснения настроек Proxy_Config , используемых в системе.

Use Proxy

Если используется прокси-сервер, необходимо определить заголовок для аутентификации на прокси-сервере.

КлючОписаниеПример значения
ИСПОЛЬЗОВАТЬ_ПРОКСИОпределяет, должно ли приложение маршрутизироватьtrue
запросы через прокси-сервер.

Пример конфигурации бэкэнда HAProxy. Принимаются только запросы, содержащие 1234567890ABCDEFHIJ в заголовке:

backend mcpserver.mydomain.com acl valid_header req.hdr(X-Custom-Header) -m str "1234567890ABCDEFHIJ" http-request deny unless valid_header http-request del-header X-Custom-Header server stable 172.16.123.4:443 ssl verify none

Header Encryption

КлючОписаниеПример значения
ЗАГОЛОВОК_ЗАШИФРОВАННЫЙУказывает, зашифрован ли заголовок доступа к пользовательскому прокси-серверу.true
  • "true" : Заголовок доступа зашифрован. Используйте инструмент шифрования в папке безопасности на сервере, чтобы зашифровать заголовок.
  • "false" : заголовок доступа представляет собой обычный текст.

Access Header

Значение пользовательского заголовка, используемое для аутентификации прокси или контроля доступа. Если HEADER_ENCRYPTED имеет значение "true" , это значение должно быть расшифровано перед использованием.

КлючОписаниеПример значения
ACCESS_HEADERИспользуется для прокси-аутентификации или контроля доступа.123abc..

Примечания

  • Убедитесь, что ACCESS_HEADER надежно защищен, если для HEADER_ENCRYPTED установлено значение "true" .
  • Дважды проверьте настройки прокси-сервера, чтобы избежать проблем с подключением.

Конфигурация сервера

Для безопасной аутентификации сертификата создайте файл .env с вашими учетными данными privateGPT, например privateGPT.env.json. Параметры можно изменить в файле .env , чтобы настроить сервер и его функции.

Сгенерируйте сертификаты (если у вас нет сертификатов ssh, используйте ssh-keygen -t rsa ), необходимы файлы .pem:

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PEM > ~/.ssh/id_rsa_public.pem

После этого процесса вы можете создать Ciphertext из паролей, используя Encrypted Password Encryption Tool и протестировать шифр с помощью Encrypted Password Decryption Tool. Описание того, как это работает, вы найдете в разделе Security этого документа.

Далее вам следует предоставить сертификаты SSL/TLS server.crt и server.key , чтобы гарантировать шифрование связи с клиентами и агентами. Если вы хотите использовать самоподписанные сертификаты, вы можете сгенерировать их, выполнив следующую команду:

openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365 -subj "/CN=localhost"

Примечание: Клиенты и агенты могут обнаружить, что сервер использует самоподписанные сертификаты, поскольку они потенциально небезопасны по сравнению с официальными сертификатами, где проверяется организация и т. д. Однако клиенты и агенты могут принимать связь с этими сертификатами с соответствующим параметром (см. описание соответствующих параметров клиента и агента).


Ниже приведен пример файла конфигурации .env для сервера privateGPT, включая описания для каждой настройки. Настройте эти значения в соответствии с вашей средой и требованиями.


Server Port

КлючОписаниеПример значения
ПОРТПорт, на котором работает сервер MCP.5000

Language

Система поддерживает из коробки: de , en , pt , es , nl , fr . Каждый язык можно легко добавить, изменив privateGPT-messages.js . Этот файл должен быть сохранен после изменения в /src , а также в /dist .

КлючОписаниеПример значения
ЯЗЫКЯзык системных сообщений сервера ( en или de )."de"

SSL Validation

КлючОписаниеПример значения
SSL_VALIDATEИспользуйте "false" только в том случае, если сертификат сервера не может быть проверен клиентом."false"

Encryption

КлючОписаниеПример значения
PW_ENCRYPTIONЕсли установлено значение "true" сервер принимает только пароли в формате Ciphertext."false"
ПУБЛИЧНЫЙ_КЛЮЧУказывает путь в файловой системе к общедоступному PEM-файлу сервера, используемому для RSA."~/.ssh/id_rsa_public.pem"
ЧАСТНЫЙ_КЛЮЧУказывает путь в файловой системе к файлу закрытого ключа сервера, используемого для RSA."~/.ssh/id_rsa_public.pem"

SSL/TLS

КлючОписаниеПример значения
ВКЛЮЧИТЬ_TLSЕсли установлено значение "true" сервер обеспечивает только зашифрованную связь TLS с клиентами и агентами."true"
SSL_KEY_PATHУказывает путь в файловой системе к файлу ключа SSL/TLS сервера, используемому для SSL/TLS."~/.ssh/certs/server.key"
SSL_CERT_PATHУказывает путь в файловой системе к сертификату сервера, используемому для SSL/TLS."~/.ssh/certs/server.crt"

Restrictions

КлючОписаниеПример значения
ОГРАНИЧЕННЫЕ_ГРУППЫУстановка true запрещает клиенту доступ к assignableGroups .true
ВКЛЮЧИТЬ_OPEN_AI_COMP_APIУстановка true включает режим совместимости с API OpenAI.false

Logging

КлючОписаниеПример значения
WRITTEN_LOGFILEВключить файл журнала. Если установлено значение false , logs/server.log не будет записан. Если эта опция установлена в значение true , журнал можно получить через `http://:3000' сервера.true
LOG_IP-адресаЗаписывать IP-адреса клиентов/агентов. Если установлено значение false , эта информация заменяется на \*\*\*\*\* и не может быть восстановлена.false
АНОНИМНЫЙ_РЕЖИМОтключить все, что связано с ведением журнала. Никакие сообщения, ошибки и т. п. не записываются/не сохраняются и не отображаются.false\

Feature Activation/Deactivation

Управление доступностью отдельных функций сервера. Установите соответствующее значение true , чтобы включить функцию, или false , чтобы отключить ее. Отключенные функции вернут сообщение о том, что они недоступны.

КлючОписаниеПример значения
ВКЛЮЧИТЬ_ЛОГИНВключает или отключает функцию входа в систему.true
ВКЛЮЧИТЬ_ВЫХОДВключает или отключает функцию выхода из системы.true
ВКЛЮЧИТЬ_ЧАТВключает или отключает функцию чата.true
ВКЛЮЧИТЬ_ПРОДОЛЖЕНИЕ_ЧАТВключает или отключает возможность продолжения чата.true
ВКЛЮЧИТЬ_ПОЛУЧЕНИЕ_ИНФОРМАЦИИ_О_ЧАТЕВключает или отключает получение информации о чате.true
ВКЛЮЧИТЬ_УДАЛИТЬ_ВСЕ_ЧАТЫВключает или отключает получение информации о чате.true
ВКЛЮЧИТЬ_УДАЛИТЬ_ЧАТВключает или отключает получение информации о чате.true
ВКЛЮЧИТЬ_СПИСОК_ГРУППВключает или отключает группы листинга.true
ВКЛЮЧИТЬ_ГРУППУ_МАГАЗИНАВключает или отключает создание группы.true
ВКЛЮЧИТЬ_УДАЛИТЬ_ГРУППУВключает или отключает удаление группы.false
ВКЛЮЧИТЬ_СОЗДАНИЕ_ИСТОЧНИКАВключает или отключает создание источника.true
ВКЛЮЧИТЬ_РЕДАКТИРОВАНИЕ_ИСТОЧНИКАВключает или отключает редактирование источника.true
ВКЛЮЧИТЬ_УДАЛИТЬ_ИСТОЧНИКВключает или отключает удаление источника.true
ВКЛЮЧИТЬ_GET_SOURCEВключает или отключает получение источника.true
ВКЛЮЧИТЬ_СПИСОК_ИСТОЧНИКОВВключает или отключает источники листинга.true
ENABLE_STORE_USERВключает или отключает создание пользователя.true
ВКЛЮЧИТЬ_РЕДАКТИРОВАНИЕ_ПОЛЬЗОВАТЕЛЯВключает или отключает редактирование пользователя.false
ВКЛЮЧИТЬ_УДАЛИТЬ_ПОЛЬЗОВАТЕЛЯВключает или отключает удаление пользователя.false
ВКЛЮЧИТЬ_РЕАКТИВАЦИЮ_ПОЛЬЗОВАТЕЛЯВключает или отключает повторную активацию пользователя.false

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

  • Включить функцию : установите соответствующее значение в файле .env на true .
  • Отключить функцию : установите соответствующее значение в файле .env на false .
    • Сервер ответит сообщением о том, что функция отключена.

Пример записи .env :

{ "privateGPT_Url": { "PRIVATE_GPT_API_URL": "https://<YOUR_privateGPT_URL>/api/v1", "API_URL": "https://<YOUR_privateGPT_URL>/api/v1" }, "Proxy_Config": { "USE_PROXY": "true", "HEADER_ENCRYPTED": "true", "ACCESS_HEADER": "Example: BptfJBeRGLbZas+..." }, "Server_Config": { "PORT": 5000, "LANGUAGE": "en", "SSL_VALIDATE": "false", "PW_ENCRYPTION": "true", "ALLOW_KEYGEN": "false", "PUBLIC_KEY": "~/.ssh/id_rsa_public.pem", "PRIVATE_KEY": "~/.ssh/id_rsa", "ENABLE_TLS": "true", "SSL_KEY_PATH": "~/.ssh/certs/server.key", "SSL_CERT_PATH": "~/.ssh/certs/server.crt" }, "Restrictions": { "RESTRICTED_GROUPS": false, "ENABLE_OPEN_AI_COMP_API": true }, "Logging": { "WRITTEN_LOGFILE": true, "LOG_IPs": true, "ANONYMOUS_MODE": false }, "Functions": { "ENABLE_LOGIN": true, "ENABLE_LOGOUT": true, "ENABLE_CHAT": true, "ENABLE_CONTINUE_CHAT": true, "ENABLE_GET_CHAT_INFO": true, "ENABLE_DELETE_ALL_CHATS": true, "ENABLE_DELETE_CHAT": true, "ENABLE_LIST_GROUPS": true, "ENABLE_STORE_GROUP": true, "ENABLE_DELETE_GROUP": true, "ENABLE_CREATE_SOURCE": true, "ENABLE_EDIT_SOURCE": true, "ENABLE_DELETE_SOURCE": true, "ENABLE_GET_SOURCE": true, "ENABLE_LIST_SOURCES": true, "ENABLE_STORE_USER": true, "ENABLE_EDIT_USER": false, "ENABLE_DELETE_USER": false, "ENABLE_REACTIVATE_USER": true } }

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

Запустите сервер:

node dist/index.js

Сервер запустится и будет прослушивать stdio на предмет команд MCP.

Обработка ошибок

Сервер обрабатывает различные сценарии ошибок:

  • Ошибки аутентификации
  • Ошибки сети
  • Недействительные запросы
  • Ошибки API
  • Ограничение скорости
  • Ошибки тайм-аута

Ошибки сопоставляются с соответствующими кодами ошибок MCP и включают подробные сообщения для отладки.

Доступные инструменты

Сгенерировать зашифрованный пароль

Создайте пароль для записи Proxy_Config->Password клиента и/или сервера:

node security/generate_encrypted_password.js ~/.ssh/id_rsa_public.pem

Проверьте сгенерированный зашифрованный пароль

Для проверки шифрования используйте:

node security/generate_decrypted_password.js ~/.ssh/id_rsa

Дополнительную информацию см. в разделах Encrypted Password Generation Tool и Encrypted Password Decryption Tool ниже.


Инструмент для генерации зашифрованных паролей

Обзор

Инструмент генерации зашифрованных паролей — это скрипт Node.js, разработанный для безопасного шифрования паролей пользователей с использованием криптографии с открытым ключом RSA. Этот инструмент обеспечивает защиту конфиденциальных данных паролей во время передачи и хранения, используя надежные механизмы шифрования. Это важный компонент для систем, требующих безопасной обработки и передачи паролей между клиентами и серверами.

Функции

  • Безопасное шифрование: использует криптографию с открытым ключом RSA (Rivest–Shamir–Adleman) для шифрования конфиденциальных паролей.
  • Удобный интерфейс: предлагает пользователям безопасно вводить пароли через командную строку.
  • Обработка ошибок: предоставляет подробные сообщения об ошибках при отсутствии ключей или проблемах с шифрованием.
  • Гибкая интеграция: может быть интегрирована в более крупные системы, требующие безопасной обработки паролей и шифрования.

Как это работает

  1. Загрузка открытого ключа: скрипт загружает открытый ключ RSA из указанного пути к файлу, указанного в качестве аргумента командной строки.
  2. Ввод пароля: предлагает пользователю безопасно ввести свой пароль через командную строку.
  3. Процесс шифрования: используя загруженный открытый ключ и RSA_PKCS1_PADDING , скрипт шифрует введенный пароль.
  4. Вывод: зашифрованный пароль отображается в формате Base64, готовый к безопасной передаче или хранению.

Предпосылки

  • Node.js: Убедитесь, что Node.js установлен в вашей системе. Вы можете загрузить его с официального сайта Node.js.
  • Открытый ключ RSA: у вас должен быть доступ к открытому ключу RSA ( id_rsa_public.pem ), используемому для шифрования пароля.

Установка

  • Установить зависимости: Скрипт использует встроенные модули Node.js, поэтому никаких дополнительных зависимостей не требуется. Однако убедитесь, что ваша версия Node.js поддерживает модули ES6.
    rm -rf node_modules package-lock.json npm cache clean --force npm install

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

  1. Подготовьте свой открытый ключ RSA: убедитесь, что ваш открытый ключ RSA ( id_rsa_public.pem ) надежно сохранен на вашем сервере MCP.
  2. Запустите скрипт, вы найдете его в каталоге security сервера MCP: Выполните скрипт с помощью Node.js, указав путь к вашему открытому ключу в качестве аргумента командной строки.
    node encrypt_password.js /path/to/your/id_rsa_public.pem
    Пример:
    node security/encrypt_password.js ~/.ssh/id_rsa_public.pem
  3. Введите свой пароль: при появлении соответствующего запроса введите свой пароль безопасным образом.
    Please enter your password: ********
  4. Просмотр зашифрованного пароля: скрипт выведет зашифрованный пароль в формате Base64.
    Encrypted Password: <Your_Encrypted_Password>

Инструмент для расшифровки зашифрованного пароля

Обзор

Инструмент расшифровки зашифрованных паролей — это скрипт Node.js, разработанный для безопасной расшифровки зашифрованных паролей с использованием криптографии с закрытым ключом RSA. Этот инструмент обеспечивает защиту конфиденциальных данных пароля во время передачи и хранения, используя надежные механизмы шифрования и расшифровки. Для проверки или расшифровки зашифрованного пароля используйте закрытый ключ. Это полезно для обеспечения корректного выполнения шифрования.

Функции

  • Безопасное дешифрование: использует криптографию с закрытым ключом RSA (Rivest–Shamir–Adleman) для расшифровки конфиденциальных данных паролей.
  • Обработка ошибок: предоставляет подробные сообщения об ошибках при отсутствии ключей или проблемах дешифрования.
  • Удобный интерфейс: предлагает пользователям безопасно вводить зашифрованные пароли через командную строку.
  • Гибкая интеграция: может быть интегрирована в более крупные системы, требующие безопасной обработки паролей.

Как это работает

  1. Загрузка закрытого ключа: скрипт загружает закрытый ключ RSA из указанного пути к файлу, указанного в качестве аргумента командной строки.
  2. Ввод зашифрованного пароля: пользователю предлагается ввести зашифрованный пароль в формате Base64.
  3. Процесс расшифровки: используя загруженный закрытый ключ и RSA_PKCS1_PADDING, скрипт расшифровывает зашифрованный пароль.
  4. Вывод: Расшифрованный текстовый пароль отображается в консоли.

Предпосылки

  • Node.js: Убедитесь, что Node.js установлен в вашей системе. Вы можете загрузить его с официального сайта Node.js.
  • Закрытый ключ RSA: у вас должен быть доступ к закрытому ключу RSA ( id_rsa ) на вашем сервере MCP, который используется для расшифровки пароля.

Установка

  • Установить зависимости: Скрипт использует встроенные модули Node.js, поэтому никаких дополнительных зависимостей не требуется. Однако убедитесь, что ваша версия Node.js поддерживает модули ES6.

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

  1. Подготовьте свой закрытый ключ RSA: убедитесь, что ваш закрытый ключ RSA ( id_rsa ) надежно сохранен на вашем компьютере.
  2. Запустите скрипт, вы найдете его в каталоге security сервера MCP: :** Выполните скрипт с помощью Node.js, указав путь к вашему закрытому ключу в качестве аргумента командной строки.
    node decrypt_password.js /path/to/your/id_rsa
    Пример:
    node decrypt_password.js ~/.ssh/id_rsa
  3. Введите зашифрованный пароль: при появлении запроса введите зашифрованный пароль в формате Base64.
    Please enter the encrypted password: <Your_Encrypted_Password>
  4. Просмотр расшифрованного пароля: скрипт выведет расшифрованный пароль в виде открытого текста.
    Decrypted Password: your_plaintext_password

Это расшифрует зашифрованный пароль и отобразит исходное значение.

Примечания

  • Убедитесь, что файлы ~/.ssh/id_rsa_public.pem (открытый ключ) и ~/.ssh/id_rsa (закрытый ключ) существуют и имеют правильные разрешения.
  • Инструмент шифрования использует открытый ключ, тогда как инструмент дешифрования требует закрытый ключ.

Структура проекта

MCP-сервер для разработок MAS – полный обзор проекта

Этот репозиторий содержит сервер MCP и все связанные с ним клиентские реализации .
Ниже вы найдете полную структуру каталогов , начиная с корня проекта, включая:

  • clients (C# .Net, C++, Go, Java, JavaScript, PHP, Python),
  • dist ,
  • docs ,
  • logs ,
  • security ,
  • src ,
  • tests ,
  • ver и все подпапки/файлы.

Примечание:
Это прямой список каталогов с минимальными комментариями.


Структура проекта (полный список)

MCP-Server-for-MAS-Developments/ ├── dist │ └── public │ ├── index.html │ └── privateGPT-mcp-logo.png ├── docs │ └── images │ ├── alternative mcp client.png │ ├── mcp-general-architecture.png │ └── privateGPT-MCP.png ├── logs ├── security │ ├── generate_decrypted_password.js │ └── generate_encrypted_password.js ├── src │ ├── index.js │ ├── logger.js │ ├── privateGPT-messages.js │ ├── public │ │ ├── index.html │ │ └── privateGPT-mcp-logo.png │ ├── services │ │ └── privateGPT-service.ts │ └── types │ └── api.ts ├── tests ├── ver │ ├── index_np.js │ └── index_proxy_np.js └── clients ├── C# .Net │ ├── 1.0 mcp_login │ │ ├── bin │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── obj │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── mcp_login.csproj │ │ └── Program.cs │ ├── 1.1 mcp_logout │ │ ├── bin │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── obj │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── mcp_logout.csproj │ │ └── Program.cs │ ├── 2.0 mcp_chat │ │ ├── bin │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── obj │ │ │ └── Debug │ │ │ └── net9.0 │ │ ├── mcp_chat.csproj │ │ └── Program.cs │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── Code Archiv │ │ ├── mcp_chat.cs │ │ ├── mcp_continue_chat.cs │ │ ├── ... │ │ └── mcp_store_user.cs │ └── README.md (14,924 bytes) ├── C++ │ ├── 1.0 mcp_login │ │ ├── MCPLoginClient.cpp │ │ └── MCPLoginClient.exe │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── 9.0 mcp_keygen │ └── README.md (15,109 bytes) ├── Go │ ├── 1.0 mcp_login │ │ ├── MCPLoginClient.go │ │ └── MCPLoginClient.exe │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── 9.0 mcp_keygen │ └── README.md (14,903 bytes) ├── Java │ ├── 1.0 mcp_login │ │ ├── json-20241224.jar │ │ ├── MCPLoginClient.class │ │ └── MCPLoginClient.java │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ └── README.md (16,208 bytes) ├── JavaScript │ ├── 1.0 mcp_login │ │ └── MCPLoginClient.js │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── 9.0 mcp_keygen │ └── README.md (15,692 bytes) ├── PHP │ ├── 1.0 mcp_login │ │ └── MCPLoginClient.php │ ├── 1.1 mcp_logout │ ├── 2.0 mcp_chat │ ├── 2.1 mcp_continue_chat │ ├── 2.2 mcp_get_chat_info │ ├── 3.0 mcp_create_source │ ├── 3.1 mcp_get_source │ ├── 3.2 mcp_list_sources │ ├── 3.3 mcp_edit_source │ ├── 3.4 mcp_delete_source │ ├── 4.0 mcp_list_groups │ ├── 4.1 mcp_store_group │ ├── 4.2 mcp_delete_group │ ├── 5.0 mcp_store_user │ ├── 5.1 mcp_edit_user │ ├── 5.2 mcp_delete_user │ ├── 9.0 mcp_keygen │ └── README.md (15,636 bytes) └── Python ├── 1.0 mcp_login │ └── MCPLoginClient.py ├── 1.1 mcp_logout ├── 2.0 mcp_chat ├── 2.1 mcp_continue_chat ├── 2.2 mcp_get_chat_info ├── 3.0 mcp_create_source ├── 3.1 mcp_get_source ├── 3.2 mcp_list_sources ├── 3.3 mcp_edit_source ├── 3.4 mcp_delete_source ├── 4.0 mcp_list_groups ├── 4.1 mcp_store_group ├── 4.2 mcp_delete_group ├── 5.0 mcp_store_user ├── 5.1 mcp_edit_user ├── 5.2 mcp_delete_user ├── 9.0 mcp_keygen └── README.md (15,630 bytes)

Лицензия

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

-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Реализация сервера, которая обеспечивает безопасную связь между клиентами MCP и privateGPT, позволяя пользователям общаться с privateGPT с помощью баз знаний и управлять источниками, группами и пользователями через стандартизированный протокол контекста модели.

  1. Сервер MCP privateGPT
    1. Что такое МКП?
    2. Обзор
  2. Почему агенты
    1. Взаимодействие между агентами, LLM и серверами MCP
    2. Преимущества использования агентов в этом контексте
  3. Безопасность
    1. Безопасность транспортного уровня (TLS)
    2. Почему следует включить TLS между клиентом и сервером?
    3. Заключение
    4. Шифрование пароля
    5. Управление ключами
    6. Расшифровка на сервере
    7. Токены авторизации
    8. Ограничение генерации ключей (Keygen)
    9. Контроль доступа на основе сертификатов (CBAC)
    10. Безопасная конфигурация
    11. Ведение журнала и мониторинг
    12. Краткое содержание
  4. Обзор функций сервера privateGPT
    1. Основные характеристики
    2. Установка
    3. Описание конфигурации
    4. Примечания
    5. Server Port
    6. Language
    7. SSL Validation
    8. Encryption
    9. SSL/TLS
    10. Restrictions
    11. Logging
    12. Feature Activation/Deactivation
    13. Использование
    14. Использование
    15. Обработка ошибок
    16. Доступные инструменты
  5. Инструмент для генерации зашифрованных паролей
    1. Обзор
    2. Функции
    3. Как это работает
    4. Предпосылки
    5. Установка
    6. Использование
  6. Инструмент для расшифровки зашифрованного пароля
    1. Обзор
    2. Функции
    3. Как это работает
    4. Предпосылки
    5. Установка
    6. Использование
    7. Структура проекта
    8. Лицензия

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    MCP Server simplifies the implementation of the Model Context Protocol by providing a user-friendly API to create custom tools and manage server workflows efficiently.
    Last updated -
    4
    3
    TypeScript
    MIT License
  • -
    security
    F
    license
    -
    quality
    Facilitates integration of PrivateGPT with MCP-compatible applications, enabling chat functionalities and secure management of knowledge sources and user access.
    Last updated -
    • Linux
  • A
    security
    F
    license
    A
    quality
    This MCP server provides persistent memory integration for chat applications by utilizing a local knowledge graph to remember user information across interactions.
    Last updated -
    9
    26,187
    1
    JavaScript
  • -
    security
    A
    license
    -
    quality
    Provides MCP (Model Control Protocol) tools for accessing and interacting with Google Chat spaces and messages through OAuth2 authentication.
    Last updated -
    6
    Python
    MIT License

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Fujitsu-AI/MCP-Server-for-MAS-Developments'

If you have feedback or need assistance with the MCP directory API, please join our Discord server