mcp-resource-subscribe-test
mcp-resource-subscribe-test
Servidor HTTP Streamable MCP mínimo para probar si los clientes MCP manejan correctamente resources/subscribe y notifications/resources/updated.
Este repositorio pretende ser un laboratorio de problemas reproducibles / compatibilidad para agentes de IA de CLI como Codex CLI, Gemini CLI, OpenCode, GitHub Copilot CLI, Claude Code, Goose y Crush.
Propósito
El servidor expone un recurso MCP fijo:
test://review/statusContenido inicial:
status: pending
version: 1
message: Waiting for simulated review result.Después de que un cliente se suscribe al recurso, el servidor espera MCP_TEST_UPDATE_DELAY_SECONDS, cambia el recurso y envía:
{
"method": "notifications/resources/updated",
"params": {
"uri": "test://review/status"
}
}Contenido actualizado:
status: reviewed
version: 2
message: Simulated review result is now available.Related MCP server: SkyStage MCP Test Server
¿Por qué Resources/Subscribe en lugar de Tools/Call?
tools/call es útil para acciones explícitas, pero muchos flujos de trabajo de agentes dependen de un contexto que cambia después de la solicitud original. Sondear cada fuente es ruidoso y específico del cliente. Las suscripciones a recursos MCP brindan a los clientes una forma a nivel de protocolo de saber que un objeto de contexto conocido cambió y debe volver a leerse.
Ejemplos donde el comportamiento de suscripción importa:
Resultado de revisión de Copilot
Hilo de revisión de PR
Estado de CI
Comentario de Codecov
Discusión de issue de GitHub
Resultado de compilación/prueba local
Este servidor de prueba se centra en si el cliente nota una actualización de recurso, vuelve a ejecutar resources/read y refleja el nuevo contenido en el bucle del agente / contexto del modelo.
Inicio
docker compose up --buildURL de MCP:
http://127.0.0.1:8089/mcpPara desarrollo local:
npm install
npm run devConfiguración
Variable de entorno | Predeterminado |
|
|
|
|
|
|
|
|
|
|
|
|
Si MCP_TEST_SEND_LIST_CHANGED=true, el servidor también envía notifications/resources/list_changed después de la actualización simulada.
Comportamiento esperado del cliente
Un cliente MCP ideal debería seguir este flujo:
initialize
↓
resources/list
↓
resources/read test://review/status
↓
resources/subscribe test://review/status
↓
receive notifications/resources/updated
↓
resources/read test://review/status again
↓
reflect updated status: reviewed in agent contextCapacidades del servidor
La respuesta de inicialización anuncia:
{
"resources": {
"subscribe": true,
"listChanged": true
}
}Mensajes MCP implementados
initializeresources/listresources/readresources/subscriberesources/unsubscribenotifications/resources/updatednotifications/resources/list_changedcuandoMCP_TEST_SEND_LIST_CHANGED=true
No se implementan herramientas.
Registros
El servidor registra cada mensaje importante para que el comportamiento del cliente pueda verificarse objetivamente:
[initialize] client connected
[resources/list] requested
[resources/read] uri=test://review/status version=1
[resources/subscribe] uri=test://review/status
[resource/update] uri=test://review/status version=2
[notification/send] notifications/resources/updated uri=test://review/status
[resources/read] uri=test://review/status version=2
[resources/unsubscribe] uri=test://review/statusLa evidencia clave para el soporte de suscripción de recursos es:
resources/subscribe was received
notification was sent
resources/read was received again after the notificationPruebas
npm testEl conjunto de pruebas verifica:
resources/listdevuelvetest://review/statusresources/readinicial devuelve la versión 1resources/subscribeactiva una actualización interna a la versión 2Se recibe
notifications/resources/updatedresources/readactualizado devuelve la versión 2
Notas de compatibilidad del cliente
Codex CLI
Conexión MCP:
¿Llama a
resources/list?¿Llama a
resources/read?¿Llama a
resources/subscribe?¿Recibe
notifications/resources/updated?¿Vuelve a leer el recurso después de la actualización?
Notas:
Gemini CLI
Conexión MCP:
¿Llama a
resources/list?¿Llama a
resources/read?¿Llama a
resources/subscribe?¿Recibe
notifications/resources/updated?¿Vuelve a leer el recurso después de la actualización?
Notas:
OpenCode
Conexión MCP:
¿Llama a
resources/list?¿Llama a
resources/read?¿Llama a
resources/subscribe?¿Recibe
notifications/resources/updated?¿Vuelve a leer el recurso después de la actualización?
Notas:
GitHub Copilot CLI
Conexión MCP:
¿Llama a
resources/list?¿Llama a
resources/read?¿Llama a
resources/subscribe?¿Recibe
notifications/resources/updated?¿Vuelve a leer el recurso después de la actualización?
Notas:
Claude Code
Conexión MCP:
¿Llama a
resources/list?¿Llama a
resources/read?¿Llama a
resources/subscribe?¿Recibe
notifications/resources/updated?¿Vuelve a leer el recurso después de la actualización?
Notas:
Goose
Conexión MCP:
¿Llama a
resources/list?¿Llama a
resources/read?¿Llama a
resources/subscribe?¿Recibe
notifications/resources/updated?¿Vuelve a leer el recurso después de la actualización?
Notas:
Crush
Conexión MCP:
¿Llama a
resources/list?¿Llama a
resources/read?¿Llama a
resources/subscribe?¿Recibe
notifications/resources/updated?¿Vuelve a leer el recurso después de la actualización?
Notas:
This server cannot be deployed
Maintenance
Related MCP Connectors
Minimal streamable HTTP MCP server used for owned-account registry connectivity tests.
Security research canary remote MCP server for owned-account testing.
Experimental MCP server for current empirical verification of explicit public HTTPS endpoint claims.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Related MCP Servers
- AlicenseCqualityDmaintenanceA simple server implementing the Model Context Protocol (MCP) that echoes messages back, designed for testing MCP clients.13MIT
- FlicenseNot gradedqualityDmaintenanceMinimal MCP server for testing SkyStage's self-auth auto-detection feature. It includes tools like ping, echo, server_info, and read_secret, and uses a mock OAuth provider for login.-
- FlicenseNot gradedqualityDmaintenanceA simple MCP server with OAuth 2.0 authentication for testing OAuth support in mcp-cli.-
- AlicenseNot gradedqualityCmaintenanceEducational MCP server demonstrating the 2026-07-28 stateless protocol with raw Starlette, no SDK, featuring tools, request state handles, MRTR elicitation, and subscriptions.MIT