Splid MCP

Un servidor del Protocolo de Contexto del Modelo (MCP) que expone Splid (splid.app) a través de herramientas, impulsado por el cliente splid-js de ingeniería inversa.

Documentación

Servidor MCP de Splid

Un servidor de Protocolo de Contexto de Modelo (MCP) que expone Splid (splid.app) a través de herramientas, impulsado por el cliente splid-js de ingeniería inversa.

  • Lenguaje/Entorno de ejecución: Node.js (ESM) + TypeScript
  • Transporte: HTTP transmisible (y stdio para inspector local)
  • Licencia: MIT

Inicio rápido

  1. Instalación
npm install
  1. Configurar el entorno

Crea un .env en la raíz del proyecto:

CODE=YOUR_SPLID_INVITE_CODE
PORT=8000
  1. Compilar y ejecutar
npm run build
npm run dev
  1. Inspeccionar localmente
npm run inspect

Luego conéctate a http://localhost:8000/mcp usando "HTTP transmisible".

Herramientas

Todas las herramientas admiten un selector de grupo opcional para anular el valor predeterminado de CODE:

  • groupId?: string
  • groupCode?: string (código de invitación)
  • groupName?: string (reservado; aún no compatible)

Si no se proporciona ninguno, el servidor usa el grupo predeterminado de CODE.

health

  • Propósito: verificación de conectividad
  • Salida: { ok: true }

whoami

  • Propósito: mostrar el grupo seleccionado actualmente y sus miembros
  • Entrada: ninguna
  • Salida: JSON con información del grupo y miembros

createExpense

  • Propósito: crear una nueva entrada de gasto
  • Entrada:
    • title: string
    • amount: number > 0
    • currencyCode?: string (se establece al valor predeterminado del grupo si se omite)
    • payers: { userId?: string; name?: string; amount: number > 0 }[] (al menos 1)
    • profiteers: { userId?: string; name?: string; share: number in (0,1] }[] (al menos 1)
    • Campos opcionales del selector de grupo
  • Reglas:
    • Los nombres no distinguen entre mayúsculas y minúsculas y se resuelven al GlobalId del miembro; los nombres desconocidos devuelven un error claro.
    • La suma de todos los valores de share debe ser igual a 1 (±1e‑6).
  • Ejemplo (nombres):
{
  "title": "Dinner",
  "amount": 12.5,
  "payers": [{ "name": "Alice", "amount": 12.5 }],
  "profiteers": [{ "name": "Bob", "share": 0.6 }, { "name": "Alice", "share": 0.4 }]
}
  • Ejemplo (userIds):
{
  "title": "Dinner",
  "amount": 12.5,
  "payers": [{ "userId": "<GlobalId>", "amount": 12.5 }],
  "profiteers": [{ "userId": "<GlobalId>", "share": 1 }]
}

listEntries

  • Propósito: listar entradas recientes en un grupo
  • Entrada:
    • limit?: number (1..100, predeterminado 20)
    • Campos opcionales del selector de grupo
  • Salida: matriz de entradas

getGroupSummary

  • Propósito: mostrar saldos/resumen de un grupo
  • Entrada:
    • Campos opcionales del selector de grupo
  • Salida: objeto de resumen (saldos calculados mediante Splid)

HTTP transmisible

  • URL: http://localhost:8000/mcp
  • No se requieren encabezados de autenticación; usa MCP Inspector para probar.

Solución de problemas

  • "Solicitud incorrecta: servidor no inicializado": actualiza y vuelve a conectar; el primer POST debe ser initialize.
  • Error 400 con errores de participación: asegúrate de que las participaciones estén en (0,1] y sumen 1.
  • Nombre desconocido: verifica los nombres exactos de los miembros en la salida de whoami.

Configuración

  • Variables de entorno:
    • CODE: código de invitación/unión de Splid para el grupo predeterminado
    • PORT (opcional): predeterminado 8000

Agradecimientos

Licencia

MIT