matrix-mcp-server

by mjknowles

48 611 downloads Not rated yet MIT
GitHub

About

MCP Server for a Matrix home server integration; chat, manage rooms, etc.

Details

License
MIT

Explore

- πŸ” OAuth 2.0 Authentication with token exchange support
- πŸ“± 15 Matrix Tools organized by functionality tiers
- 🏠 Multi-homeserver Support with configurable endpoints
- πŸ”„ Real-time Operations with ephemeral client management
- πŸš€ Production Ready with comprehensive error handling
- πŸ“Š Rich Responses with detailed Matrix data

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name matrix-mcp-server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Prerequisites

- Node.js 20+ and npm
- Matrix homeserver access (Synapse, Dendrite, etc.)
- MCP client (Claude Desktop, VS Code with MCP extension, etc.)

roomId

(string): Matrix room ID (e.g., `!roomid:domain.com`)

limit

(number, default: 20): Maximum messages to retrieve

startDate

(string): ISO 8601 format (e.g., `2024-01-01T00:00:00Z`)

endDate

(string): ISO 8601 format

targetUserId

(string): Target user's Matrix ID (e.g., `@user:domain.com`)

searchTerm

(string, optional): Filter by name or topic

server

(string, optional): Specific server to search

roomFilter

(string, optional): Specific room ID to check

includeEmpty

(boolean, default: false): Include DMs with no recent messages

message

(string): Message content

messageType

(enum: "text" | "html" | "emote", default: "text"): Message formatting

replyToEventId

(string, optional): Event ID to reply to

roomName

(string): Name for the new room

isPrivate

(boolean, default: false): Room privacy setting

topic

(string, optional): Room topic/description

inviteUsers

(array, optional): User IDs to invite initially

roomAlias

(string, optional): Human-readable room alias

roomIdOrAlias

(string): Room ID or alias to join

reason

(string, optional): Reason for leaving

- list-joined-rooms - Get all rooms the user has joined

- _No parameters required_
- Returns room names, IDs, and member counts

- get-room-info - Get detailed room information

- roomId (string): Matrix room ID (e.g., !roomid:domain.com)
- Returns name, topic, settings, creator, and member count

- get-room-members - List all members in a room
- roomId (string): Matrix room ID
- Returns display names and user IDs of joined members

- get-room-messages - Retrieve recent messages from a room

- roomId (string): Matrix room ID
- limit (number, default: 20): Maximum messages to retrieve
- Returns formatted message content including text and images

- get-messages-by-date - Filter messages by date range

- roomId (string): Matrix room ID
- startDate (string): ISO 8601 format (e.g., 2024-01-01T00:00:00Z)
- endDate (string): ISO 8601 format
- Returns messages within the specified timeframe

- identify-active-users - Find most active users by message count
- roomId (string): Matrix room ID
- limit (number, default: 10): Maximum users to return
- Returns users ranked by message activity

- get-user-profile - Get profile information for any user

- targetUserId (string): Target user's Matrix ID (e.g., @user:domain.com)
- Returns display name, avatar, presence, and shared rooms

- get-my-profile - Get your own profile information

- _No parameters required_
- Returns your profile, device info, and room statistics

- get-all-users - List all users known to your client
- _No parameters required_
- Returns display names and user IDs from client cache

- search-public-rooms - Discover public rooms to join
- searchTerm (string, optional): Filter by name or topic
- server (string, optional): Specific server to search
- limit (number, default: 20): Maximum rooms to return
- Returns room details, topics, and member counts

- get-notification-counts - Check unread messages and mentions

- roomFilter (string, optional): Specific room ID to check
- Returns unread counts, mentions, and recent activity

- get-direct-messages - List all DM conversations
- includeEmpty (boolean, default: false): Include DMs with no recent messages
- Returns DM partners, last messages, and unread status

- send-message - Send messages to rooms

- roomId (string): Matrix room ID
- message (string): Message content
- messageType (enum: "text" | "html" | "emote", default: "text"): Message formatting
- replyToEventId (string, optional): Event ID to reply to
- Supports plain text, HTML formatting, and emote actions

- send-direct-message - Send private messages to users
- targetUserId (string): Target user's Matrix ID
- message (string): Message content
- Automatically creates DM rooms if needed

- create-room - Create new Matrix rooms

- roomName (string): Name for the new room
- isPrivate (boolean, default: false): Room privacy setting
- topic (string, optional): Room topic/description
- inviteUsers (array, optional): User IDs to invite initially
- roomAlias (string, optional): Human-readable room alias
- Creates rooms with appropriate security settings

- join-room - Join rooms by ID or alias

- roomIdOrAlias (string): Room ID or alias to join
- Works with invitations and public rooms

- leave-room - Leave Matrix rooms

- roomId (string): Room ID to leave
- reason (string, optional): Reason for leaving
- Cleanly exits rooms with optional reason

- invite-user - Invite users to rooms
- roomId (string): Room to invite user to
- targetUserId (string): User ID to invite
- Respects room permissions and power levels

- set-room-name - Update room display names

- roomId (string): Room to modify
- roomName (string): New room name
- Requires appropriate room permissions

- set-room-topic - Update room topics/descriptions
- roomId (string): Room to modify
- topic (string): New room topic
- Requires appropriate room permissions

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "matrix-mcp-server": {
            "matrix-mcp-server": {
                "command": "npx",
                "args": [
                    "@modelcontextprotocol/inspector"
                ]
            }
        }
    }
}

McpServers

{
    "matrix-mcp-server": {
        "command": "npx",
        "args": [
            "@modelcontextprotocol/inspector"
        ]
    }
}

A comprehensive Model Context Protocol (MCP) server that provides secure access to Matrix homeserver functionality. Built with TypeScript, this server enables MCP clients to interact with Matrix rooms, messages, users, and more through a standardized interface.

Features

- πŸ” OAuth 2.0 Authentication with token exchange support
- πŸ“± 15 Matrix Tools organized by functionality tiers
- 🏠 Multi-homeserver Support with configurable endpoints
- πŸ”„ Real-time Operations with ephemeral client management
- πŸš€ Production Ready with comprehensive error handling
- πŸ“Š Rich Responses with detailed Matrix data

Quick Start

Prerequisites

- Node.js 20+ and npm
- Matrix homeserver access (Synapse, Dendrite, etc.)
- MCP client (Claude Desktop, VS Code with MCP extension, etc.)

Installation

```bash

No reviews yet β€” be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.

Videos about matrix-mcp-server

Relevant YouTube tutorials, setups, and demos