Recordist Gateway
Lee las reuniones que grabaste con Recordist en tu propio ordenador: transcripciones, notas, elementos de acción y búsqueda. Solo se comunica con la aplicación en 127.0.0.1; nada sale de la máquina.
Documentación
@recordist/gateway
Servidor MCP + agente A2A para Recordist, el tomador de notas de reuniones que se ejecuta en tu propia computadora, sin bots en la llamada y sin subir archivos. Permite que Claude Desktop, Claude Code, Cursor y otros agentes lean y actúen sobre las reuniones grabadas en tu máquina.
Recordist se está abriendo en pequeñas oleadas: solicita un lugar en https://recordist.app/early-access (Mac hoy; Windows y Linux en acceso anticipado).
- Lecturas (listar, obtener, transcripción, búsqueda, elementos de acción) funcionan esté o no la aplicación Recordist en ejecución: la puerta de enlace habla con la API local de la aplicación cuando está activa y, si no, recurre a abrir
recordist.dben modo solo lectura. - Acciones (iniciar/detener grabación, agregar marcador, regenerar notas) requieren la aplicación. Cuando no está en ejecución, fallan con
Recordist app is not running. - Todo es solo de bucle local. Nada sale de tu máquina.
Instalación
npx -y @recordist/gateway --doctor # check data dir, DB, token, app
Requiere Node 20+. better-sqlite3 incluye binarios precompilados para plataformas comunes.
Conectar un asistente
Claude Desktop
claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/,
Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"recordist": {
"command": "npx",
"args": ["-y", "@recordist/gateway"]
}
}
}
Claude Code
claude mcp add recordist -- npx -y @recordist/gateway
o, para el transporte HTTP mientras recordist-gateway --http esté en ejecución:
claude mcp add --transport http recordist http://127.0.0.1:47322/mcp
Cursor
.cursor/mcp.json (proyecto) o ~/.cursor/mcp.json (global):
{
"mcpServers": {
"recordist": {
"command": "npx",
"args": ["-y", "@recordist/gateway"]
}
}
}
Cualquier cliente Streamable HTTP
recordist-gateway --http # http://127.0.0.1:47322/mcp
Lo que obtiene el asistente
Herramientas
| Herramienta | Propósito |
|---|---|
list_meetings | Reuniones recientes; opcional q, from/to, limit/offset |
get_meeting | Una reunión con notas, elementos de acción y marcadores |
get_transcript | Transcripción como json | md | srt | vtt | txt |
search_meetings | Búsqueda de texto completo en transcripciones y notas (FTS5) |
get_action_items | Elementos de acción, filtrar por meeting_id / open_only |
regenerate_notes | Volver a ejecutar notas de IA (summary, action_items, decisions, …) — requiere la aplicación |
start_recording | Iniciar grabación — requiere la aplicación + el ajuste "permitir inicio remoto" |
stop_recording | Detener la grabación actual — requiere la aplicación |
add_marker | Marcar el momento actual — requiere la aplicación |
Recursos: recordist://meeting/{id} (JSON) y
recordist://meeting/{id}/transcript (Markdown). La lista de recursos muestra las
50 reuniones más recientes.
Indicaciones: summarize_meeting, draft_followup_email, weekly_review.
Agente A2A
recordist-gateway --a2a # http://127.0.0.1:47323/
Tarjeta de agente en http://127.0.0.1:47323/.well-known/agent.json; las habilidades reflejan
las herramientas anteriores. JSON-RPC 2.0 en / con tasks/send, tasks/get,
tasks/cancel y tasks/sendSubscribe (SSE).
Las tareas en lenguaje natural se enrutan a una habilidad con un pequeño enrutador de palabras clave; cada
tarea completada devuelve una parte de texto y una parte de datos con el resultado
estructurado. Para omitir el enrutador, envía una parte de datos {"skill": "...", "args": {...}}.
curl -s http://127.0.0.1:47323/ \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "tasks/send",
"params": {
"id": "task-1",
"message": { "role": "user", "parts": [
{ "type": "text", "text": "What are my open action items from this week?" }
]}
}
}' | jq .result.artifacts[0].parts
# explicit skill call
curl -s http://127.0.0.1:47323/ -H 'content-type: application/json' -d '{
"jsonrpc":"2.0","id":2,"method":"tasks/send",
"params":{"message":{"role":"user","parts":[
{"type":"data","data":{"skill":"get_transcript","args":{"meeting_id":"01J…","format":"srt"}}}
]}}}'
# streaming
curl -N http://127.0.0.1:47323/ -H 'content-type: application/json' -d '{
"jsonrpc":"2.0","id":3,"method":"tasks/sendSubscribe",
"params":{"message":{"role":"user","parts":[{"type":"text","text":"list my meetings from today"}]}}}'
CLI
recordist-gateway MCP over stdio (default)
recordist-gateway --http MCP over Streamable HTTP on 127.0.0.1:47322/mcp
recordist-gateway --a2a A2A agent on 127.0.0.1:47323
recordist-gateway --all stdio + --http + --a2a
recordist-gateway --doctor diagnostics: data dir, DB, token, app reachability
recordist-gateway --version
--http-port <n> --a2a-port <n> --host <addr>
Los registros van a stderr; stdout está reservado para el transporte MCP stdio.
Variables de entorno
| Variable | Predeterminado | Propósito |
|---|---|---|
RECORDIST_DATA_DIR | macOS ~/Library/Application Support/app.recordist.desktopWindows %APPDATA%\app.recordist.desktopLinux ~/.local/share/app.recordist.desktop | Dónde viven recordist.db y api_token |
RECORDIST_API_URL | http://127.0.0.1:47321 | URL base de la API local |
RECORDIST_API_TOKEN | contenido de <data>/api_token | Token Bearer para la API local |
Cómo funciona la selección de backend
En cada llamada, la puerta de enlace sondea GET /v1/health (tiempo de espera de 800 ms, resultado en caché
durante 5 s). Si la aplicación responde, la llamada va a la API. De lo contrario, las lecturas abren
<data>/recordist.db con readonly: true (el WAL de la aplicación nunca se escribe)
y las acciones devuelven Recordist app is not running. FTS5 (segments_fts) se usa
para la búsqueda cuando está presente, con un respaldo de LIKE en caso contrario.
Notas de seguridad
- La puerta de enlace solo se vincula a
127.0.0.1(--hostexiste para contenedores; no lo expongas en una interfaz de red). El transporte HTTP Streamable habilita la protección contra el reenlace de DNS y solo aceptaHost: 127.0.0.1/localhost. - El token de API se lee de
<data>/api_token, que la aplicación escribe con modo0600.--doctoradvierte si el archivo es legible por grupo o por todos. Nunca lo confirmes ni lo compartas; cualquiera con el token puede controlar la grabación en tu máquina. - La base de datos SQLite se abre en modo solo lectura; la puerta de enlace nunca la modifica.
- Sin telemetría, sin llamadas de red salientes.
Desarrollo
npm install
npm run build # tsc → dist/
npm test # vitest
node dist/cli.js --doctor
Uso como biblioteca
import { createRecordistData, createMcpServer } from "@recordist/gateway";
const data = createRecordistData(); // API with SQLite fallback
const server = createMcpServer(data); // McpServer — attach any transport
Acerca de
La puerta de enlace es el pequeño puente abierto entre tu asistente de IA y la copia de Recordist que se ejecuta en tu propia computadora. No contiene código de la aplicación ni claves; solo puede acceder a la API local en la máquina donde se ejecuta. Problemas y preguntas: support@recordist.app. Informes de seguridad: security@recordist.app (ver SECURITY.md). Hecho por Recordist, un pequeño estudio independiente en Ontario, Canadá.