XMPP MCP — Interaction Guide¶
Using the xmpp-mcp server with VNCorchestrator and Prosody XMPP. You interact in plain language — the model picks the right tool automatically.
Quick reference¶
| What you want to do | Example prompt | Tool |
|---|---|---|
| Check the bot's identity | "Who am I on XMPP?" | whoami |
| List joined rooms | "Which group chats are you in?" | list_rooms |
| List contacts | "List my XMPP contacts" | list_contacts |
| Send a direct message | "Message lena.fischer@vnc.biz: the build is ready" | send_message |
| Post to a group room | "Post 'deploying v5.2 now' to the devops room" | send_message |
| Request confirmation before acting | "Ask markus.wolf@vnc.biz to confirm before I wipe staging" | confirm_via_xmpp |
| Join a new room | "Join incidents@conference.vnc.biz" | join_groupchat |
| Read recent messages | "Show me the last 20 messages in the ops room" | fetch_messages |
Common actions¶
Check identity¶
"Who am I on XMPP?"
Returns the bot's own JID on the Prosody server.
Discover contacts and rooms¶
Always do this first if you don't know the exact JID. The model needs real addresses — it won't guess.
"List my XMPP contacts and all rooms I've joined."
Triggers list_contacts and list_rooms together, so you can reference real targets in follow-up prompts.
Send a direct message (1:1)¶
"Message lena.fischer@vnc.biz: the staging build is ready for your review."
The message type (chat) is inferred automatically from the recipient being a personal JID.
Post to a group room¶
"Post 'VNClagoon v5.2 deployed to production ✓' to the devops room."
If the room JID is ambiguous, be explicit:
"Post to ops@conference.vnc.biz (it's a group chat): the incident is resolved."
The message type (groupchat) is inferred from the room being a conference address.
Join a room¶
"Join incidents@conference.vnc.biz and post that you've joined."
Joining also bookmarks the room, so the bot auto-rejoins it after a restart. It is idempotent — asking to join a room you're already in just refreshes the bookmark.
Read recent messages¶
"Show me the last 20 messages in the incidents room and summarise what happened."
"What was the latest message from kai.bauer@vnc.biz?"
Messages are pulled from the server archive (MAM) with an in-memory buffer as fallback.
Human-in-the-loop confirmation¶
confirm_via_xmpp sends a question and waits for a yes/no reply before continuing. Use it as a gate before irreversible actions.
"Before wiping the test database, ask markus.wolf@vnc.biz to confirm.
If no reply in 5 minutes, abort and let me know."
How replies are matched¶
| Reply | Outcome |
|---|---|
yes / y / ok / sure / confirm |
Confirmed → proceeds |
no / n / nope / cancel / deny |
Declined → aborts |
| Anything else | Ignored — keeps waiting |
Matching is on the first word only, case-insensitive.
Scope¶
- 1:1 chat — only the addressed person's reply counts.
- Group room — the first yes/no from anyone in the room resolves it.
Timeout¶
If nobody answers in time, the result is confirmed: null. Always tell the model what to do in that case:
"…if it times out, abort and notify me."
Set a custom wait time:
"…give them 5 minutes to reply."
Note:
confirm_via_xmppblocks until answered or timed out. Do not use it for fire-and-forget notifications — usesend_messagefor those.
Chaining tools in one prompt¶
The model can fan out to multiple tools in a single request.
Incident response¶
"Check the latest messages in the incidents room. If anyone reported an outage,
ask oncall@vnc.biz to confirm they're handling it, then post an acknowledgement
to the room once they say yes."
Flow: fetch_messages → confirm_via_xmpp → send_message
Discover then send¶
"List my contacts and rooms, then say hello to the first room you find."
Flow: list_contacts + list_rooms → send_message
Deployment notification with approval gate¶
"Before restarting the prod service, ask devlead@vnc.biz to approve.
If confirmed, post 'restarting prod — expect 30 s downtime' to the devops room,
then restart the service. If declined or no reply after 3 minutes, do nothing."
Flow: confirm_via_xmpp → send_message → (action)
Tips¶
- Use real JIDs. If you only know a display name, run
list_contactsfirst. - The bot only sees rooms it has joined. Ask it to join a new room before posting there.
confirm_via_xmppis blocking — it holds until answered or timed out. Never use it for simple notifications.- If a tool reports "not connected to XMPP", the connection is still coming up or reconnecting — wait a moment and retry.
- Joining is idempotent — safe to request even if already joined; it just refreshes the bookmark.