VOOZH about

URL: https://glama.ai/mcp/servers/luis-dominguez-stori/MCP?locale=ru-RU

⇱ MCP-сервер журналов OpenSearch by luis-dominguez-stori | Glama


MCP-сервер журналов OpenSearch

MCP-сервер (Model Context Protocol) для запроса журналов OpenTelemetry в OpenSearch. Поддерживает среды разработки (dev) и производства (prod).

Архитектура

Сервер следует принципам SOLID и Clean Architecture:

src/
├── index.ts # Entry point
├── server.ts # MCP Server setup
├── config/
│ └── environments.ts # Environment configuration
├── types/
│ └── index.ts # Type definitions
├── services/
│ ├── opensearch-client.ts # HTTP client for OpenSearch
│ └── log-search.service.ts # Business logic
├── tools/
│ ├── tool-definitions.ts # Tool schemas
│ └── tool-handlers.ts # Tool execution
└── utils/
 ├── query-builder.ts # Query construction (Builder pattern)
 └── time-range.ts # Time utilities

Примененные принципы

  • Single Responsibility (SRP): Каждый модуль имеет единственную ответственность

  • Open/Closed (OCP): Легко добавлять новые инструменты без изменения существующего кода

  • Dependency Inversion (DIP): Сервисы зависят от абстракций (интерфейсов)

  • Builder Pattern: QueryBuilder для гибкого построения запросов

Установка

cd Tools/mcp-opensearch-logs
npm install
npm run build

Настройка в Cursor

Добавьте это в свою конфигурацию Cursor (~/.cursor/mcp.json):

{
 "mcpServers": {
 "opensearch-logs": {
 "command": "node",
 "args": ["/ruta/al/proyecto/Tools/mcp-opensearch-logs/dist/index.js"],
 "env": {
 "OPENSEARCH_DEV_USERNAME": "tu-usuario-dev",
 "OPENSEARCH_DEV_PASSWORD": "tu-password-dev",
 "OPENSEARCH_PROD_USERNAME": "tu-usuario-prod",
 "OPENSEARCH_PROD_PASSWORD": "tu-password-prod"
 }
 }
 }
}

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

search_logs

Свободный поиск с использованием синтаксиса Lucene.

Параметр

Тип

Обязательный

Описание

environment

dev

prod

Среда для запроса

query

string

Запрос в синтаксисе Lucene

timeRange

15m

1h

6h

24h

7d

Временной диапазон (по умолчанию: 1h)

size

number

Максимальное количество результатов (по умолчанию: 50, макс: 200)

Примеры:

  • "Найди журналы, содержащие 'error' в dev за последний час"

  • "Найди журналы со статусом 500 в prod за последние 6 часов"

search_by_trace

Поиск всех журналов для конкретной трассировки OpenTelemetry.

Параметр

Тип

Обязательный

Описание

environment

dev

prod

Среда для запроса

traceId

string

ID трассировки

size

number

Максимальное количество результатов (по умолчанию: 100)

Пример:

  • "Дай мне все журналы для трассировки abc123 в dev"

search_by_service

Фильтрация журналов по имени сервиса.

Параметр

Тип

Обязательный

Описание

environment

dev

prod

Среда для запроса

serviceName

string

Имя сервиса

level

DEBUG

INFO

WARN

ERROR

FATAL

Уровень журнала

query

string

Дополнительный запрос

timeRange

string

Временной диапазон

size

number

Максимальное количество результатов

Примеры:

  • "Найди журналы сервиса stori-ios в prod"

  • "Дай мне ошибки сервиса stori-ios в dev"

search_errors

Поиск журналов уровня ERROR или выше (severityNumber >= 17).

Параметр

Тип

Обязательный

Описание

environment

dev

prod

Среда для запроса

serviceName

string

Фильтр по сервису

query

string

Дополнительный запрос

timeRange

string

Временной диапазон

size

number

Максимальное количество результатов

Примеры:

  • "Дай мне ошибки за последний час в prod"

  • "Найди ошибки, связанные с KYC в dev"

get_field_values

Получение наиболее распространенных значений поля (агрегация).

Параметр

Тип

Обязательный

Описание

environment

dev

prod

Среда для запроса

field

string

Поле для агрегации

size

number

Максимальное количество уникальных значений (по умолчанию: 20)

Примеры:

  • "Какие значения имеет поле 'event' в prod?"

  • "Дай мне самые распространенные типы ошибок в dev"

search_by_field

Поиск по конкретному полю и значению.

Параметр

Тип

Обязательный

Описание

environment

dev

prod

Среда для запроса

field

string

Имя поля

value

string

Значение для поиска

timeRange

string

Временной диапазон

size

number

Максимальное количество результатов

Пример:

  • "Найди журналы с transactionId=abc123 в prod"

get_mapping

Получение маппинга полей индекса.

Параметр

Тип

Обязательный

Описание

environment

dev

prod

Среда для запроса

Пример:

  • "Какие поля доступны в журналах prod?"

get_sample_log

Получение примера журнала для просмотра структуры.

Параметр

Тип

Обязательный

Описание

environment

dev

prod

Среда для запроса

Пример:

  • "Дай мне пример журнала из prod, чтобы увидеть структуру"

Синтаксис поиска Lucene

Поле query поддерживает полный синтаксис Lucene:

Синтаксис

Описание

Пример

термин

Поиск в любом поле

error

поле:значение

Поиск в конкретном поле

event:kyc_error

поле:*значение*

Wildcard

errorMessage:*timeout*

AND

Оба термина

error AND authentication

OR

Любой из терминов

error OR warning

NOT

Исключить термин

NOT debug

[a TO b]

Диапазон

statusCode:[400 TO 499]

"точная фраза"

Точное совпадение

"connection refused"

Временные диапазоны

Значение

Описание

15m

Последние 15 минут

1h

Последний час (по умолчанию)

6h

Последние 6 часов

24h

Последние 24 часа

7d

Последние 7 дней

Разработка

# Desarrollo con watch mode
npm run dev

# Build
npm run build

# Lint
npm run lint

Структура журналов OpenTelemetry

Журналы следуют схеме OpenTelemetry:

{
 "time": "2024-01-15T10:30:00.000Z",
 "severityText": "ERROR",
 "severityNumber": 17,
 "body": "Error message",
 "attributes": {
 "event": "kyc_error",
 "kycFlow": "creditL1",
 "transactionId": "abc123"
 },
 "resource": {
 "service.name": "stori-ios",
 "service.version": "1.0.0"
 }
}
F
license - not found
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/luis-dominguez-stori/MCP'

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