mcp-resource-subscribe-test
mcp-resource-subscribe-test
Минимальный MCP-сервер (Streamable HTTP) для тестирования того, корректно ли MCP-клиенты обрабатывают resources/subscribe и notifications/resources/updated.
Этот репозиторий предназначен для воспроизведения проблем / лабораторной проверки совместимости CLI AI-агентов, таких как Codex CLI, Gemini CLI, OpenCode, GitHub Copilot CLI, Claude Code, Goose и Crush.
Цель
Сервер предоставляет один фиксированный MCP-ресурс:
test://review/statusНачальное содержимое:
status: pending
version: 1
message: Waiting for simulated review result.После того как клиент подписывается на ресурс, сервер ожидает MCP_TEST_UPDATE_DELAY_SECONDS, изменяет ресурс и отправляет:
{
"method": "notifications/resources/updated",
"params": {
"uri": "test://review/status"
}
}Обновленное содержимое:
status: reviewed
version: 2
message: Simulated review result is now available.Related MCP server: mcp-hello-world
Почему Resources/Subscribe, а не Tools/Call
tools/call полезен для явных действий, но многие рабочие процессы агентов зависят от контекста, который меняется после исходного запроса. Опрос каждого источника создает лишний шум и зависит от конкретного клиента. Подписки на MCP-ресурсы предоставляют клиентам протокольный способ узнать, что известный объект контекста изменился и его следует прочитать заново.
Примеры, где важно поведение подписки:
Результат проверки Copilot
Ветка обсуждения проверки PR
Статус CI
Комментарий Codecov
Обсуждение issue в GitHub
Результат локальной сборки/тестирования
Этот тестовый сервер фокусируется на том, замечает ли клиент обновление ресурса, повторно выполняет resources/read и отражает новое содержимое в цикле агента / контексте модели.
Запуск
docker compose up --buildMCP URL:
http://127.0.0.1:8089/mcpДля локальной разработки:
npm install
npm run devКонфигурация
Переменная окружения | По умолчанию |
|
|
|
|
|
|
|
|
|
|
|
|
Если MCP_TEST_SEND_LIST_CHANGED=true, сервер также отправляет notifications/resources/list_changed после имитированного обновления.
Ожидаемое поведение клиента
Идеальный MCP-клиент должен следовать этому потоку:
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 contextВозможности сервера
Ответ на инициализацию объявляет:
{
"resources": {
"subscribe": true,
"listChanged": true
}
}Реализованные сообщения MCP
initializeresources/listresources/readresources/subscriberesources/unsubscribenotifications/resources/updatednotifications/resources/list_changedприMCP_TEST_SEND_LIST_CHANGED=true
Инструменты (tools) не реализованы.
Логи
Сервер записывает каждое важное сообщение, чтобы поведение клиента можно было проверить объективно:
[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/statusКлючевым доказательством поддержки подписки на ресурсы является:
resources/subscribe was received
notification was sent
resources/read was received again after the notificationТесты
npm testНабор тестов проверяет:
resources/listвозвращаетtest://review/statusначальный
resources/readвозвращает версию 1resources/subscribeинициирует внутреннее обновление до версии 2получено
notifications/resources/updatedобновленный
resources/readвозвращает версию 2
Примечания по совместимости клиентов
Codex CLI
MCP-соединение:
Вызывает ли он
resources/list?Вызывает ли он
resources/read?Вызывает ли он
resources/subscribe?Получает ли он
notifications/resources/updated?Повторно считывает ли он ресурс после обновления?
Примечания:
Gemini CLI
MCP-соединение:
Вызывает ли он
resources/list?Вызывает ли он
resources/read?Вызывает ли он
resources/subscribe?Получает ли он
notifications/resources/updated?Повторно считывает ли он ресурс после обновления?
Примечания:
OpenCode
MCP-соединение:
Вызывает ли он
resources/list?Вызывает ли он
resources/read?Вызывает ли он
resources/subscribe?Получает ли он
notifications/resources/updated?Повторно считывает ли он ресурс после обновления?
Примечания:
GitHub Copilot CLI
MCP-соединение:
Вызывает ли он
resources/list?Вызывает ли он
resources/read?Вызывает ли он
resources/subscribe?Получает ли он
notifications/resources/updated?Повторно считывает ли он ресурс после обновления?
Примечания:
Claude Code
MCP-соединение:
Вызывает ли он
resources/list?Вызывает ли он
resources/read?Вызывает ли он
resources/subscribe?Получает ли он
notifications/resources/updated?Повторно считывает ли он ресурс после обновления?
Примечания:
Goose
MCP-соединение:
Вызывает ли он
resources/list?Вызывает ли он
resources/read?Вызывает ли он
resources/subscribe?Получает ли он
notifications/resources/updated?Повторно считывает ли он ресурс после обновления?
Примечания:
Crush
MCP-соединение:
Вызывает ли он
resources/list?Вызывает ли он
resources/read?Вызывает ли он
resources/subscribe?Получает ли он
notifications/resources/updated?Повторно считывает ли он ресурс после обновления?
Примечания:
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
- AlicenseCqualityDmaintenanceA simple server implementing the Model Context Protocol (MCP) that echoes messages back, designed for testing MCP clients.12MIT
- Alicense-qualityBmaintenanceA minimal MCP server mock for testing, providing echo, debug, and greeting resources to simulate MCP interactions.20,48022MIT
- Flicense-qualityCmaintenanceMinimal 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.
- Flicense-qualityDmaintenanceA simple MCP server with OAuth 2.0 authentication for testing OAuth support in mcp-cli.
Related MCP Connectors
MCP server wrapping the Tesla Fleet API and TeslaMate API
A basic MCP server to operate on the Postman API.
MCP (Model Context Protocol) server for Appwrite
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/scottlz0310/mcp-resource-subscriber'
If you have feedback or need assistance with the MCP directory API, please join our Discord server