Skip to content

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_xmpp blocks until answered or timed out. Do not use it for fire-and-forget notifications — use send_message for 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_messagesconfirm_via_xmppsend_message


Discover then send

"List my contacts and rooms, then say hello to the first room you find."

Flow: list_contacts + list_roomssend_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_xmppsend_message → (action)


Tips

  • Use real JIDs. If you only know a display name, run list_contacts first.
  • The bot only sees rooms it has joined. Ask it to join a new room before posting there.
  • confirm_via_xmpp is 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.