Model Context Protocol (MCP) Server

by infinyte

Integrations

  • Enables environment-based configuration of API keys and server settings through .env file management

  • Supports development mode with automatic server reloading when code changes are detected

  • Provides access to OpenAI models (GPT) and DALL-E image generation through a unified API, supporting chat completions, legacy completions, and tool calling

Сервер протокола контекста модели (MCP)

Простая серверная реализация для протокола контекста модели, которая предоставляет унифицированный API для нескольких поставщиков моделей ИИ.

Функции

  • Унифицированный API для нескольких поставщиков ИИ (Anthropic, OpenAI)
  • Поддержка завершения чата и устаревших завершений
  • Поддержка вызова инструмента
  • Обработка контекстных/системных сообщений
  • Конфигурация на основе среды
  • База данных MongoDB для сохранения и управления состоянием
  • История и аналитика выполнения инструмента

Установка

# Clone the repository git clone <repository-url> cd testmcp # Install dependencies npm install # Run the interactive setup npm run setup

Скрипт настройки поможет вам настроить необходимые ключи API:

  • ANTHROPIC_API_KEY - Для моделей Клода
  • OPENAI_API_KEY — для моделей GPT и генерации образов DALL-E
  • STABILITY_API_KEY — для генерации стабильного диффузионного изображения
  • GOOGLE_CSE_API_KEY и GOOGLE_CSE_ID — для функциональности веб-поиска
  • BING_SEARCH_API_KEY — для резервного веб-поиска

При желании вы также можете вручную отредактировать файл .env .

Настройка MongoDB

Сервер MCP использует MongoDB для сохранения данных. У вас есть несколько вариантов настройки MongoDB:

Вариант 1: Автоматическая настройка (рекомендуется)

Запустите скрипт установки MongoDB, который проведет вас через весь процесс:

# Run the MongoDB setup script npm run setup-mongodb

Этот скрипт:

  1. Проверьте, доступен ли Docker
  2. Запустите MongoDB с помощью Docker Compose (если доступно)
  3. Настройте соединение в вашем .env-файле
  4. Проверьте соединение с MongoDB

Вариант 2: Ручная настройка Docker

Самый простой способ начать работу с MongoDB — использовать включенную конфигурацию Docker Compose:

# Start MongoDB and Mongo Express in Docker docker compose up -d # Update your .env file with the connection string echo "MONGODB_URI=mongodb://mcpuser:mcppassword@localhost:27017/mcp-server" >> .env

MongoDB будет доступен по адресу mongodb://mcpuser:mcppassword@localhost:27017/mcp-server
Mongo Express (веб-администратор) будет доступен по адресу http://localhost:8081

Вариант 3: Локальная установка MongoDB

Если вы предпочитаете установить MongoDB локально:

  1. Установите MongoDB с https://www.mongodb.com/try/download/community
  2. Запустите службу MongoDB
  3. Обновите файл .env следующим образом:
    MONGODB_URI=mongodb://localhost:27017/mcp-server

Вариант 4: MongoDB Atlas (Облако)

Для производственного использования рекомендуется использовать MongoDB Atlas:

  1. Создайте учетную запись на https://www.mongodb.com/cloud/atlas
  2. Создать новый кластер
  3. Настройте пользователя базы данных и добавьте свой IP-адрес в белый список
  4. Получите строку подключения и обновите файл .env :
    MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/mcp-server?retryWrites=true&w=majority

Миграция базы данных

Чтобы перенести существующие данные в MongoDB:

# Run the migration script npm run migrate-mongodb

Этот скрипт:

  1. Перенос определений инструментов в MongoDB
  2. Перенос конфигураций (например, ключей API) в MongoDB
  3. Импортируйте любые резервные данные, если таковые имеются.

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

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

# Interactive startup (checks for API keys) npm start # Development mode with auto-reload npm run dev # Quick start (skips environment checks) npm run quick-start # Start server with PM2 process manager npm run pm2:start # Start server with PM2 in production mode npm run pm2:start:prod

Сервер будет работать по адресу http://localhost:3000 (или по порту, указанному вами в .env).

Параметры запуска
  1. Стандартный запуск ( npm start ):
    • Проверяет, настроены ли ключи API
    • Запрашивает настройку, если ключи не найдены
    • Рекомендуется для начинающих пользователей.
  2. Режим разработки ( npm run dev ):
    • Использует nodemon для автоматической перезагрузки при изменении кода
    • Продолжает выполнять проверки окружающей среды
    • Лучшее для развития
  3. Быстрый старт ( npm run quick-start ):
    • Обходит все проверки среды
    • Немедленно запускает сервер
    • Полезно, когда вы знаете, что ваша конфигурация верна.
  4. Режим производства PM2 ( npm run pm2:start:prod ):
    • Запускает сервер с помощью менеджера процессов PM2
    • Автоматически перезапускается в случае сбоя сервера
    • Оптимизировано для производственных сред
    • Обходит проверки окружающей среды

Использование диспетчера процессов PM2

Сервер может работать с PM2, менеджером производственных процессов для приложений Node.js. PM2 предоставляет такие функции, как:

  • Управление процессами (перезапуск при сбое)
  • Управление журналами
  • Мониторинг производительности
  • Балансировка нагрузки (для нескольких экземпляров)
Команды PM2
# Start the server with PM2 npm run pm2:start # Start in production mode npm run pm2:start:prod # View logs npm run pm2:logs # Monitor performance npm run pm2:monit # Restart the server npm run pm2:restart # Stop the server npm run pm2:stop # Remove the server from PM2 npm run pm2:delete

Конфигурация PM2 хранится в файле ecosystem.config.js . Вы можете изменить этот файл, чтобы изменить:

  • Имя процесса
  • Переменные среды
  • Ограничения памяти
  • Конфигурация развертывания
  • Количество экземпляров (для балансировки нагрузки)

Конечные точки API

POST /mcp/:provider

Делайте запросы к моделям ИИ через унифицированный API.

Параметры URL:

  • provider : Используемый поставщик ИИ ( anthropic или openai )

Текст запроса:

{ "messages": [ { "role": "user", "content": "Your prompt here" } ], "model": "claude-3-opus-20240229", // Optional, provider-specific model name "tools": [...], // Optional, tools for function calling "context": "System message or context" // Optional }

ИЛИ (устаревший формат):

{ "prompt": "Your prompt here", "model": "claude-3-opus-20240229", // Optional "context": "System message or context" // Optional }

Ответ: возвращает необработанный ответ от API провайдера.

GET /tools/available

Получите полный список всех доступных инструментов с подробной информацией.

Параметры запроса:

  • format - Формат ответа: json (по умолчанию), yaml , table или html
  • category - Фильтрация инструментов по категории (необязательно)
  • enabled - Фильтр по статусу включения: true (по умолчанию) или false
  • search - Поиск инструментов по названию, описанию или тегам
  • provider - Фильтрация инструментов по поставщику (например, openai , google )
  • limit - Максимальное количество возвращаемых инструментов (для пагинации)
  • offset - Смещение для пагинации (по умолчанию: 0)

Ответ (формат JSON):

{ "success": true, "count": 10, "metadata": { "categories": ["web", "image", "utility"], "providers": ["openai", "anthropic", "internal"], "totalCount": 24, "offset": 0, "limit": 10 }, "tools": [ { "name": "web_search", "description": "Search the web for information", "category": "web", "version": "1.0.0", "provider": "google", "enabled": true, "parameters": { "query": { "type": "string", "description": "The search query", "required": true }, "limit": { "type": "number", "description": "Maximum number of results", "required": false, "default": 5 } }, "usage": { "endpoint": "/tools/web/search", "method": "POST", "parameters": { /* same as above */ } }, "metadata": { "createdAt": "2023-10-15T12:00:00Z", "updatedAt": "2024-04-20T09:30:00Z", "usageCount": 1245 } } // ... more tools ] }
GET /health

Конечная точка проверки работоспособности, которая возвращает статус 200, если сервер работает.

Управление данными

Резервное копирование баз данных

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

# Create a full backup npm run backup-mongodb # Create a backup with execution history npm run backup-mongodb -- --with-executions # List existing backups npm run backup-mongodb -- --list
Тестирование соединения с базой данных

Чтобы проверить настройку MongoDB:

# Run the database test script npm run test-mongodb

Примеры клиентов

Клиент командной строки

Тестовый клиент включен в src/client.js . Чтобы запустить его:

node src/client.js
Веб-клиент

Простой веб-интерфейс доступен по адресу http://localhost:3000 , когда сервер запущен. Вы можете использовать его для тестирования API прямо из браузера.

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

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

Инструменты Discovery

GET /tools/available — выводит список всех доступных инструментов с подробной информацией.

  • Поддерживает несколько форматов: JSON, YAML, HTML и таблицы ASCII.
  • Обеспечивает фильтрацию по категории, поставщику и поисковым запросам.
  • Включает подробные метаданные и примеры использования для каждого инструмента.

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

# Get all tools in JSON format curl http://localhost:3000/tools/available # Get tools in a specific category curl http://localhost:3000/tools/available?category=web # Search for image-related tools curl http://localhost:3000/tools/available?search=image # Get a formatted HTML page of all tools curl http://localhost:3000/tools/available?format=html > tools.html

Инструменты веб-поиска

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

  1. Поиск в Интернете ( /tools/web/search )
    • Поиск информации в Интернете по заданному запросу
    • Параметры: query (обязательно), limit (необязательно)
    • Требуется: переменные среды GOOGLE_CSE_API_KEY и GOOGLE_CSE_ID
    • Возвращается к BING_SEARCH_API_KEY , если поиск Google не удался
  2. Веб-контент ( /tools/web/content )
    • Извлечение и извлечение контента из определенного URL-адреса
    • Параметры: url (обязательно), useCache (необязательно)
  3. Веб-пакет ( /tools/web/batch )
    • Параллельное извлечение контента из нескольких URL-адресов
    • Параметры: urls (обязательный массив), useCache (необязательно)

Инструменты создания изображений

Сервер также включает в себя инструменты для создания, редактирования и варьирования изображений:

  1. Создать изображение ( /tools/image/generate )
    • Сгенерировать изображение на основе текстовой подсказки
    • Параметры:
      • prompt (обязательно): Подробное описание изображения
      • provider (необязательно): openai или stability (по умолчанию openai )
      • options (необязательно): параметры, зависящие от поставщика
  2. Редактировать изображение ( /tools/image/edit )
    • Редактировать существующее изображение с помощью текстовой подсказки
    • Параметры:
      • imagePath (обязательно): Путь к редактируемому изображению.
      • prompt (обязательно): Описание вносимого изменения
      • maskPath (необязательно): Путь к изображению маски
  3. Создать вариацию изображения ( /tools/image/variation )
    • Создайте вариант существующего изображения
    • Параметры:
      • imagePath (обязательно): Путь к изображению для создания вариаций

Примечание: Чтобы использовать эти инструменты, вам необходимо установить ключи API в вашем файле .env :

  • Для изображений OpenAI: OPENAI_API_KEY
  • Для изображений ИИ стабильности: STABILITY_API_KEY
  • Для веб-поиска: GOOGLE_CSE_API_KEY и GOOGLE_CSE_ID

Интеграция инструментов с моделями ИИ

Сервер MCP автоматически обрабатывает вызов и выполнение инструментов с моделями ИИ. Когда модель решает использовать инструмент, сервер:

  1. Выполняет запрошенный инструмент с указанными параметрами.
  2. Возвращает ответ инструмента на модель
  3. Затем модель может включить ответ инструмента в свой окончательный ответ.
Поиск инструментов для моделей ИИ

Модели ИИ могут использовать конечную точку /tools/available чтобы узнать, какие инструменты доступны и как их использовать. Это особенно полезно для:

  • Динамическое обнаружение инструментов во время выполнения
  • Самодокументирование для агентов ИИ
  • Предоставление возможности системам ИИ адаптироваться к имеющимся возможностям

Пример системного запроса для моделей ИИ:

You have access to external tools through the MCP server. Before using any tools, you should check what tools are available by calling: GET /tools/available This will return a list of all available tools with their parameters and usage instructions. You can then use these tools by following the provided usage patterns.

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

Пример кода, демонстрирующий использование инструмента, можно найти в каталоге /examples

Добавление новых поставщиков или инструментов

Добавление новых поставщиков ИИ

Чтобы добавить новых поставщиков ИИ:

  1. Добавьте SDK провайдера в проект
  2. Создайте новую функцию-обработчик в server.js
  3. Добавить новый случай в обработчик основного маршрута

Добавление новых инструментов

Чтобы добавить новые инструменты на сервер:

  1. Создайте новую реализацию инструмента в каталоге /src/tools
  2. Добавьте определение инструмента в tool-definitions.js
  3. Обновите функции выполнения инструмента в server.js
  4. Добавить новые конечные точки API для прямого использования инструмента (при необходимости)

Лицензия

МСК

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Унифицированный сервер API, который обеспечивает взаимодействие с несколькими поставщиками моделей ИИ, такими как Anthropic и OpenAI, через единый интерфейс, поддерживающий завершение чата, вызов инструментов и обработку контекста.

  1. Функции
    1. Установка
      1. Настройка MongoDB
        1. Вариант 1: Автоматическая настройка (рекомендуется)
        2. Вариант 2: Ручная настройка Docker
        3. Вариант 3: Локальная установка MongoDB
        4. Вариант 4: MongoDB Atlas (Облако)
      2. Миграция базы данных
        1. Использование
          1. Запустить сервер
          2. Использование диспетчера процессов PM2
          3. Конечные точки API
          4. Управление данными
          5. Примеры клиентов
        2. Доступные инструменты
          1. Инструменты Discovery
          2. Инструменты веб-поиска
          3. Инструменты создания изображений
          4. Интеграция инструментов с моделями ИИ
          5. Пример использования инструмента
        3. Добавление новых поставщиков или инструментов
          1. Добавление новых поставщиков ИИ
          2. Добавление новых инструментов
        4. Лицензия

          Related MCP Servers

          • -
            security
            A
            license
            -
            quality
            This server facilitates the invocation of AI models from providers like Anthropic, OpenAI, and Groq, enabling users to manage and configure large language model interactions seamlessly.
            Last updated -
            4
            Python
            MIT License
          • -
            security
            -
            license
            -
            quality
            An open standard server implementation that enables AI assistants to directly access APIs and services through Model Context Protocol, built using Cloudflare Workers for scalability.
            Last updated -
            TypeScript
          • -
            security
            F
            license
            -
            quality
            A modern AI service proxy that enables interaction with multiple AI providers (Anthropic Claude, OpenAI) through a unified API, deployed globally using Cloudflare Workers.
            Last updated -
            13
            TypeScript
          • A
            security
            F
            license
            A
            quality
            A Model Context Protocol server that enables AI assistants to interact with the Omi API for retrieving and creating conversations and memories for users.
            Last updated -
            4
            TypeScript

          View all related MCP servers

          ID: x9ucq0kwqj