Skip to main content
Glama
Baho73

mcp-server-matrix

by Baho73
README.md
# mcp-server-matrix

[![README на русском](https://img.shields.io/badge/README-на_русском-blue)](README.ru.md)

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for [Matrix](https://matrix.org) — the open, decentralized communication protocol.

Built on [matrix-nio](https://github.com/matrix-nio/matrix-nio), this server lets any MCP-compatible AI assistant (Claude, OpenClaw, etc.) send and read messages, manage rooms, and interact with any Matrix homeserver (Synapse, Dendrite, Conduit).

## Features

| Tool | Description |
|------|-------------|
| `send_message` | Send a message (text, HTML, or Markdown) with optional reply |
| `read_messages` | Read recent messages (with pagination) |
| `get_messages_by_date` | Get messages filtered by date range |
| `list_rooms` | List all joined rooms |
| `get_room_info` | Room details — name, topic, members, encryption status |
| `get_room_members` | List joined members with display names and avatars |
| `get_notification_counts` | Unread and mention counts per room |
| `get_direct_messages` | List DM conversations with unread status |
| `send_direct_message` | Send a DM (auto-creates room if needed) |
| `get_user_profile` | User profile — display name, avatar |
| `join_room` | Join a room by ID or alias |
| `leave_room` | Leave a room |
| `create_room` | Create a new room (with optional invites) |
| `invite_user` | Invite a user to a room |
| `send_reaction` | React to a message with an emoji |
| `resolve_alias` | Resolve `#alias:server` to a room ID |

## Installation

```bash
pip install mcp-server-matrix
```

Or with [uv](https://docs.astral.sh/uv/):

```bash
uvx mcp-server-matrix
```

## Configuration

Set environment variables:

| Variable | Required | Description |
|----------|----------|-------------|
| `MATRIX_HOMESERVER` | Yes | Homeserver URL (e.g. `https://matrix.org`) |
| `MATRIX_USER` | Yes | Full user ID (e.g. `@bot:matrix.org`) |
| `MATRIX_PASSWORD` | Yes* | Account password |
| `MATRIX_ACCESS_TOKEN` | Yes* | Access token (alternative to password) |
| `MATRIX_STORE_PATH` | No | Path for nio session store (default: `~/.mcp-server-matrix/nio_store/`) |
| `MCP_LOG_LEVEL` | No | Log level: DEBUG, INFO, WARNING, ERROR (default: INFO) |

\* Provide either `MATRIX_PASSWORD` or `MATRIX_ACCESS_TOKEN`.

## Usage

### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "matrix": {
      "command": "mcp-server-matrix",
      "env": {
        "MATRIX_HOMESERVER": "https://matrix.example.com",
        "MATRIX_USER": "@bot:example.com",
        "MATRIX_PASSWORD": "your-password"
      }
    }
  }
}
```

### Claude Code

```json
{
  "mcpServers": {
    "matrix": {
      "command": "mcp-server-matrix",
      "env": {
        "MATRIX_HOMESERVER": "https://matrix.example.com",
        "MATRIX_USER": "@bot:example.com",
        "MATRIX_ACCESS_TOKEN": "syt_..."
      }
    }
  }
}
```

### OpenClaw

Add to `openclaw.json`:

```json
{
  "mcp": {
    "servers": {
      "matrix": {
        "command": "mcp-server-matrix",
        "env": {
          "MATRIX_HOMESERVER": "https://matrix.example.com",
          "MATRIX_USER": "@bot:example.com",
          "MATRIX_PASSWORD": "your-password"
        }
      }
    }
  }
}
```

### Direct (stdio)

```bash
export MATRIX_HOMESERVER=https://matrix.example.com
export MATRIX_USER=@bot:example.com
export MATRIX_PASSWORD=your-password

mcp-server-matrix
```

## Examples

Once connected, your AI assistant can:

- **Read messages**: "What are the latest messages in #general?"
- **Send messages**: "Send 'Hello everyone!' to #announcements"
- **Manage rooms**: "Create a room called 'Project X' and invite @alice:matrix.org"
- **Get info**: "How many members are in #team-chat?"

## Supported Homeservers

Tested with:

- [Synapse](https://github.com/element-hq/synapse) (reference implementation)
- Should work with any spec-compliant homeserver (Dendrite, Conduit, etc.)

## Requirements

- Python 3.10+
- A Matrix account on any homeserver
- Network access to the homeserver

## License

MIT

## Links

- [Model Context Protocol](https://modelcontextprotocol.io)
- [matrix-nio](https://github.com/matrix-nio/matrix-nio)
- [Matrix Spec](https://spec.matrix.org)

TDQS

A3.6/5.0

Scored across 16 tools

Disambiguation4/5

Most tools have distinct purposes. Potential confusion between send_direct_message and send_message is mitigated by descriptions specifying DM vs room context. Tools for rooms, messages, users, and notifications are well-separated.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., create_room, get_room_info, send_message). No deviations or mixed conventions, making the set predictable.

Tool Count5/5

16 tools cover a broad range of Matrix operations without being overwhelming. Each tool has a clear purpose, and the count matches the complexity of the domain.

Completeness4/5

Core CRUD for rooms (create, join, leave, list, get info, members) and messaging (send, read, react, date filtering) are covered. Missing tools for updating room settings and deletion, but basic workflows are complete.

Maintenance

ActivityInactive
ResponsivenessUnresponsive