mcp-legacy-lane
Instrumenta la ruta antigua antes de eliminarla
MCP es un protocolo abierto para que las aplicaciones de LLM llamen a herramientas mediante JSON-RPC.
La tarea de Kent: tienes una ruta heredada todavía conectada, y no has contado si alguien la sigue usando. Mide antes de eliminar.
Este repositorio ejecuta un servidor MCP de doble era y un registro SQLite que sobrevive a un reinicio. Mantienes la alternativa mientras quede alguna operación heredada.
La página de versionado nombra los dos carriles. Legacy es 2025-11-25 y anteriores: la sesión comienza con initialize. Modern es 2026-07-28 y posteriores: cada solicitud lleva versión e identidad en _meta.
Cuenta el trabajo completado
Un cliente que se reconecta cambia el recuento de solicitudes. Cinco llamadas a herramientas heredadas cuestan quince solicitudes si el cliente abre una conexión nueva cada vez, y siete si mantiene una sola conexión. El protocolo de saludo heredado gasta initialize y notifications/initialized una vez por conexión, así que un cliente que se reconecta parece tráfico heredado intenso. Cada fila son las mismas cinco llamadas a herramientas por carril:
Cinco llamadas a herramientas por carril | Solicitudes legacy | Solicitudes modern | Cuota legacy |
El cliente se reconecta en cada llamada | 15 | 10 | 60,0% |
El cliente mantiene una conexión | 7 | 6 | 53,8% |
Operaciones completadas | 5 | 5 | 50,0% |
Cuentas 5 y 5 en la fila de operaciones. Las filas de solicitudes difieren en seis puntos porque el cliente decidió reconectarse. recommend() lee la fila de operaciones. Cuenta la unidad que sigue coincidiendo después de una reescritura del transporte o de un cliente que cambie cómo se conecta.
Related MCP server: mcpstat
Ejecútalo
Node 24 o superior. Almacenas el registro con node:sqlite.
Inicia primero el recopilador, luego el servidor, y después genera tráfico:
pnpm install
pnpm collector # http://127.0.0.1:3000, OTLP (the metric export format) and agent tools
pnpm server # http://127.0.0.1:8787, dual-era MCP server
pnpm traffic # legacy and modern tool calls, plus DCR and CIMD hitsDCR es Dynamic Client Registration: el cliente envía metadatos por POST a /register en cada conexión. Obsoleto en 2026-07-28. CIMD es Client ID Metadata Documents: el id de cliente es una URL HTTPS a metadatos estáticos, el reemplazo de DCR.
Después lee los dos almacenes:
pnpm report # verdict from .data/migration-evidence.db
pnpm proof # lane series from the collectorEspera seis segundos después de pnpm traffic antes de pnpm proof para que el raspado se complete.
La primera ejecución imprime esto:
Migration readiness: MCP protocol lanes
=======================================
window : 7 days
active days : 1/7 required
legacy operations : 5
modern operations : 3
total operations : 8/100 required
legacy % : 62.50%
raw requests : 15 legacy / 6 modern
legacy methods : initialize x5, notifications/initialized x5, tools/call x5
legacy clients : legacy-dashboard@0.9.4
modern clients : modern-agent@2.1.0
auth DCR : 2 attempts (1 success, 1 failure)
auth CIMD : 3 attempts (2 success, 1 failure)
recommendation : keep_both
A legacy client completed an operation. Keep the fallback and check next week.
Ask these clients to upgrade: legacy-dashboard@0.9.4.pnpm traffic envía cinco clientes legacy y tres modernos, la mezcla que Kent describe unas semanas después del lanzamiento de una especificación. Cada cliente se reconecta para su única llamada, así que la fila de solicitudes muestra 15 contra 6. El informe nombra a legacy-dashboard@0.9.4, así que sabes a quién enviar el correo.
La política
Valores predeterminados: una ventana de siete días, siete días de tráfico activo, 100 operaciones completadas.
Evidencia | Veredicto |
Sin operaciones |
|
Una o más operaciones legacy |
|
Cero operaciones legacy, muestra por debajo de los límites |
|
Cero operaciones legacy, ambos límites superados |
|
recommend() devuelve keep_both después de una operación legacy, incluso contra doscientas modernas. Esa llamada todavía pertenece a un cliente. El volumen moderno no te dice si alguien sigue necesitando la ruta antigua.
Ventana de obsolescencia
El registro de funciones obsoletas lista DCR, roots, sampling y logging como obsoletos en 2026-07-28. La eliminación más temprana es la primera revisión en o después de 2027-07-28. Un informe local limpio no mueve esa fecha. Los clientes que siguen la especificación todavía tienen la ventana prometida.
Pregunta a tu agente
Deja el recopilador y el servidor en ejecución. .mcp.json apunta autotel a http://127.0.0.1:3000/mcp y migration a http://127.0.0.1:8787/mcp. migrationStatus lee la ventana persistente.
Lista
mcp.protocol.lane.operationsen autotel y compara las serieslane=legacyylane=modern. Llama amigrationStatusen el servidor de migración. ¿Podemos eliminar la alternativa de 2025-11-25? Cita los recuentos de operaciones, los días activos y los límites de la política.
Ejecuta ese prompt en un cron semanal y obtienes la respuesta de Kent.
Señales
Señal | Almacenamiento | Propósito |
| OTLP | Volumen de solicitudes, una serie por |
| OTLP | Operaciones comparables, una serie por |
| OTLP | Intentos de DCR y CIMD, una serie por |
| OTLP | Días de silencio en el carril antiguo, |
| SQLite | La ventana del informe, nombres de clientes, entre reinicios |
list_metrics devuelve una serie por conjunto de atributos, así que el agente agrupa por lane. Necesitas autotel-mcp 0.5.1 o superior para que esos atributos sobrevivan a la ingesta.
Kent promedia 125 registros DCR por usuario porque cada reconexión escribe otro registro. Un cliente CIMD no escribe ninguno. Cuenta ambos modos y puedes ver cuándo DCR se ha quedado en silencio.
Decisiones a copiar
Cuenta el volumen, luego mide el silencio. Lee los contadores para saber cuánto tráfico legacy llegó. Necesitas la última llegada para decidir sobre la eliminación. mcp.protocol.legacy.days_since_last_operation lee el registro cuando el recopilador hace el raspado, así que no lo recalculas en la ruta de solicitudes. Alerta cuando el indicador supere 30.
Pon los nombres de método en la métrica. Pon los nombres de cliente en el registro. mcp_method es una etiqueta, así que cada valor nuevo crea otra serie, y un llamador no autenticado elige el valor. STANDARD_METHODS en factory.ts es una lista de permitidos: cualquier cosa no reconocida se registra como unknown. Los nombres de cliente no tienen límite, así que van a SQLite. Un nombre más cuesta una fila.
Mantén ambos límites. Una muestra mínima evita que apruebes la eliminación en una tarde tranquila. Un mínimo de días activos evita que la apruebes en un martes ajetreado que se perdió el trabajo por lotes semanal.
Sirve ambas eras sin sesión. createMcpHandler se ejecuta con legacy: 'stateless'. Una fábrica sirve ambas eras y ctx.era nombra el carril. Cualquier instancia puede responder a cualquier solicitud, así que escribes el contador. No necesitas una tabla de sesiones ni enrutamiento fijo. Una alternativa con estado te obligaría a instrumentar sesiones. El informe dependería entonces del balanceador de carga.
Nombres de cliente por era
Una solicitud moderna nombra a su llamador. Una solicitud legacy nombra al llamador una vez, durante initialize.
Legacy ( | Modern ( | |
Nombre del método | Cuerpo JSON-RPC | Cabecera |
|
|
|
El sobre moderno repite clientInfo en params._meta en cada solicitud, así que cualquier instancia puede servirlo. El carril legacy pone el nombre en el protocolo de saludo. Un servidor sin estado no tiene dónde guardarlo para la llamada a herramienta que sigue. factory.ts lee ambos. El informe puede nombrar a legacy-dashboard@0.9.4 porque ese nombre llegó en initialize, no en la llamada a herramienta que se cuenta.
Puedes enrutar una puerta de enlace por MCP-Method porque la solicitud se describe a sí misma. Atribuyes el tráfico sin sesión por esa misma razón.
activeDays agrupa por fecha UTC, así que un cliente cuyos usuarios trabajan por las tardes en EE. UU. puede caer en dos grupos. Las rutas de autenticación escriben los intentos de DCR y CIMD. No acuñan tokens ni recuperan documentos CIMD.
Configuración
Variable | Efecto |
| Ubicación del registro |
| Ventana del informe |
| Retención del registro |
| Límite de tamaño de muestra |
| Límite de días activos |
GET /metrics/lanes?windowDays=30 acepta la misma ventana, hasta 90 días.
Para ver que el registro sobrevive a un reinicio: ejecuta traffic, detén el servidor, vuelve a iniciarlo, ejecuta pnpm report. Los recuentos permanecen.
pnpm collector mantiene la telemetría en autotel.db durante 30 días. El servidor mantiene la evidencia en .data/migration-evidence.db durante 90. Git ignora ambos.
Servidor de doble era
El servidor es de doble era porque createMcpHandler se ejecuta con legacy: 'stateless', y ctx.era nombra el carril que cuentas. Consulta el registro de cambios para el resto del conjunto de cambios de 2026-07-28.
autotel-mcp-instrumentation añade tramos e histogramas de duración en ambos lados. Respondes a la pregunta de eliminación desde los contadores y el registro.
Mapa de código
Archivo | Responsabilidad |
| Herramientas de doble era; lee era, método y cliente por solicitud |
| Analiza el cuerpo una vez, lo comparte con la fábrica |
| Contadores OTel y capturas de ventana |
| Registro SQLite indexado, más un almacén en memoria para pruebas |
| Los límites y el texto del informe |
| Evidencia de intentos de DCR y CIMD |
| Lee las series de carril de vuelta desde OTLP |
| Dos clientes con nombre, uno por carril |
Verificación
pnpm typecheck
pnpm testTrece pruebas cubren el sesgo de proporción, el filtrado por ventana, la persistencia tras reinicio, los resultados de autenticación, la atribución de clientes, los recuentos de métodos legacy y ambos límites de eliminación.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides comprehensive monitoring and observability for MCP server ecosystems with real-time health checks, performance metrics, distributed tracing, anomaly detection, and automated performance reports using OpenTelemetry and Prometheus.1MIT
- AlicenseNot gradedqualityCmaintenanceA Python utility for adding usage tracking, analytics, and audit trails to MCP servers using SQLite-backed persistence. It enables developers to monitor tool, prompt, and resource activity and expose these statistics directly to LLM clients.4MIT
- AlicenseAqualityAmaintenanceTransparent MCP proxy with OpenTelemetry tracing. Wrap any MCP server, persist traces to SQLite · Postgres · MySQL. No code changes needed.23311Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP-native health monitoring that probes MCP servers using the list_tools protocol handshake, detects version drift, stores history in SQLite, and generates an HTML dashboard.43MIT
Related MCP Connectors
Monitor MCP servers, API contracts and AI outputs for schema drift. Alerts on breaking changes.
MCP uptime, schema, auth, and SLA receipt monitoring.
Remote MCP for A2A failure replay MCP, structured receipts, audit logs, and reviewer-ready evidence.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jagreehal/mcp-legacy-lane'
If you have feedback or need assistance with the MCP directory API, please join our Discord server