comms-mcp
AGENTS.md1 starsChanged 12 days agoMITView on GitHub
Unified fleet comms gateway. Telegram Bot API v0.1 behind comms_ops portmanteau (send/read_recent/list_threads/status/help). Allowlist-gated send, sanitized inbound, 7-day retention, SQLite outbox. Ports: backend 11205 (reserved 11205/11204 per WEBAPP_PORTS.md). - Daemon port 11205 (MCP_PORT/PORT env; MCP_HOST default 127.0.0.1). NSSM service name: comms-mcp (sidecar: comms-mcp-wa on :11208). - The daemon owns data/comms.db (override COMMS_DB_PATH, absolute for NSSM). - Stdio instances probe COMMS_DAEMON_URL (default http://127.0.0.1:<MCP_PORT or 11205>/health) and FastMCP.as_proxy() the daemon's /mcp when reachable — no double-daemon. - Bounce orderly: POST /api/shutdown (or comms_shutdown(confirm=True)),…
- Reads credentials
In this repository6 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- llms-full.txtllms.txt
- llms.txtllms.txt
- commsSkill
- commsSkill
The file
Files
comms-mcp — Agent Guide
Unified fleet comms gateway. Telegram Bot API v0.1 behind comms_ops
portmanteau (send/read_recent/list_threads/status/help). Allowlist-gated
send, sanitized inbound, 7-day retention, SQLite outbox.
Quick ref
uv run python -m comms_mcp # stdio; MCP_PORT=11205 -> HTTP daemon
just serve | lint | fix | test | typesPorts: backend 11205 (reserved 11205/11204 per WEBAPP_PORTS.md).
Rules
- Send is allowlist-gated — never bypass
chat_allowlist(). - Inbound text is untrusted: always
sanitize.sanitize_inbound()before use. - Outbound goes through the outbox (enqueue -> mark_sent/failed).
- Token only via
.env(COMMS_TELEGRAM_BOT_TOKEN) — never hardcode. - Adapters: one module per channel in
adapters/, registered incomms_ops.
HTTP daemon + stdio proxy
- Daemon port 11205 (
MCP_PORT/PORTenv;MCP_HOSTdefault 127.0.0.1). NSSM service name:comms-mcp(sidecar:comms-mcp-waon :11208). - The daemon owns
data/comms.db(overrideCOMMS_DB_PATH, absolute for NSSM). - Stdio instances probe
COMMS_DAEMON_URL(defaulthttp://127.0.0.1:<MCP_PORT or 11205>/health) andFastMCP.as_proxy()the daemon's/mcpwhen reachable — no double-daemon. - Bounce orderly:
POST /api/shutdown(orcomms_shutdown(confirm=True)), thenRestart-Service; never kill the child process. - NSSM env pins
USERPROFILE+ absoluteCOMMS_DB_PATH(split-brain guard).
Files
src/comms_mcp/adapters/telegram.py— Bot API (httpx)src/comms_mcp/outbox/sqlite.py— outbox + inbound store, TTL purgesrc/comms_mcp/mcp/tools/comms.py— the portmanteausrc/comms_mcp/sanitize.py— inbound sanitization (email-mcp pattern)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

