Juntamos: organizar grupos
Crear amigo invisible, votaciones y repartos de gastos para un grupo
¿Debería usar esto?
Calidad y seguridad
Hallazgos (7)
- HIGH
- MEDIUMen crear_eleccion_fecha
- MEDIUMen crear_gastos
- MEDIUMen anadir_gasto
- INFOen crear_eleccion_fecha
- INFOen crear_gastos
- INFOen anadir_gasto
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"grupos": {
"url": "https://juntamos.es/grupos/mcp"
}
}
}Puntos de conexión remotos
https://juntamos.es/grupos/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (7)
🟢crear_amigo_invisible(participantes, exclusiones, presupuesto, fecha, titulo, ...)
Hace el sorteo del amigo invisible en el servidor y crea un enlace privado por participante, donde cada uno ve solo a quién le regala. Respeta exclusiones (parejas que no pueden tocarse). Úsala para: "organiza un amigo invisible con Ana, Luis, Marta y Pablo, presupuesto 20 €", "sorteo de amigo invisible para la oficina sin que Ana y Luis se toquen", "haz el amigo invisible de la familia para el 24 de diciembre". Devuelve: un enlace privado por participante (para repartir a cada uno el suyo), un enlace público para el grupo y el enlace de administración del organizador. El resultado completo no se devuelve nunca. Límites: de 3 a 100 participantes con nombres distintos; sin emails; se borra 90 días después de la fecha. Draws Secret Santa names on the server and creates one private link per participant, where each person only sees who they give to. Supports exclusions (couples who must not draw each other). Use it for: "organise a Secret Santa with Ann, Luke, Mary and Peter, budget 20 euros", "office Secret Santa where Ann and Luke cannot get each other". Returns: one private link per participant (send each person their own), a public page for the group and the organiser admin link. The full result is never returned. Limits: 3 to 100 participants with different names; no emails; deleted 90 days after the date.
Esquema de entrada
{
"type": "object",
"properties": {
"participantes": {
"minItems": 3,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"description": "Nombres o apodos, distintos entre sí / names or nicknames, all different. Ej.: [\"Ana\", \"Luis\", \"Marta\"]"
},
"exclusiones": {
"description": "Parejas que no pueden tocarse (en los dos sentidos) / pairs who must not draw each other. Ej.: [[\"Ana\", \"Luis\"]]",
"maxItems": 200,
"type": "array",
"items": {
"type": "array",
"items": [
{
"type": "string"
},
{
"type": "string"
}
],
"additionalItems": false,
"minItems": 2,
"maxItems": 2
}
},
"presupuesto": {
"description": "Presupuesto orientativo / budget. Ej.: \"20 €\"",
"type": "string",
"maxLength": 40
},
"fecha": {
"description": "Fecha del intercambio AAAA-MM-DD / exchange date YYYY-MM-DD",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"titulo": {
"description": "Título / title. Ej.: \"Amigo invisible de la oficina\"",
"type": "string",
"maxLength": 120
},
"idioma": {
"default": "es",
"description": "Idioma de las páginas del evento / language of the event pages: \"es\" or \"en\". Default \"es\".",
"type": "string",
"enum": [
"es",
"en"
]
}
},
"required": [
"participantes"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪crear_encuesta(pregunta, opciones, multiple, cierre, idioma)
Crea una encuesta o votación con opciones de texto para compartir con un grupo; voto único o múltiple, resultados en tiempo real y cierre opcional. Úsala para: "haz una votación para elegir restaurante: italiano, japonés o asador", "crea una encuesta de qué día hacemos la reunión", "votación con varias respuestas para elegir actividades del viaje". Devuelve: el enlace para votar (compartirlo en el grupo) y el enlace de administración (para cerrarla y ver resultados). Límites: de 2 a 30 opciones distintas; hasta 100 votantes; el cierre debe ser futuro. Creates a poll with text options to share with a group; single or multiple choice, live results and optional closing time. Use it for: "make a poll to choose a restaurant: Italian, Japanese or steakhouse", "create a multiple-choice vote for trip activities". Returns: the voting link (share it with the group) and the admin link (to close it and see results). Limits: 2 to 30 different options; up to 100 voters; closing time must be in the future.
Esquema de entrada
{
"type": "object",
"properties": {
"pregunta": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Pregunta / question. Ej.: \"¿Dónde cenamos?\""
},
"opciones": {
"minItems": 2,
"maxItems": 30,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": "Opciones / options. Ej.: [\"Italiano\", \"Japonés\"]"
},
"multiple": {
"default": false,
"description": "true si se pueden elegir varias / true to allow several choices",
"type": "boolean"
},
"cierre": {
"description": "Cierre automático ISO 8601 con zona / closing time ISO 8601 with offset. Ej.: \"2026-11-20T20:00:00+01:00\"",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"idioma": {
"default": "es",
"description": "Idioma de las páginas del evento / language of the event pages: \"es\" or \"en\". Default \"es\".",
"type": "string",
"enum": [
"es",
"en"
]
}
},
"required": [
"pregunta",
"opciones"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪crear_eleccion_fecha(titulo, fechas, idioma)
Crea una página para que un grupo elija fecha: cada persona marca en cada día propuesto si puede, si hace falta o no, y se destaca la mejor fecha. Úsala para: "ayúdame a elegir fecha para la cena de Navidad entre el 12, 13, 19 y 20 de diciembre", "qué fin de semana de noviembre podemos quedar todos", "busca fecha para la reunión de antiguos alumnos". Devuelve: el enlace para que cada uno marque su disponibilidad y el enlace de administración. Límites: de 2 a 31 días, en formato AAAA-MM-DD y no pasados; hasta 100 personas. Creates a page for a group to pick a date: everyone marks yes, if needed or no on each suggested day and the best date is highlighted. Use it for: "help me pick a date for the Christmas dinner: Dec 12, 13, 19 or 20", "which November weekend can we all meet". Returns: the link for everyone to mark availability and the admin link. Limits: 2 to 31 days, YYYY-MM-DD, not in the past; up to 100 people.
Esquema de entrada
{
"type": "object",
"properties": {
"titulo": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Título / title. Ej.: \"Cena de Navidad\""
},
"fechas": {
"minItems": 2,
"maxItems": 31,
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"description": "Días propuestos AAAA-MM-DD / suggested days YYYY-MM-DD"
},
"idioma": {
"default": "es",
"description": "Idioma de las páginas del evento / language of the event pages: \"es\" or \"en\". Default \"es\".",
"type": "string",
"enum": [
"es",
"en"
]
}
},
"required": [
"titulo",
"fechas"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡crear_lista_quien_trae(titulo, elementos, fecha, idioma)
Crea una lista de cosas que hacen falta (bebidas, postre, carbón…) para que cada persona del grupo se apunte a lo que va a traer, sin repetir. Úsala para: "haz una lista de quién trae qué para la barbacoa del sábado", "organiza qué lleva cada uno a la cena de Nochevieja", "lista para el viaje: tienda, hornillo, nevera". Devuelve: el enlace para que cada uno se apunte y el enlace de administración. Límites: de 1 a 100 cosas; cualquiera del grupo puede añadir más. Creates a list of things needed (drinks, dessert, charcoal…) so everyone in the group signs up for what they will bring, without duplicates. Use it for: "make a who-brings-what list for Saturday's barbecue", "organise what everyone brings to the New Year's dinner". Returns: the sign-up link and the admin link. Limits: 1 to 100 items; anyone in the group can add more.
Esquema de entrada
{
"type": "object",
"properties": {
"titulo": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Título / title. Ej.: \"Barbacoa del sábado\""
},
"elementos": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": "Lo que hace falta / items needed. Ej.: [\"Bebidas\", \"Postre\", \"Pan\"]"
},
"fecha": {
"description": "Fecha del evento AAAA-MM-DD / event date YYYY-MM-DD",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"idioma": {
"default": "es",
"description": "Idioma de las páginas del evento / language of the event pages: \"es\" or \"en\". Default \"es\".",
"type": "string",
"enum": [
"es",
"en"
]
}
},
"required": [
"titulo",
"elementos"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡crear_gastos(titulo, participantes, idioma)
Crea un grupo de gastos compartidos (viaje, piso, cena) donde se apunta quién pagó qué y se calcula quién debe a quién con el mínimo de pagos. Úsala para: "crea un grupo de gastos para el viaje a Asturias con Ana, Luis y Marta", "quiero repartir los gastos de la casa rural entre 6", "apunta gastos compartidos del piso". Devuelve: el enlace del grupo (todos pueden apuntar gastos) y el enlace de administración, que sirve para anadir_gasto y ver_resultados. Límites: de 2 a 100 personas con nombres distintos; importes en euros. Creates a shared expenses group (trip, flat, dinner) to record who paid what and work out who owes whom with the fewest payments. Use it for: "create an expense group for the trip with Ann, Luke and Mary", "split the holiday cottage costs between 6 people". Returns: the group link (everyone can add expenses) and the admin link, used by anadir_gasto and ver_resultados. Limits: 2 to 100 people with different names; amounts in euros.
Esquema de entrada
{
"type": "object",
"properties": {
"titulo": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Título / title. Ej.: \"Viaje a Asturias\""
},
"participantes": {
"minItems": 2,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"description": "Nombres, distintos entre sí / names, all different"
},
"idioma": {
"default": "es",
"description": "Idioma de las páginas del evento / language of the event pages: \"es\" or \"en\". Default \"es\".",
"type": "string",
"enum": [
"es",
"en"
]
}
},
"required": [
"titulo",
"participantes"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪anadir_gasto(id_admin, quien_pago, importe, entre_quienes, concepto)
Añade un gasto a un grupo de gastos compartidos creado con crear_gastos (quién pagó, cuánto y entre quiénes se reparte) y devuelve quién debe a quién. Úsala para: "Ana pagó 60 € de la cena entre todos", "añade que Luis pagó 24,50 de gasolina entre Luis y Marta". Devuelve: los pagos para quedar en paz y el total, con el enlace del grupo. Límites: necesita el enlace o token de administración (id_admin); los nombres deben estar en el grupo; si entre_quienes va vacío, se reparte entre todos. Adds an expense to a shared expenses group created with crear_gastos (who paid, how much and who shares it) and returns who owes whom. Use it for: "Ann paid 60 euros for dinner for everyone", "add that Luke paid 24.50 for fuel shared by Luke and Mary". Returns: the payments to settle up and the total, with the group link. Limits: needs the admin link or token (id_admin); names must be in the group; empty entre_quienes means everyone.
Esquema de entrada
{
"type": "object",
"properties": {
"id_admin": {
"type": "string",
"minLength": 10,
"maxLength": 200,
"description": "Enlace o token de administración devuelto por crear_gastos / admin link or token returned by crear_gastos"
},
"quien_pago": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"description": "Quién pagó / who paid. Ej.: \"Ana\""
},
"importe": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "string",
"maxLength": 20
}
],
"description": "Importe en euros / amount in euros. Ej.: 24.5 o \"24,50\""
},
"entre_quienes": {
"description": "Entre quiénes se reparte; vacío = todos / who shares it; empty = everyone",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 40
}
},
"concepto": {
"description": "Concepto / what for. Ej.: \"Cena\"",
"type": "string",
"maxLength": 80
}
},
"required": [
"id_admin",
"quien_pago",
"importe"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢ver_resultados(id_admin)
Muestra el estado de un evento de Juntamos: votos de la encuesta, mejor fecha, quién trae qué, quién debe a quién o cuántos han abierto su sobre del amigo invisible. Úsala para: "¿cómo va la votación del restaurante?", "¿quién debe a quién en el viaje?", "¿cuántos han abierto ya su amigo invisible?". Devuelve: un resumen de los resultados y el enlace a la página del evento. Límites: necesita el enlace o token de administración (id_admin); nunca revela quién le regala a quién en el amigo invisible. Shows the status of a Juntamos event: poll votes, best date, who brings what, who owes whom or how many opened their Secret Santa envelope. Use it for: "how is the restaurant poll going?", "who owes whom from the trip?". Returns: a summary of the results and the event link. Limits: needs the admin link or token (id_admin); never reveals who got whom in Secret Santa.
Esquema de entrada
{
"type": "object",
"properties": {
"id_admin": {
"type": "string",
"minLength": 10,
"maxLength": 200,
"description": "Enlace o token de administración / admin link or token"
}
},
"required": [
"id_admin"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia