Skip to main content
Glama

Шаблон MCP: сервер контекстного протокола модели

Этот сервер реализует Model Context Protocol (MCP) для глобального использования в качестве шаблона. Он обеспечивает стандартизированный способ подключения моделей ИИ к различным источникам данных и инструментам с использованием Model Context Protocol.

Функции

  • Реализует транспорт MCP Server-Sent Events (SSE)

  • Обеспечивает надежную структуру для создания пользовательских серверов MCP

  • Включает примеры инструментов с правильными определениями типов.

  • Безопасная аутентификация с помощью ключа API

  • Возможности ведения журнала с различными уровнями серьезности

  • Управление сеансами для нескольких клиентских подключений

  • Мягкая обработка завершения работы сигналов SIGINT и SIGTERM

Related MCP server: SourceSync.ai MCP Server

Инструменты

В настоящее время сервер включает в себя следующий пример инструмента:

  • calculator : выполняет основные арифметические операции (сложение, вычитание, умножение, деление)

Информацию о том, как добавлять собственные инструменты, можно найти в разделе «Расширение шаблона» .

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

Конфигурация сервера централизована в src/config.ts . Это позволяет легко настраивать параметры без изменения нескольких файлов.

// Essential configuration options
export const config = {
  server: {
    name: "mcp-boilerplate",
    version: "1.0.0",
    port: parseInt(process.env.PORT || "4005"),
    host: process.env.HOST || "localhost",
    apiKey: process.env.API_KEY || "dev_key",
  },
  sse: {
    // How often to send keepalive messages (in milliseconds)
    keepaliveInterval: 30000,
    // Whether to send ping events in addition to comments
    usePingEvents: true,
    // Initial connection message
    sendConnectedEvent: true,
  },
  tools: {
    // Number of retries for failed tool executions
    maxRetries: 3,
    // Delay between retries (in milliseconds)
    retryDelay: 1000,
    // Whether to send notifications about tool execution status
    sendNotifications: true,
  },
  logging: {
    // Default log level
    defaultLevel: "debug",
    // How often to send log messages (in milliseconds)
    logMessageInterval: 10000,
  },
};

Устранение неполадок, связанных с тайм-аутами SSE

Если вы столкнулись с ошибкой «Body timeout error» при подключении MCP:

  1. Уменьшите keepaliveInterval , чтобы отправлять более частые сообщения keepalive (например, 15000 мс)

  2. Убедитесь, что usePingEvents включен для дополнительной стабильности соединения.

  3. Проверьте наличие тайм-аутов прокси-сервера, если вы используете прокси-сервер.

Настраивать

  1. Установить зависимости:

npm install
  1. Создайте файл .env со следующими переменными:

PORT=4005
API_KEY=your_api_key
  1. Создайте проект:

npm run build
  1. Запустите сервер:

npm run start:sse

Разработка

# Start in development mode with hot reloading
npm run start

# Start with PM2 for production
npm run start:pm2

# Development mode with nodemon
npm run dev

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

  • /health : Конечная точка проверки работоспособности, которая возвращает статус и версию сервера.

  • /sse : конечная точка SSE для установления соединений MCP (требуется ключ API)

  • /messages : Конечная точка обработки сообщений для клиент-серверного взаимодействия

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

Чтобы подключить MCP к этому серверу, добавьте следующую конфигурацию:

{
  "mcpServers": {
    "mcp-server": {
      "url": "http://localhost:4005/sse?API_KEY={{your_api_key_here}}"
    }
  }
}

Расширение шаблона

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

Чтобы добавить новый инструмент на сервер MCP, выполните следующие действия:

  1. Создайте свой обработчик инструментов :

    • Добавьте новый обработчик инструментов в файл src/tools.ts или создайте новый файл в каталоге src/tools

    • Инструмент должен соответствовать интерфейсу ToolHandler

  2. Настройте свой инструмент :

    • Добавьте конфигурацию вашего инструмента в массив toolConfigs в src/tools.ts

    • Определите имя, описание, схему ввода и обработчик для вашего инструмента.

  3. Экспортируйте и зарегистрируйте свой инструмент :

    • Если вы создали отдельный файл, экспортируйте свой обработчик и импортируйте его в src/tools.ts

    • Убедитесь, что ваш инструмент правильно зарегистрирован в массиве toolConfigs

Пример:

// In src/tools.ts (adding directly to the toolConfigs array)
{
  name: "myTool",
  description: "My tool description",
  inputSchema: {
    type: "object" as const,
    properties: {},
    required: [],
  },
  handler: async () => {
    return createSuccessResult({ result: "Tool result" });
  },
}

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

На сервере реализована комплексная обработка ошибок:

  • Все операции заключены в блоки try/catch.

  • Правильная проверка параметров и входных данных

  • Соответствующие сообщения об ошибках для лучшей отладки

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

Соображения безопасности

  • Аутентификация API-ключа для всех подключений

  • Проверка типа для всех параметров

  • Отсутствие жестко запрограммированной конфиденциальной информации

  • Правильная обработка ошибок для предотвращения утечки информации

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

Особенности протокола MCP

Этот шаблон поддерживает основные функции MCP:

  • Инструменты: список и вызов инструментов с надлежащей проверкой параметров.

  • Ведение журнала: различные уровни серьезности (отладка, информация, уведомление, предупреждение, ошибка, критическое, оповещение, аварийное состояние)

  • Конфигурация сервера: имя, версия и возможности

Управление сеансом

Сервер управляет клиентскими сеансами посредством:

  • Уникальные идентификаторы сеансов для каждого клиентского соединения

  • Отслеживание активных транспортов по идентификатору сеанса

  • Автоматическая очистка отключенных сеансов

  • Отслеживание статуса соединения

Дополнительные ресурсы

Лицензия

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

-
security - not tested
A
license - permissive license
-
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/iamsrikanthnani/mcp-boilerplate'

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