EchoLoopMCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EchoLoopMCPSend me a Telegram message when the task is done, then wait for my next instruction."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
EchoLoopMCP
Agentic AI가 작업을 마치면 텔레그램/디스코드로 알림을 보내고, 사용자의 답장을 세션 안에서 그대로 다음 지시로 받아오는 MCP 서버.
Claude 세션 ──notify()──▶ 텔레그램/디스코드 ──▶ 폰
Claude 세션 ──ask()────▶ (전송 후 블로킹) ◀──답장── 폰
└─▶ 답장 텍스트 = 다음 작업 지시상시 무료, 서버리스. 인바운드는 Telegram getUpdates 롱폴링 / Discord REST 폴링으로 처리하므로 공개 엔드포인트가 필요 없다.
툴
툴 | 동작 |
| 메시지를 보내고 즉시 반환. 답장을 기다리지 않음. |
| 메시지를 보내고 답장이 올 때까지 블로킹. 답장 텍스트를 반환. |
ask는 호출 시점 이전에 온 메시지를 버리므로, 이전 대화가 답장으로 오인되지 않는다. 대기 중에는 20초마다 progress 알림을 보내 MCP 클라이언트 타임아웃을 갱신한다.
Related MCP server: Chat Human MCP Server
설치
npm install
npm run build채널 설정
키가 있는 채널만 사용된다. 둘 다 설정된 경우 텔레그램이 우선이며 ECHOLOOP_CHANNEL로 강제할 수 있다.
텔레그램 (양방향, 권장)
@BotFather에서
/newbot→ 봇 토큰 발급만든 봇에게 아무 메시지나 1회 전송
chat_id확인:curl "https://api.telegram.org/bot<TOKEN>/getUpdates" # → result[0].message.chat.id
TELEGRAM_BOT_TOKEN=123456:AA...
TELEGRAM_CHAT_ID=987654321디스코드 (양방향)
Developer Portal에서 애플리케이션 → Bot 생성 → 토큰 발급
서버에 초대. 필요 권한: View Channel, Send Messages, Read Message History (REST로 읽으므로 Message Content Intent는 필요 없다)
채널 우클릭 → ID 복사 (개발자 모드 필요)
DISCORD_BOT_TOKEN=...
DISCORD_CHANNEL_ID=...디스코드 웹훅 (단방향)
채널 설정 → 연동 → 웹훅 URL. notify만 동작하고 ask는 에러를 반환한다.
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...Claude Code에 등록
프로젝트의 .mcp.json이 셸 환경변수를 읽는다:
export TELEGRAM_BOT_TOKEN=... TELEGRAM_CHAT_ID=...
claude또는 값을 직접 박아서 등록:
claude mcp add echoloop \
-e TELEGRAM_BOT_TOKEN=... -e TELEGRAM_CHAT_ID=... \
-- node /path/to/EchoLoopMCP/dist/index.jsask의 대기 시간이 클라이언트 기본 타임아웃보다 길면 MCP_TOOL_TIMEOUT을 함께 올린다.
옵션
환경변수 | 기본값 | 설명 |
| 자동 |
|
|
|
|
Available Tools
2 toolsaskAsk the user and wait for a replyA
Push a message to the user's phone and then block until they reply, returning their reply text. Use it instead of ending your turn when the user is away from the terminal and you need their next instruction or a decision. Treat the returned text as the user's next instruction. Replies sent before this call are ignored.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | What to send. State what you did and what you need from the user, since they answer from a phone. | |
| timeout_seconds | No | How long to wait for a reply (default 240). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the blocking behavior, return value, and the handling of old replies. However, it does not specify what happens when the optional timeout_seconds elapses (e.g., returns null, errors, or continues waiting), which is a minor gap in behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, providing necessary detail without redundancy. It efficiently conveys the core action, usage, and behavioral nuances in three sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description specifies the return value (reply text) and the blocking nature. It also gives usage context and a behavioral caveat, making it sufficiently complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (message and timeout_seconds) are fully described in the schema, with clear explanations of their purpose and default. The description reinforces the meaning of 'message' and the timeout parameter is explained as the wait duration, so there is no ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool pushes a message, blocks for a reply, and returns the reply text. It differentiates from the sibling tool 'notify' by explicitly describing the blocking/reply behavior, so an agent can distinguish when to use 'ask' versus 'notify'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use it instead of ending the turn when the user is away and a decision/instruction is needed, and notes that pre-existing replies are ignored. This gives clear when-to-use and when-not-to-use guidance, fully covering usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notifyNotify the userA
Push a message to the user's phone (Telegram or Discord) and return immediately without waiting for an answer. Use it when a long task finishes, when a build or test run ends, or to report something the user should see while away from the terminal.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The message to send. Plain text; keep it short enough to read on a phone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite having no annotations, the description discloses that the tool sends a push notification, returns immediately, and does not wait for a response. It could mention delivery reliability, but the key behavioral contract is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences: the first states purpose and behavior, the second gives usage cases. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter notification tool, the description covers what it does, how it behaves, when to use it, and what the message should look like. Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already defines 'message' as a required string, and the description adds useful guidance: it should be plain text and short enough to read on a phone. This goes beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it pushes a message to the user's phone via Telegram or Discord and returns immediately. This distinguishes it from a tool like 'ask' by emphasizing that no answer is expected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use it: when a long task finishes, a build or test run ends, or to report something while away from the terminal. This gives concrete, actionable guidance for choosing the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.1.0- First observed
ask - First observed
notify
TDQS
The two tools, notify and ask, have clearly distinct purposes: notify is fire-and-forget, while ask blocks for a reply. There is no ambiguity in choosing between them.
Both tools use the same verb-based naming convention (notify, ask), which is concise and predictable. The names directly reflect their actions.
With only two tools, the server is minimal but perfectly scoped for its purpose—sending messages and requesting input. No redundant or missing tools are apparent.
For the domain of user notification and interaction, the two tools cover the fundamental operations: sending an unsolicited message and requesting a response. This is a complete set for the stated functionality.
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 Connectors
Let your AI sessions talk to each other — messaging, tasks, sessions, and alerts
- call-meOAuthapp.getcallme
Calls your phone when an AI task finishes or is blocked — hear it, say what's next.
Let your AI agent notify you by email, Slack, Discord, or webhook. One tool: send_notification.
Zero-setup WhatsApp notifications + human-in-the-loop for AI agents — text 'join', send in 60s.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables bidirectional communication between AI agents and users through ntfy.sh push notifications, allowing agents to send messages and wait for user responses in asynchronous chat workflows.3591MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to send messages to human users via chat platforms (currently Discord) and optionally wait for human responses, facilitating human-in-the-loop interactions.MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with users via Telegram to request decisions, approvals, or specific input through text and clickable buttons. This facilitates a human-in-the-loop workflow where the AI can pause for feedback or send status notifications during long-running tasks.3-
- AlicenseAqualityDmaintenanceEnables AI agents to request user decisions and send notifications via Discord when human intervention is required during autonomous tasks. It supports blocking questions with custom options, progress reporting, and persistent state for seamless remote task management.8MIT
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/aidevksh/EchoLoopMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server