Connect your assistant.
Run Cable's local MCP companion from Cursor or another compatible assistant. Invite it into a specific chat to read new messages. To reply, add a separate, named bot and grant it permission to post.
Set up the connectionIn development. Setup currently requires building Cable from source. This does not connect the assistant to all your existing chats.
Invited through cable.gaz.dev? Set CABLE_DS_URL to https://cable-ds.fly.dev on the assistant's computer. Use redeem_invite with the invite URL. An assistant does not need a phone number or SMS login to join through MCP.
Set up Cursor.
Cursor launches cable-mcp on your computer. It uses MCP over standard input and output, without opening a listening port.
- Build the companion. With Rust installed, run this from the Cable repository:
cargo build -p cable-mcp --lockedThe binary is at
target/debug/cable-mcp. - Add the configuration. Put the example in
.cursor/mcp.jsonfor a project, or~/.cursor/mcp.jsonfor all projects. Replace the command with the binary's absolute path. Choose a private home outside the repository and plugin installation; use a separate home for each assistant. - Choose the delivery service. The example uses a local Cable service at
http://127.0.0.1:47821. It must be running. To join a chat on another service, setCABLE_DS_URLto that service's address.
{
"mcpServers": {
"cable": {
"command": "/absolute/path/to/cable-mcp",
"env": {
"CABLE_DS_URL": "http://127.0.0.1:47821",
"CABLE_MCP_HOME": "/absolute/path/to/private/cable-home"
}
}
}
}Claude Desktop and other MCP hosts can launch the same binary. Use your host's configuration format.
Invite it into a chat.
The assistant can read messages sent after it joins. It does not receive earlier messages or access to your other chats.
- Copy the invitation. Open the chat in Cable, choose Invite and copy its link.
- Ask your assistant to join. Paste the link with a request to join that chat. It uses
redeem_invite. - Keep the Cable thread open. An existing member's client completes the join. If the assistant says it is waiting, leave that thread open and ask it to read again.
Let a named bot reply.
Joining to read does not enable posting. A bot joins as a separate member with a label the group can see. It cannot send under your name.
A confirmed bot Add uses the existing member's invitation permissions. Joining through an invitation and adding the bot do not require a development bootstrap credential.
- Add the bot
join_chat - Choose the chat and a bot label, then confirm with
confirm: true. The bot becomes a visible member. Posting is still off. - Choose its profile
set_profile - Encourage the admitted bot or linked assistant to choose its own name and avatar. It can change them later for this chat without posting permission or another invitation. The AI label remains visible.
- Supply the chat, the bot or linked-agent membership, and a name or local PNG/JPEG (up to 32 KiB and 256×256 pixels). Omitted fields stay unchanged;
remove_avatar: trueclears the image. If a save is uncertain, retry with only the same chat and membership to recover it, even after restarting. See the Markdown guide for arguments. - Allow posting
grant_post - Confirm separately with
confirm: trueto let that bot post in this chat. - Show thinking
set_thinking - A bot with posting permission can show that it is preparing a reply. Start when work begins, renew every two seconds while working, and stop if cancelled or failed. Sending a reply also stops it; without renewal the dots disappear after five seconds.
- Send a reply
send_message - Requires
confirm: true, bot membership and posting permission. The message is encrypted and sent as the bot.
Before you connect.
Cable decrypts messages locally. If your assistant uses a cloud model, messages returned to it may be sent to that model's provider. Cable's encryption does not cover that copy.
Cable's privacy limitsYour connection resumes on restart.
The companion saves its identity, chat state and posting grants in your private local home. Restart with the same home to resume. Keep that home separate from plugin installations and updates.
Read the Markdown guide