Skip to main content
Glama
infinyte

Model Context Protocol (MCP) Server

by infinyte

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

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

Функции

  • Унифицированный API для нескольких поставщиков ИИ (Anthropic, OpenAI)

  • Поддержка завершения чата и устаревших завершений

  • Поддержка вызова инструмента

  • Обработка контекстных/системных сообщений

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

  • База данных MongoDB для сохранения и управления состоянием

  • История и аналитика выполнения инструмента

Related MCP server: Model Control Plane (MCP) Server

Установка

# 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

Latest Blog Posts

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/infinyte/mcp-server'

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