Skip to main content

Matrix MCP

License CI PyPI Python Versions Docs MCP

MindRoom Logo

Local-first Matrix access for MCP clients.

Matrix MCP lets Claude Code and other MCP clients read and write Matrix rooms. It is intended to make MindRoom conversations available to local coding agents without giving hosted agents access to the local filesystem.

For remote clients, opt into authenticated HTTP. Each caller connects its own Matrix account through browser SSO. Hosted tools use raw Matrix IDs and support conversations, room membership, and room/profile updates, with no local-file access.

Install

uv tool install matrix-mcp

For local development:

uv sync --extra dev

Login

Matrix SSO:

matrix-mcp auth sso https://mindroom.chat

If the homeserver advertises multiple SSO providers, list their provider IDs:

matrix-mcp auth providers https://mindroom.chat

Then pass the provider ID explicitly:

matrix-mcp auth sso https://mindroom.chat --idp-id github

The SSO flow starts a temporary callback server on the machine running matrix-mcp and waits for the browser to be redirected to it. If that machine is remote (for example over SSH), a browser on your local machine cannot reach the callback. Pin the callback port and forward it from the machine with your browser:

# on the remote machine
matrix-mcp auth sso https://mindroom.chat --callback-port 8765
# on your local machine, in a second terminal
ssh -N -L 8765:127.0.0.1:8765 remote-host

Then open the printed SSO URL in your local browser. After login, the homeserver redirects to http://127.0.0.1:8765/callback, which SSH forwards to the waiting command on the remote machine. If port forwarding is not an option, use the manual flow described in the getting started guide with matrix-mcp auth sso-url and matrix-mcp auth login-token.

If your homeserver is behind an access gateway that requires extra request headers, pass them during login. They are stored with the Matrix credentials and reused by MCP tools:

matrix-mcp auth sso https://mindroom.chat \
  --header "X-Access-Client-Id: ..." \
  --header "X-Access-Client-Secret: ..."

If the gateway header is short-lived, store a command that prints the current header value instead. The command is re-run when Matrix MCP creates a client for tool calls:

matrix-mcp auth sso https://mindroom.chat \
  --header-command "X-Access-Token: access-gateway-cli token --app https://mindroom.chat"

For homeservers behind Cloudflare Access, matrix-mcp can configure the dynamic cf-access-token header for you. This uses the local cloudflared CLI to log in when needed during setup, then stores a command that reads the current token:

brew install cloudflared
matrix-mcp auth sso https://mindroom.chat --cloudflare-access

For other platforms, install cloudflared from Cloudflare's downloads page.

Existing Matrix access token:

matrix-mcp auth token https://mindroom.chat @alice:mindroom.chat "$MATRIX_ACCESS_TOKEN" --device-id DEVICEID

Password auth, when enabled by the homeserver:

matrix-mcp auth password https://mindroom.chat @alice:mindroom.chat

Credentials are stored in the user config directory reported by:

matrix-mcp config-path

Remove stored credentials:

matrix-mcp auth logout

Claude Code

Add the local MCP server:

claude mcp add matrix -- matrix-mcp serve

Codex

Add the local MCP server:

codex mcp add matrix -- matrix-mcp serve

The server runs over stdio. It does not expose a local HTTP port during normal MCP operation.

Tools

  • matrix_whoami: show the configured Matrix user/device.
  • matrix_list_rooms: list rooms joined by the authenticated user.
  • matrix_read_room_recent: read recent text events from a room.
  • matrix_read_thread: read a Matrix thread root and its recent text replies.
  • matrix_send_message: send a text message or local file, optionally as a Matrix thread reply.
  • matrix_list_room_members: page through joined members and their profiles.
  • matrix_search_users: find user IDs in the homeserver's visible user directory.
  • matrix_invite_user: invite a user to a room.
  • matrix_get_room_info: read a room's name, topic, and avatar.
  • matrix_set_room_name, matrix_set_room_topic, matrix_set_room_avatar: update room details.
  • matrix_get_profile: look up your own or another user's profile.
  • matrix_set_display_name, matrix_set_avatar: update your own global profile.

All actions use the connected account's Matrix permissions. See room and profile examples for arguments, pagination, and avatar media URIs.

Rooms and events returned by read/list tools include stable numeric id fields. Thread replies also include thread_ref, which is the numeric event ref of the thread root. Use these integers in later tool calls instead of copying raw Matrix IDs:

matrix_read_room_recent(room_id=1)
matrix_read_thread(room_id=1, thread_id=42)
matrix_send_message(room_id=1, body="reply", thread_id=42)

To address a specific agent or user, send their full Matrix user ID in mentions, then read replies from the same thread:

matrix_send_message(
    room_id=1,
    body="Could you check this?",
    thread_id=42,
    mentions=["@helper:example.com"],
)
matrix_read_thread(room_id=1, thread_id=42)

Mentions apply to text messages. File sends do not accept mentions.

The tool instructions tell clients to prefer read tools first and only send messages when the user explicitly asks.

Development

uv run --extra dev pytest
uv run --extra dev ruff check .
uv run --extra dev ruff format --check .
uv run --extra dev mypy src tests
uv run --extra dev ty check
uv build

Metadata

Release files for matrix-mcp 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for matrix-mcp 0.7.0
File Size Uploaded
matrix_mcp-0.7.0.tar.gz 193.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for matrix-mcp 0.7.0
File Interpreter ABI Platform
matrix_mcp-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 227.7 kB

Release files / matrix_mcp-0.7.0.tar.gz

Download URL matrix_mcp-0.7.0.tar.gz
Size 193.9 kB
Tags Source
SHA-256 checksum
How to use checksums
543a55481acaecf19b24e78e40e0b119b15dcd6e443bb94ddfd9eb81acc29ba1
BLAKE2b-256 checksum
How to use checksums
377211ef63e699543f4c1ce8077a030715b21b0213064790c2f24b98902d7779
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release files / matrix_mcp-0.7.0-py3-none-any.whl

Download URL matrix_mcp-0.7.0-py3-none-any.whl
Size 33.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6210ad936f55dcec28bc088e54ca32e3ab3d18291316221ed23af3ca123ff59b
BLAKE2b-256 checksum
How to use checksums
1a451bd09cbd5272c9a22f9c4799413bef9c42387dae644ede88b337a1643ced
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.1

2 release files

0.8.0

2 release files

This release

0.7.0 This release

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page