Metadata-Version: 2.4
Name: mcp-server-matrix
Version: 0.2.0
Summary: MCP server for Matrix — interact with Matrix homeservers via Model Context Protocol
Project-URL: Homepage, https://github.com/Baho73/mcp-server-matrix
Project-URL: Repository, https://github.com/Baho73/mcp-server-matrix
Project-URL: Issues, https://github.com/Baho73/mcp-server-matrix/issues
Author-email: Ivan Ponomarev <baho7726417@yandex.ru>
License: MIT
License-File: LICENSE
Keywords: chat,element,matrix,matrix-nio,mcp,model-context-protocol,synapse
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Requires-Dist: markdown>=3.5
Requires-Dist: matrix-nio>=0.24.0
Requires-Dist: mcp>=1.0.0
Description-Content-Type: text/markdown

# 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)
