Matrix42 MCP

Servidor de Model Context Protocol para Matrix42: permite que los asistentes de IA exploren la API, lean el modelo de datos, busquen en el service desk y actúen sobre tickets. Solo lectura por defecto.

Documentación

Servidor Matrix42 MCP

CI npm version node License: MIT MCP PRs welcome

Dale a tu asistente de IA una ventana segura, de solo lectura por defecto, a Matrix42.

Un servidor de Protocolo de Contexto de Modelo que permite a un asistente explorar una instancia de Matrix42 como lo haría un consultor experimentado: encontrar el servicio web correcto, leer el modelo de datos real, consultar registros con filtros válidos, buscar en el service desk y — solo si lo activas — actuar sobre tickets.

El servidor guarda las credenciales y habla con Matrix42 en nombre del asistente: realiza el intercambio de tokens de API, establece el encabezado Explicit-Language y maneja TLS. El asistente nunca ve tus credenciales.

You ask an AI assistant; the assistant talks to matrix42-mcp over MCP; matrix42-mcp talks to your Matrix42 instance over REST. Credentials stay in the server and never reach the assistant.

npx matrix42-mcp --help

[!IMPORTANT] Este es un proyecto comunitario independiente. No está afiliado, respaldado, patrocinado ni soportado por Matrix42 AG. "Matrix42" es una marca comercial de su respectivo propietario y se utiliza aquí solo para describir con qué interoperable este software. El soporte proviene de la comunidad a través de problemas de GitHubno contactes al soporte de Matrix42 sobre este proyecto, y no esperes un acuerdo de nivel de servicio de ningún tipo. Se proporciona "tal cual" bajo la licencia MIT.

[!NOTE] Estado: lanzamiento temprano. El servidor es de solo lectura por defecto — las herramientas de escritura ni siquiera se listan a menos que establezcas M42_ALLOW_WRITES=1.

Destacados

  • Solo lectura por defecto. Las herramientas de escritura están ausentes de la lista de herramientas a menos que se habiliten explícitamente.
  • Nunca adivina. Cada columna se resuelve contra el esquema en vivo de tu instancia antes de que se ejecute una consulta, por lo que un campo que tu instancia no tiene se informa — no se envía y se convierte en un 500 opaco.
  • Enseña, luego actúa. Cuatro guías escritas se incluyen con el servidor como recursos MCP, que cubren el modelo de datos, el esquema, el lenguaje de filtros ASQL y las convenciones REST.
  • Vista previa antes de escribir. Cada escritura devuelve la solicitud exacta que enviaría hasta que pases confirm. La vista previa es el mismo objeto de plan que se ejecuta, por lo que no puede desviarse.
  • Valores predeterminados seguros donde importa. Los correos de notificación están desactivados, las entradas de diario son internas, y los cierres en cascada son opcionales.
  • Sin código ni contenido de Matrix42. Cada guía es prosa original que enlaza a la documentación oficial en lugar de reproducirla.

Contenido


Por qué

La superficie de API de Matrix42 es grande (una instancia típica expone ~190 servicios web y ~1,100 operaciones), más un modelo de datos de ~800 definiciones de datos y ~240 elementos de configuración, y un asistente no tiene forma de saber qué existe. Apúntalo a este servidor y podrá buscar el endpoint correcto, leer el contrato exacto y luego escribir código de integración correcto — en lugar de adivinar URLs, autenticación y encabezados.


Qué puede hacer

Descubrir la API~1,100 operaciones con contratos completos de solicitud y respuesta, y si cada una es segura para actualizar
Entender el modelo785 definiciones de datos, 237 elementos de configuración, valores de selección, relaciones y cardinalidad
Leer registrosConsultas ASQL con paginación, vistas guardadas, diario, adjuntos y enlaces a la interfaz web
Trabajar el service deskBuscar siete tipos de tickets por nombre, niveles de servicio, trece dominios curados, o buscar todos a la vez
Actuar sobre ticketsCrear, cerrar, clasificar, tomar, reenviar, pausar, reabrir, establecer plazos, registrar tiempo — cada uno con vista previa primero

Herramientas

HerramientaQué hace
server_infoInforma qué instancia de Matrix42 está conectada y verifica que las credenciales funcionen. Nunca devuelve credenciales.
webservice_discoveryDescubre la API REST. Consulta las acciones a continuación.
schema_discoveryExplora el modelo de datos: definiciones de datos, elementos de configuración, atributos, relaciones, valores de selección.
data_queryLee registros: consultas ASQL, vistas guardadas, entradas de diario, adjuntos, más una guía y validador ASQL.
service_deskBusca tickets de cualquier tipo, responde preguntas de nivel de servicio y navega activos, contratos, servicios de catálogo, reservas, artículos de conocimiento, aprobaciones, importaciones e instancias de flujo de trabajo.
ticket_actionsEscritura — el ciclo de vida del ticket: crear, cerrar, tomar, reenviar, pausar, reabrir, establecer plazos, registrar tiempo, agregar entradas de diario. Solo presente cuando M42_ALLOW_WRITES=1.

Cómo se ve una conversación

Tú: ¿Qué tickets de hardware abiertos siguen sin resolver, y hay alguno que haya superado su nivel de servicio?

El asistente lo resuelve sin que nombres un solo id:

The assistant searches tickets by category and state, checks the service level of each, builds a deep link for the one at risk, and answers — without looking up a single id or writing anything.

Observa lo que no sucedió: sin búsquedas de GUID, sin nombres de atributos adivinados y nada se escribió. Observa también lo que el servidor rechaza: un filtro que Matrix42 acepta pero nunca aplica, por lo que una respuesta sin filtrar nunca se confunde con una filtrada.

Acciones de webservice_discovery

AcciónParámetrosDevuelve
api_overviewConvenciones generales de la API de Matrix42: intercambio de tokens, Explicit-Language, API Pública vs API de Producto, superficies de datos comunes. Útil antes de escribir código de integración independiente.
list_operationssearch?, service_id?, limit?Operaciones como {id, name, method, path, service, documentation}. search filtra por nombre, documentación y nombre de servicio. Por defecto devuelve los primeros 200 resultados; pasa limit: 0 para todos.
list_servicesCada servicio web con su prefijo de ruta y documentación.
describe_operationoperation_idEl contrato completo de una operación: método HTTP, ruta, parámetros con tipos y tipo de retorno.

Flujo típico: api_overview una vez → list_operations con un término de búsqueda → describe_operation sobre el que quieras.

Acciones de schema_discovery

AcciónParámetrosDevuelve
schema_overviewCómo encaja el modelo de datos de Matrix42: definiciones de datos vs elementos de configuración, fragmentos y multi-fragmentos, cardinalidad, selecciones y dónde encontrar la documentación oficial.
list_data_definitionssearch?, include_pickups?, limit?Definiciones como {internalName, displayName, description, classType, isPickup, isCustom}. Las clases de selección se excluyen a menos que se soliciten.
list_configuration_itemssearch?, limit?Elementos con su clase principal y definiciones de miembros.
describe_data_definitionname, include?Atributos con tipos de datos decodificados y enlaces cruzados de selección. Las relaciones se excluyen por defecto (una definición central puede tener 150+) — pasa include: "relations" o "both".
describe_configuration_itemnameLas definiciones que componen un objeto, cada una con su cardinalidad y una bandera isMultiFragment.
get_pickup_valuespickup_class o name+attributeLos pares {value, label} seleccionables — para que un modelo filtre por valores reales en lugar de adivinar códigos.

Flujo típico: schema_overviewlist_* con un término de búsqueda → describe_*get_pickup_values antes de filtrar por cualquier atributo de selección.

Acciones de data_query

AcciónParámetrosDevuelve
asql_guideEl lenguaje de expresiones ASQL utilizado por where y columns: operadores, cadenas de puntos, selecciones, pivotes T(...), subconsultas, [Expression-ObjectID].
validate_asqlclass, expressionSi una expresión es válida, con el error exacto (p. ej. "no contiene el atributo Nope"). Más barato que una consulta fallida.
queryclass, columns?, where?, sort?, page_size?, page?Filas más metadatos de columnas tipadas, con paginación (hasMore).
get_fragmentclass, fragment_idUn fragmento completo.
get_objectci_name, object_idUn objeto completo (todos los fragmentos de un elemento de configuración).
list_views / run_viewsearch? / view_idLas consultas de datos guardadas de la instancia — vistas curadas que ya llevan un filtro predefinido. Prefiere una vista coincidente sobre ASQL escrito a mano.
list_journalobject_idLa línea de tiempo de comentarios/actividad de un objeto.
list_attachmentsobject_idLos archivos adjuntos a un objeto.
deep_linkobject_id, view_type?Una URL a la interfaz web de Matrix42 — vista previa, edición, creación o ejecución de una acción. Resuelve el elemento de configuración del objeto por sí mismo, por lo que solo necesitas el id del objeto.

Flujo típico: asql_guide una vez → schema_discovery para encontrar la clase y sus valores de selección → validate_asqlquery. Siempre pasa sort al paginar; los límites de página son inestables de otro modo.

Los enums numéricos se decodifican por ti (Datatype: 2"Int", Cardinality: 3"Optional (Multi)"), y las personalizaciones se marcan usando el prefijo personalizado que la propia instancia informa.

Acciones de service_desk

AcciónParámetrosDevuelve
data_modelCómo se mapean los módulos de Matrix42 a un puñado de clases base — dónde viven realmente los tickets, activos, licencias, contratos, SLA y elementos de catálogo. Léelo cuando no estés seguro de dónde está algo.
search_ticketskind, más subject, category_name y/o statesTickets coincidentes. kind es uno de ticket, incident, problem, change, task, service_request, kb_article. Existen otros parámetros de filtro, pero Matrix42 los ignora, por lo que pasarlos es rechazado.
get_ticketticket_object_idEl resumen de un ticket como lo ve el service desk.
sla_for_ticketticket_object_idLos acuerdos de nivel de servicio que aplican, tal como los calcula la propia Matrix42.
sla_timesticket_object_idEstado de tiempo de reacción y solución.
browsedomain, search?, where?, limit?Filas de un dominio curado, más los campos que esta instancia no tiene.
findsearch, domains?, limit?Busca todos los dominios a la vez por un nombre — para cuando no sabes dónde vive algo. Los dominios que fallan (módulo no instalado) se informan, no son fatales.

Cada tipo comparte el mismo contrato, por lo que una forma de llamada cubre todo el service desk. Solo subject, category_name y states realmente filtran — Matrix42 acepta initiator_name, ticket_number, asset_id y el resto, luego los ignora y devuelve todos los tickets. Pasar uno es rechazado en lugar de devolver un resultado sin filtrar que leerías como filtrado; el rechazo apunta a data_query con un where ASQL, que sí filtra por esos.

Dominios browse: assets, stock_units, contracts, slas, catalog_services, bookings, kb_articles, approvals, imports, import_runs, workflow_instances, workflow_definitions, applications. Los flujos de trabajo son de solo lectura — este servidor lista definiciones e instancias pero nunca inicia, suspende, reanuda o cancela. Las columnas nunca se adivinan. Antes de cada browse, el servidor lee la lista real de atributos de la definición desde la instancia y conserva solo los campos que existen, reportando el resto como unavailableFields. Un módulo que no tienes licenciado produce por tanto una fila más corta, no una llamada fallida. La misma regla se indica en las guías y en las instrucciones del servidor, por lo que un modelo conectado también la sigue.

Todas las herramientas de lectura están anotadas con readOnlyHint: true, para que los clientes puedan distinguirlas de cualquier cosa que cambie datos.

Prompts

Plantillas reutilizables que tu cliente puede ofrecer (en Claude Desktop, el menú de prompts). Cada una codifica el orden de operaciones que este servidor recompensa, para que un modelo no tenga que redescubrirlo fallando:

PromptPara
explore_instanceOrientarse en una instancia desconocida
build_queryConvertir una pregunta en una consulta ASQL validada
triage_ticketTrabajar un ticket de principio a fin, sin cambiar nada
safe_changeGuiar una escritura a través de vista previa → confirmación
find_endpointLocalizar la operación correcta antes de escribir código de integración

Recursos

Las guías escritas también se publican como recursos MCP, de modo que un cliente puede leerlas sin una llamada de herramienta y adjuntar una a una conversación desde el principio:

URIContenido
matrix42://guide/data-modelMatrix42 es un solo grafo, no muchos módulos
matrix42://guide/schemaDefiniciones de datos, elementos de configuración, fragmentos, recogidas
matrix42://guide/asqlEl lenguaje de expresiones ASQL
matrix42://guide/apiConvenciones de la API REST: autenticación, cabeceras, API Pública vs API de Producto

Enlaces a la interfaz web

data_query(action='deep_link') construye una URL que un asistente puede entregarte, en el formato que Matrix42 documenta para enlaces profundos:

https://your-instance/wm/app-ServiceDesk/?view-options={"type":"SPSActivityTypeTicket",
                                                        "viewType":"preview",
                                                        "objectId":"<object id>"}

view_type selecciona qué se abre: preview (predeterminado, solo lectura), edit, new para un formulario de creación, o action para un asistente. Solo new funciona sin un id de objeto, y action además necesita un action_id. Abrir un enlace nunca cambia nada — incluso edit espera a que una persona guarde.

Solo necesitas el id de objeto. Una definición de datos base es reutilizada por muchos elementos de configuración — SPSActivityClassBase por sí sola respalda incidentes, solicitudes de servicio y cambios — por lo que el servidor resuelve la real por ti en lugar de hacerte elegir. Pasa un ci_name incorrecto y lo corrige; pasa un id de fragmento y se niega en lugar de darte un enlace que no abre nada.

Los enlaces apuntan al origen propio de la interfaz web, no al host de la API a la que te conectaste. A menudo son diferentes: una instancia accesible por una IP suele servir su UUX bajo un nombre real, y el config.json del shell indica cuál. Cargar el shell desde el origen incorrecto deja a la aplicación llamando a un origen desde el que no fue servida, lo que falla después de que la página ya parezca haber cargado. El servidor lee ese origen de la instancia y lo reporta como webInterface junto al enlace; M42_UI_URL lo sobrescribe.

El mismo texto está verificado en docs/ para que sea legible en GitHub sin ejecutar nada — comienza con Matrix42 es un solo grafo, no muchos módulos, que explica por qué no hay una tabla de "Licencias" o "SLAs" y dónde viven realmente esos registros. Esos archivos se generan a partir de los módulos de guía (npm run docs), y una prueba falla si se desvían.


Requisitos

  • Node.js 22.19 o más reciente (requerido por undici, el cliente HTTP)
  • Una instancia de Matrix42 y ya sea un token de API (recomendado) o credenciales de autenticación básica

Creación de un token de API

En la aplicación Administración de Matrix42, crea un token de API para la cuenta bajo la que debe actuar el asistente. El servidor lo intercambia automáticamente por un token de acceso de corta duración y lo reintercambia antes de que expire.

La autenticación básica es compatible pero desaconsejada: muchas instancias aceptan las credenciales pero aún así rechazan el acceso a la API con 403 debido a restricciones de rol/audiencia.


Configuración

Toda la configuración se realiza mediante variables de entorno.

VariableObligatoriaPredeterminadoDescripción
M42_HOSTURL base de la instancia, p. ej. https://matrix42.example.com
M42_API_TOKEN✅¹Token de API; se intercambia automáticamente por un token de acceso
M42_USERNAME / M42_PASSWORD✅¹Alternativa de autenticación básica a M42_API_TOKEN
M42_LANGUAGEen-USIdioma de respuesta, enviado como Explicit-Language
M42_TOOLStodosIDs de herramientas separados por comas para exponer
M42_ALLOW_WRITES0Establécelo en 1 para exponer herramientas que modifican datos. Las herramientas de escritura no se registran en absoluto a menos que esto esté establecido.
M42_ALLOW_INSECURE_TLS0Establécelo en 1 para omitir la verificación TLS (solo instancias de desarrollo autofirmadas)
M42_AUDIT_NOTE1Marca los tickets creados con una nota interna que indica que se crearon a través de este servidor. Establécelo en 0 para desactivarlo.
M42_AGENT_LABELMatrix42 MCP serverCómo se nombra al asistente en esa nota
M42_UI_URLdescubiertoOrigen de la interfaz web, para enlaces profundos. Se descubre desde la configuración del shell web de la instancia cuando no está establecido.
M42_TIMEOUT_MS30000Tiempo de espera por solicitud

¹ Proporciona ya sea M42_API_TOKEN o ambos M42_USERNAME y M42_PASSWORD.


Configuración del cliente

El servidor se ejecuta sobre stdio: tu cliente MCP lo inicia. No se necesita ningún paso de instalación — npx lo obtiene bajo demanda.

Claude Code

claude mcp add matrix42 \
  --env M42_HOST=https://matrix42.example.com \
  --env M42_API_TOKEN=your-api-token \
  -- npx -y matrix42-mcp

Claude Desktop

claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\)

{
  "mcpServers": {
    "matrix42": {
      "command": "npx",
      "args": ["-y", "matrix42-mcp"],
      "env": {
        "M42_HOST": "https://matrix42.example.com",
        "M42_API_TOKEN": "your-api-token"
      }
    }
  }
}

Cursor

~/.cursor/mcp.json (global) o .cursor/mcp.json (por proyecto)

{
  "mcpServers": {
    "matrix42": {
      "command": "npx",
      "args": ["-y", "matrix42-mcp"],
      "env": {
        "M42_HOST": "https://matrix42.example.com",
        "M42_API_TOKEN": "your-api-token"
      }
    }
  }
}

VS Code (GitHub Copilot)

.vscode/mcp.json — esta forma solicita el token en lugar de almacenarlo en el archivo:

{
  "inputs": [
    { "id": "m42-token", "type": "promptString", "description": "Matrix42 API token", "password": true }
  ],
  "servers": {
    "matrix42": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "matrix42-mcp"],
      "env": {
        "M42_HOST": "https://matrix42.example.com",
        "M42_API_TOKEN": "${input:m42-token}"
      }
    }
  }
}

Otros clientes compatibles con stdio (Windsurf, Cline, Zed, …) usan la misma forma command / args / env.


Verificación de la conexión

Pide al asistente que llame a server_info, o ejecuta la prueba de humo incluida contra tu instancia:

git clone https://github.com/sus-tech-gmbh/M42-MCP.git
cd M42-MCP && npm install && npm run build

M42_HOST=https://matrix42.example.com \
M42_API_TOKEN=your-api-token \
node scripts/smoke.mjs

Se conecta como un cliente MCP real y ejercita todas las herramientas.

También puedes ejecutar la CLI directamente:

npx matrix42-mcp --help    # usage and configuration
npx matrix42-mcp --tools   # available tool ids

Escritura de datos

Las herramientas de escritura están ausentes de la lista de herramientas a menos que M42_ALLOW_WRITES=1, por lo que una implementación predeterminada no puede modificar nada incluso si un modelo lo pide. Cuando está habilitado, ticket_actions ofrece:

AcciónNotas
create_ticketDevuelve el nuevo id de objeto, que todas las demás acciones toman directamente.
close_ticketCierra por id de objeto, con una solución y motivo de cierre opcionales.
add_journal_entryAñade un comentario a cualquier objeto, con plantilla opcional parameters.
classify_ticketSolo sugiere un tipo a partir de texto — no cambia nada.
take_over / acceptReclama tickets. Necesita type_name, el elemento de configuración al que pertenecen.
forwardEntrega tickets a un role_id o user_id, aplicando opcionalmente un OLA.
pauseRetiene un ticket, deteniendo opcionalmente el reloj de escalado (not_escalate_while_paused).
reopenRevierte un cierre, con un motivo.
return_to_roleDevuelve un ticket a su rol responsable.
set_deadlineEstablece la fecha límite para manejar el ticket.
track_working_timeRegistra esfuerzo, opcionalmente tipado (investigation, resolution, …).
transformConvierte tickets a otro tipo — un incidente en una solicitud de servicio, por ejemplo. Reescribe lo que el registro es; los campos que el tipo objetivo no tiene se pierden.

Matrix42 envuelve su máquina de estados en estas operaciones nombradas en lugar de exponer un campo de estado crudo, que es lo que las hace seguras de ofrecer: cada una lleva exactamente los parámetros que su transición necesita.

Vista previa, luego confirmación

Cada acción muestra una vista previa por defecto. Llamada sin confirm: true, una escritura devuelve la solicitud exacta que enviaría — método, ruta, cuerpo — junto con las consecuencias que vale la pena leer, y no cambia nada:

{
  "wouldChange": true,
  "applied": false,
  "summary": "Close 1 ticket(s)",
  "request": { "method": "POST", "path": "m42Services/api/ticket/Close", "body": { "…": "…" } },
  "effects": ["No notifications are sent and nothing cascades."],
  "next": "Nothing was changed. Show this to the user, and call again with confirm:true to apply it."
}

Esa vista previa es el mismo objeto de plan que ejecuta la ruta de ejecución, por lo que nunca puede describir una solicitud y enviar otra. Pasa dry_run: true para forzar una vista previa incluso cuando confirm está establecido.

Cada ticket creado también recibe una nota de diario interna que registra que se creó a través de este servidor. Crear a través de la API de otro modo no deja ningún rastro del que la interfaz web deja, por lo que una persona que recoja el ticket no tiene forma de saber de dónde vino. La nota nunca es visible en el portal, y si no se puede escribir, el ticket aún se reporta como creado — perder una línea de auditoría nunca debe parecer una creación fallida. Desactívala con M42_AUDIT_NOTE=0, o nombra al asistente con M42_AGENT_LABEL="Acme Helpdesk Assistant".

Existen otros dos valores predeterminados para prevenir los errores más importantes en la gestión de servicios:

  • Los correos de notificación están desactivados. notify_initiator, notify_users y notify_responsible todos tienen como predeterminado false; cerrar un ticket no envía correo a nadie a menos que lo pidas.
  • Las entradas de diario son internas. visible_in_portal tiene como predeterminado false, por lo que un comentario no se publica en el portal de autoservicio del solicitante por accidente.

close_related_incidents también tiene como predeterminado false, ya que se propaga a otros tickets.

Notas de seguridad

  • El servidor es un proxy con credenciales. Cualquier cosa que la cuenta configurada pueda leer a través de la API, un asistente conectado puede alcanzarla a través de las herramientas que se le dan. Usa una cuenta limitada a lo que el asistente realmente necesita.
  • Las credenciales permanecen locales. Se leen del entorno, se usan solo para solicitudes a tu instancia, y nunca se escriben en registros ni se devuelven por ninguna herramienta.
  • Nunca confirmes .env. Está ignorado por git; usa el bloque env de tu cliente o un prompt secreto.
  • M42_ALLOW_INSECURE_TLS desactiva la verificación de certificados. Úsalo solo para instancias de desarrollo autofirmadas, nunca contra producción.
  • Limita la superficie con M42_TOOLS si solo quieres parte de ella.

Desarrollo

npm install
npm run build        # compile to dist/
npm run typecheck    # tsc --noEmit
npm test             # unit tests (vitest)
npm run docs         # regenerate docs/ from the guide modules
node scripts/smoke.mjs                # end-to-end against a real instance
node scripts/service-desk-smoke.mjs   # service desk, domains and lifecycle verbs

service-desk-smoke.mjs confina sus escrituras a un solo ticket que crea por sí mismo, y lo cierra al final; nada preexistente se modifica y nunca se solicita un correo de notificación.

Cómo encaja

Layered architecture: the MCP surface sits on domain modules, which sit on the correctness and safety layer, which sits on the authenticated client.

Dos módulos llevan las garantías en las que se apoya el resto del servidor: columns.ts significa que ninguna proyección se envía jamás que la instancia no pueda responder, y write-plan.ts significa que una vista previa y su solicitud son el mismo objeto.

Diseño

src/
  index.ts           entry point: config → client → MCP stdio server
  config.ts          environment configuration + validation
  m42-client.ts      authenticated HTTP client (token exchange, caching, TLS)
  discovery.ts       fragment queries + projections for services/operations
  schema.ts          schema listings, detail projections, enum decoding, pickup resolution
  api-overview.ts    the static Matrix42 API guide served by api_overview
  schema-overview.ts the static data-model guide served by schema_overview
  data.ts            record queries, paging, result shaping, ASQL validation
  objects.ts         journal, attachments, saved views, current-user identity
  tickets.ts         write operations and their safety defaults
  ticket-verbs.ts    the ticket lifecycle verbs (take over, forward, pause, reopen, …)
  service-desk.ts    the uniform ticket Search contract and the service-level endpoints
  columns.ts         resolves query columns from the live schema instead of assuming them
  domains.ts         the curated domain registry (assets, contracts, catalog, …)
  domain-guide.ts    the "one graph, not many modules" guide
  asql-guide.ts      the static ASQL guide served by asql_guide
  resources.ts       publishes the guides as MCP resources
  prompts.ts         reusable prompt templates
  deep-links.ts      URLs into the Matrix42 web interface (pure string building)
  write-plan.ts      the request a write would send, as a value — the basis of preview/confirm
  tools/             one module per tool, registered from a small registry

Añadir una herramienta significa añadir un módulo bajo src/tools/ y listarlo en src/tools/index.ts; su id entonces funciona en M42_TOOLS automáticamente.


Hoja de ruta

  • Carga y descarga de adjuntos
  • Decisiones de aprobación (aprobar / rechazar), que hoy son solo de lectura
  • Tokens por usuario, para que "mis elementos" pueda significar un usuario final en lugar de la cuenta de servicio

Contribuciones

Las contribuciones son muy bienvenidas — este es un proyecto comunitario y mejora con más instancias detrás. Las implementaciones de Matrix42 difieren enormemente, por lo que un informe de error que cite la solicitud exacta y el error exacto vale mucho: a menudo es la única forma de aprender que un atributo o una operación se comporta de manera diferente en otro lugar.

Buenas primeras contribuciones:

  • Un dominio que te importe pero que falte en src/domains.ts.
  • Una corrección a una guía en src/*-guide.ts / src/*-overview.ts (luego ejecuta npm run docs).
  • Un caso fallido de tu instancia, con la solicitud y la respuesta, como issue.

Antes de abrir una pull request:

npm run typecheck && npm test && npm run build

Por favor, respeta las dos reglas estrictas del proyecto: nunca adivines un nombre de atributo (resuélvelo contra el esquema en vivo) y nunca reproduzcas documentación o código con derechos de autor de Matrix42 — enlázalo en su lugar. Consulta CONTRIBUTING.md para más detalles.

Soporte

Solo soporte comunitario, a través de GitHub issues y discussions. No hay SLA, y Matrix42 AG no puede ayudarte con este proyecto — por favor, no abras un ticket con ellos al respecto.

Proyecto

ContribucionesCONTRIBUTING.md
Código de conductaCODE_OF_CONDUCT.md
Política de seguridadSECURITY.md
Registro de cambiosCHANGELOG.md
LanzamientosGitHub releases

Los lanzamientos se publican desde CI cuando se publica un GitHub Release, usando npm trusted publishing — no existe ningún token npm de larga duración en ningún lugar, y cada tarball lleva provenance que lo vincula al commit y al flujo de trabajo que lo construyó.

Seguridad

¿Encontraste una vulnerabilidad? Por favor, repórtala de forma privada en lugar de en un issue público — consulta SECURITY.md.

Licencia

MIT © 2026 S&S Technologies GmbH


Aviso legal

Este proyecto es una integración independiente y mantenida por la comunidad. No está afiliado con, respaldado por, patrocinado por o soportado por Matrix42 AG. "Matrix42" y cualquier marca relacionada pertenecen a sus respectivos propietarios y se usan aquí únicamente para identificar el software con el que este proyecto interopera. No se redistribuye ningún código fuente o documentación de Matrix42 en este repositorio.

El software se proporciona "tal cual", sin garantía de ningún tipo. Eres responsable de la cuenta con la que lo configures y de cualquier cosa que un asistente haga a través de él — lee Security notes antes de apuntarlo a una instancia de producción.