Skip to main content
Glama
limjonathan

runtime-mcp-connect

by limjonathan

runtime-mcp

Живое состояние вашего приложения — логи, схема БД, конфиг, фича-флаги — как MCP-инструменты для агентов-кодеров.

npm core npm integrations npm connect node tests license

Встройте его в своё приложение. Ваш агент перестанет гадать.


Когда opencode, Claude Code или Cursor отлаживают ваше приложение, они работают вслепую: устаревшие догадки о схеме, вставленные фрагменты логов, выдуманные значения конфигурации.

runtime-mcp закрывает этот разрыв. Две строки настройки — и любой агент, говорящий на MCP, может запросить то, что реально видит ваш запущенный процесс:

Agent: "why is checkout failing?"
  ├─ get_errors   → TypeError at checkout.ts:42, full stack trace
  ├─ db_query     → orders table has no `coupon_id` column
  ├─ config://    → STRIPE_KEY: [REDACTED], TAX_RATE: 0  ← there it is
  └─ "Found it — you renamed the env var."

Быстрый старт

0 — Установка:

npm install runtime-mcp runtime-mcp-integrations

1 — Инструментируйте своё приложение (один импорт):

import { runtimeMcp } from 'runtime-mcp';
import { pgAdapter } from 'runtime-mcp-integrations/pg';

await runtimeMcp({
  db: pgAdapter(pool),
  config: process.env,
  flags: myFlagRegistry,
});

2 — Зарегистрируйте шим в файле .mcp.json вашего проекта:

{
  "mcpServers": {
    "runtime": { "command": "npx", "args": ["-y", "runtime-mcp-connect"] }
  }
}

3 — Запустите приложение. Вот и всё. Агент подключается автоматически и с этого момента видит живое состояние.

Related MCP server: Engineering Intelligence MCP

Что получают агенты

Инструменты

Инструмент

Описание

get_logs

Последние логи · фильтр по уровню, полнотекстовый запрос, окно времени

get_errors

Записи об ошибках со стектрейсами — первый вызов, когда что-то сломалось

db_query

SQL только на чтение (только SELECT/WITH) · запись отклоняется · автоматический LIMIT

app_info

Имя, версия, PID, аптайм, зарегистрированные маршруты

Ресурсы

Ресурс

Описание

config://current

Живой конфиг с секретами, заменёнными на [REDACTED]

flags://state

Состояния фича-флагов по окружениям

schema://tables

Инвентаризация таблиц

schema://table/{name}

Колонки, первичные ключи, индексы, внешние ключи

Архитектура

┌──────────────────────────────┐          ┌─────────────────────────────┐
│         Your App             │          │   Agent (opencode/Claude)   │
│                              │          │                             │
│  runtimeMcp({ db, config })  │          │  .mcp.json                  │
│   ├─ log ring buffer         │          │    └─ runtime-mcp-connect   │
│   ├─ schema introspection    │          │          │ stdio            │
│   ├─ config + redaction      │◄─────────┼──────────┘                  │
│   └─ feature flags           │  loopback│                             │
│                              │   HTTP   │                             │
│  127.0.0.1:<port>/mcp        │          │                             │
│  .runtime-mcp.json ──────────┼─ pid·url·token·(chmod 600)             │
└──────────────────────────────┘          └─────────────────────────────┘

Почему две части? Агенты запускают собственные процессы — они не могут заглянуть внутрь вашего приложения. Файл обнаружения соединяет их: библиотека пишет его при запуске, шим читает его при каждом вызове. Приложение перезапущено с новым портом или токеном? Шим переподключается автоматически. Никогда ничего не нужно перенастраивать.

Адаптеры

npm install runtime-mcp runtime-mcp-integrations

Пример структурированного логирования:

import pino from 'pino';
import { createRuntimeMcpPinoDestination } from 'runtime-mcp-integrations/pino';

const logger = pino(pino.multistream([
  pino.destination(1),
  createRuntimeMcpPinoDestination(),
]));

Нет подключённого логгера? Захват консоли включён по умолчанию — console.error и прочее попадают в тот же буфер.

Модель безопасности

Создано для локальной разработки и стейджинга. Защита в глубину по умолчанию:

Контроль

Поведение

Loopback-привязка

Эндпоинт слушает только 127.0.0.1; удалённый доступ требует явного согласия

Токен-аутентификация

Bearer-токен на каждый запуск приложения, хранится с правами chmod 600 в .runtime-mcp.json

SQL только для чтения

Парсер по белому списку: не-SELECT отклоняется, составные запросы отклоняются, ключевые слова внутри строк/комментариев игнорируются

Редактирование секретов

Ключи вида password/token/key/auth и известные форматы токенов превращаются в [REDACTED] до выхода из процесса

Нет телеметрии

Ноль обращений домой

Добавьте .runtime-mcp.json в .gitignore.

Почему сейчас

Существующее решение

Ограничение

Next.js 16 /_next/mcp

Привязано к фреймворку

Vercel runtime logs MCP

Только облачная платформа

Datadog / Sentry / Supabase MCPs

SaaS-аккаунты; не ваш живой процесс разработки

Каждая платформа строит это внутрь себя. Никто не сделал это универсально. Это оно.

Демо

packages/demo-app — это Express + SQLite-хранилище с двумя намеренно посаженными багами — N+1-запрос на /orders и неправильно названная env-переменная DEMO_TAX_RATE, которая молча обнуляет налог при оформлении заказа. Наведите на него своего агента и спросите «почему суммы при оформлении неверны?»

pnpm install && pnpm -r build
pnpm --filter @runtime-mcp/demo-app dev

Пакеты

Все пакеты опубликованы в npm (v0.1.0):

Пакет

npm

Назначение

runtime-mcp

npm ↗

Внутрипроцессный реестр · loopback-эндпоинт · обнаружение · редактирование

runtime-mcp-connect

npm ↗

stdio-шим, который агенты регистрируют в .mcp.json

runtime-mcp-integrations

npm ↗

Адаптеры для фреймворков, логгеров и баз данных

@runtime-mcp/demo-app

—

Демо для отладки с посаженными багами (только в репозитории)

Требуется Node ≥ 20. ESM.

Разработка

pnpm install
pnpm -r build
pnpm test    # unit + end-to-end over real HTTP and stdio transports
  • Живой хвост логов через MCP-подписки на ресурсы

  • Адаптеры Fastify / Hono

  • Адаптеры интроспекции MySQL / Drizzle

  • Паритет Python SDK (FastAPI / Django)

  • Мультипроектные рабочие пространства в connect-шиме

Лицензия

MIT

Related MCP Connectors

Related MCP Servers