matrix-mcp-server
@guan-tends/matrix-mcp-server
Un servidor de herramientas MCP (Model Context Protocol) independiente que expone operaciones de chat de Matrix como herramientas invocables. Cualquier cliente compatible con MCP — agentes de IA, pipelines de automatización, herramientas de desarrollo — puede usar estas herramientas para enviar mensajes, gestionar salas, resolver nombres e interactuar con el protocolo Matrix.
Construido sobre @vector-im/matrix-bot-sdk con soporte completo de E2EE (cifrado de extremo a extremo).
Características
15 herramientas MCP — mensajería, gestión de salas, gestión de usuarios y resolución inteligente de IDs
Soporte E2EE — cifrado Megolm completo mediante backend criptográfico Rust
Resolución de nombres amigable — refiérete a salas y usuarios por nombre, no por IDs opacos
Sistema de alias — enseña al servidor accesos directos personalizados (p. ej.,
"eng"→"!abc123:matrix.org")Servidor HTTP independiente — se ejecuta de forma autónoma, conecta cualquier cliente MCP vía HTTP
Cero cron, cero LLM — servidor de herramientas puro. La programación y la inteligencia viven en la capa del agente
Related MCP server: ottoauthMCP
Instalación
npm install @guan-tends/matrix-mcp-serverRequisitos
Node.js >= 22.0.0
Una cuenta de Matrix con un token de acceso
Inicio rápido
1. Clona y configura
git clone https://github.com/guan-tends/matrix-mcp-server.git
cd matrix-mcp-server
npm install
cp config.example.json5 config.json5Edita config.json5 con tus credenciales de Matrix:
{
homeserverUrl: "https://matrix.org",
accessToken: "syt_...",
serverName: "matrix.org",
port: 3456,
host: "0.0.0.0",
storePath: "./data/store.json",
cryptoPath: "./data/crypto",
}2. Ejecuta
npm startEl servidor escucha en http://0.0.0.0:3456 y acepta solicitudes del protocolo MCP sobre HTTP.
3. Conecta tu cliente MCP
Apunta cualquier cliente compatible con MCP al servidor:
{
"mcpServers": {
"matrix": {
"url": "http://localhost:3456"
}
}
}O úsalo con el agregador @guan-tends/mcp-ai para la composición de herramientas de múltiples servidores.
Configuración
Basado en archivos
Edita config.json5 (consulta config.example.json5 para todas las opciones).
Variables de entorno
Todos los valores de configuración se pueden establecer mediante variables de entorno (máxima precedencia):
Variable | Clave de configuración |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Herramientas (15)
Mensajería
Herramienta | Descripción |
| Envía texto a una sala (por ID o nombre resuelto) |
| Envía un mensaje con formato HTML |
| Reacciona a un mensaje con un emoji |
| Envía un mensaje directo (crea un DM cifrado si es necesario) |
Gestión de salas
Herramienta | Descripción |
| Únete a una sala por ID o alias |
| Abandona una sala |
| Lista todas las salas a las que te has unido |
| Obtén los mensajes recientes de una sala |
Gestión de usuarios
Herramienta | Descripción |
| Obtén el estado de presencia de un usuario |
| Invita a un usuario a una sala |
| Expulsa a un usuario de una sala |
Resolución de IDs
Herramienta | Descripción |
| Enseña al servidor un alias de sala (p. ej., |
| Enseña al servidor un alias de usuario (p. ej., |
| Resuelve un nombre de sala a su ID de Matrix con puntuación de confianza |
| Resuelve un nombre de usuario a su ID de Matrix con puntuación de confianza |
Estrategia de resolución
El resolvedor utiliza un enfoque híbrido con puntuación de confianza:
Alias de usuario (confianza: 1.0) — Mapeos definidos por el usuario
Coincidencia exacta (confianza: 0.9) — Nombre para mostrar exacto o alias canónico
Coincidencia parcial (confianza: 0.7) — Coincidencia parcial del nombre
Ambigüedad (confianza: 0.5) — Múltiples coincidencias, devuelve candidatos
Arquitectura
┌─────────────────────────┐
│ index.js │
│ (composition root) │
└──────────┬──────────────┘
│ wires
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ MatrixClient │ │ AliasStore │ │ McpDataStore │
│ (bot-sdk) │ │ (aliases) │ │ (DM cache) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────┬────────┘ │
▼ │
┌──────────────────┐ │
│ MatrixIdResolver │◄────────────────┘
└────────┬─────────┘
│
▼
┌──────────────────┐
│ mcp-server.js │── MCP SDK SimpleServer
│ (15 tools) │── HTTP transport
└──────────────────┘IoC de raíz de composición: index.js conecta todas las dependencias. Ningún módulo importa las dependencias de otro. Cada módulo es comprobable de forma independiente.
Decisiones de diseño
IoC de raíz de composición —
index.jsconecta todas las dependencias. Los módulos no se importan entre sí.AliasStore mínimo — Solo se necesitan 4 métodos para la gestión de alias de salas/usuarios.
Persistencia JSON simple —
persist.jsgestiona la carga/guardado. Dos archivos de datos.Envoltorio
withErrorHandling— Evita la repetición del try/catch en cada herramienta.Sin cron, sin LLM, sin bot — Servidor de herramientas MCP puro. Los agentes gestionan su propia programación.
Pruebas
# All tests (unit + E2E)
npm test
# Watch mode
npm run test:watch
# With coverage
npm run test:coverage65 pruebas en 6 archivos (5 unitarias, 1 E2E).
Estructura del proyecto
src/
├── index.js — Composition root: config → Matrix client → wire → start
├── mcp-server.js — 15 MCP tools + helpers (withErrorHandling, resolveRoomInput, etc.)
├── matrix-id-resolver.js — Room/user name → Matrix ID resolution
├── alias-store.js — Minimal per-user alias storage
├── mcp-data-store.js — DM room ID cache
└── persist.js — Simple JSON load/save utility
__tests__/
├── unit/ — Unit tests (alias-store, mcp-data-store, resolver, mcp-server, persist)
├── e2e/ — E2E test (full server start → MCP client → tool calls)
├── mocks/ — Mock MatrixClient for testing
└── vitest.config.jsPatrocinadores
Si este proyecto te resulta útil, considera apoyar su desarrollo:
Solana:
Eu8wQcW68TKMs1a6eqzZu8znzU52QLqQugAMG8uCD6y6EVM (Ethereum / Base / Arbitrum / Optimism / Polygon):
0x2733ff7c865C56d565a99BE1DC11B81cc76850A5XRP Ledger:
r4X6e7McAQj7e8vBCeued1RYu4mCJrREDG
Licencia
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA self-hostable MCP server that turns a folder of skills into callable tools via MCP and REST APIs.2MIT
- FlicenseNot gradedqualityDmaintenanceStandalone MCP server that proxies tool calls to Ottoauth HTTP endpoints, enabling account creation and dynamic service interaction.
- FlicenseNot gradedqualityDmaintenanceMCP server for Rocket.Chat, enabling AI agents to interact with Rocket.Chat workspaces via tools like listing users, sending messages, and managing channels.2
- AlicenseNot gradedqualityCmaintenanceMCP server for Matrix that lets Claude list rooms, search/read messages, send messages and files, react, create rooms, and invite users, with multi-homeserver support and safe-by-default writes; no end-to-end encryption.MIT
Related MCP Connectors
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/guan-tends/matrix-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server