Skip to main content
Glama
tecnomanu

Nerdearla Agenda MCP Server

by tecnomanu

Nerdearla Agenda - MCP Server

MCP Version Node TypeScript License Nerdearla

Un servidor MCP (Model Context Protocol) que proporciona acceso a la agenda de Nerdearla en tiempo real, siguiendo la arquitectura MCP oficial.

🎪 Sobre Este Proyecto

Este MCP Server fue desarrollado como demostración práctica para la charla "Automatizá con flow: IA, n8n y MCP sin morir en el intento" presentada por Manuel Bruña y Carlos Pereyra en Nerdearla 2025.

Banner

La charla muestra cómo integrar:

  • 🤖 Inteligencia Artificial

  • 🔗 n8n para automatización de workflows

  • MCP (Model Context Protocol) para conectar IA con sistemas externos

¿Quieres ver la charla? 👉 Ver en Nerdearla

💡 Tip: Este proyecto es un ejemplo real de cómo implementar un MCP Server profesional que puede integrarse con Claude, n8n y otros sistemas de IA.

Related MCP server: Nerdearla MCP Server

🏗️ Arquitectura MCP

Este proyecto implementa correctamente la arquitectura MCP con:

  • Data Layer: Protocolo JSON-RPC 2.0 para comunicación cliente-servidor

  • Transport Layer: Soporte para STDIO (local) y HTTP/SSE (remoto)

  • MCP Primitives: Tools para ejecutar funciones específicas de la agenda

🚀 Funcionalidades (MCP Tools)

Herramientas Disponibles

  1. get_upcoming_talks - Obtiene las próximas charlas basadas en GMT-3. Incluye URLs cuando están disponibles.

  2. get_past_talks - Obtiene charlas que ya pasaron. Incluye URLs cuando están disponibles.

  3. get_topics_by_tags - Lista temas disponibles agrupados por tags

  4. get_next_talk - Obtiene la próxima charla más cercana. Incluye URL cuando está disponible.

  5. get_missed_talks - Obtiene charlas que empezaron pero podrías alcanzar. Incluye URLs cuando están disponibles.

  6. get_best_talk_recommendation - Proporciona una recomendación experta sobre la charla más destacada del evento 🎯

  7. get_cache_info - Información del sistema de cache inteligente (24 horas de duración)

🎪 Easter Egg

¿Buscas la mejor charla de Nerdearla? Prueba la herramienta get_best_talk_recommendation y descubre nuestra recomendación especial... 😉

⚡ Sistema de Cache Inteligente

El MCP Server implementa un sistema de cache avanzado para máximo rendimiento:

  • 🚀 Inicialización Automática: Al arrancar el servidor, hace scraping completo automáticamente

  • ⏰ Cache de 24 Horas: Los datos se mantienen válidos por 24 horas

  • ⚡ Respuestas Instantáneas: Todas las consultas responden en <100ms después del cache inicial

  • 🔄 Renovación Automática: Después de 24h, se actualiza automáticamente en la siguiente consulta

  • 🛡️ Fallback Inteligente: Si falla el scraping, usa cache anterior disponible

# Al arrancar el servidor:
[agenda-service] 🚀 Initializing MCP Server - Starting initial cache...
[agenda-service] ✅ Initial cache ready! Scraped 45 talks in 8500ms
[agenda-service] ⚡ MCP Server ready - All queries will be INSTANT for 24 hours!

# En consultas posteriores:
[agenda-service] ⚡ Using cached data (15min old, 23h left) - INSTANT response!

📦 Instalación

# Instalar pnpm si no lo tienes
npm install -g pnpm

# Instalar dependencias
pnpm install

🎯 Uso

Transport STDIO (Claude Desktop)

# Servidor MCP para Claude Desktop
node src/index.js

# O con npm script
pnpm start

Transport HTTP/SSE (Conexiones Remotas)

# Servidor MCP con HTTP transport
MCP_TRANSPORT=http node src/index.js

# Con puerto específico
MCP_TRANSPORT=http PORT=8000 node src/index.js

# O con npm script
pnpm start:http

# Con variables de entorno
MCP_TRANSPORT=http MCP_PORT=8000 pnpm start

⚙️ Configuración Claude Desktop

Opción 1: STDIO Transport (Recomendado)

{
	"mcpServers": {
		"nerdearla-agenda-mcp": {
			"command": "node",
			"args": ["/ruta/absoluta/al/proyecto/src/index.js"]
		}
	}
}

Opción 2: HTTP Transport (Remoto)

{
	"mcpServers": {
		"nerdearla-agenda-mcp": {
			"command": "node",
			"args": ["/ruta/absoluta/al/proyecto/src/index.js", "http", "3000"]
		}
	}
}

Ubicación del archivo:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

🧪 Testing

Con MCP Inspector

# Inspector MCP (STDIO transport)
DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector node src/index.js

# Luego abrir: http://localhost:6274

Testing Manual

# Test STDIO transport
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node src/index.js

# Test HTTP transport - Health check
curl http://localhost:3000/health

# Test HTTP transport - Server info
curl http://localhost:3000/

# Test MCP endpoint (Streamable HTTP)
curl http://localhost:3000/mcp

🔍 MCP Inspector

Para probar con el MCP Inspector oficial:

# Opción 1: Script automático (Recomendado)
pnpm run inspector

# Opción 2: Manual
npx @modelcontextprotocol/inspector npx nerdearla-agenda

# Opción 3: Con servidor HTTP
# 1. Iniciar el servidor
pnpm start:http

# 2. En la interfaz del inspector:
#    Transport Type: Streamable HTTP
#    URL: http://localhost:3000/mcp

🏗️ Arquitectura del Proyecto

src/
├── index.js          # MCP Server principal con transport layers
├── agenda-service.js # Lógica de negocio (herramientas)
├── scraper.js        # Web scraping con Puppeteer
├── time-utils.js     # Utilidades de tiempo GMT-3
└── mcp-tools.js      # Definición de MCP tools

🔧 Características Técnicas

  • MCP Compliant: Sigue la arquitectura oficial MCP

  • Múltiples Transports: STDIO (local) y HTTP/SSE (remoto) con patrón profesional

  • Tool Discovery: Implementa tools/list para descubrimiento dinámico

  • Tool Execution: Implementa tools/call para ejecución de herramientas

  • HTTP Features: Health checks, CORS, autorización Bearer token opcional

  • Session Management: Manejo de sesiones SSE con cleanup automático

  • Scraping Inteligente: Puppeteer para contenido dinámico de React SPA

  • Cache Inteligente: Inicialización automática al arrancar + cache de 24 horas para respuestas instantáneas

  • Timezone GMT-3: Manejo correcto de hora argentina

  • Variables de Entorno: Configuración flexible con MCP_TRANSPORT, MCP_PORT, etc.

📊 Ejemplo de Tool Execution

{
	"jsonrpc": "2.0",
	"id": 1,
	"method": "tools/call",
	"params": {
		"name": "get_upcoming_talks",
		"arguments": {
			"limit": 3
		}
	}
}

Respuesta:

{
	"jsonrpc": "2.0",
	"id": 1,
	"result": {
		"content": [
			{
				"type": "text",
				"text": "{\n  \"currentTime\": \"2025-09-23T15:30:00-03:00\",\n  \"upcomingTalks\": [...],\n  \"total\": 3\n}"
			}
		]
	}
}

🚀 Build y Distribución

Node.js

# Crear paquete
pnpm build

# Instalar globalmente
pnpm install:global

# Usar globalmente
npx nerdearla-agenda-mcp
npx nerdearla-agenda-mcp http

📦 Releases

Versión Actual: v1.2.0 - Sistema de Cache Inteligente

  • Cache automático al arrancar: Respuestas instantáneas desde el primer momento

  • 🕒 Cache de 24 horas: Máximo rendimiento con renovación automática

  • 🐳 Docker optimizado: Migración a pnpm y configuración mejorada

  • 🛠️ Nueva herramienta: get_cache_info para monitoreo del sistema

  • 🔗 URLs incluidas: Enlaces a charlas cuando están disponibles

Ver CHANGELOG.md para historial completo de versiones.

🐳 Docker

# Ejecutar con Docker Compose (Recomendado)
docker-compose up --build

# Ejecutar en background
docker-compose up -d --build

# Solo Docker
docker build -t nerdearla-agenda-mcp .
docker run -p 3000:3000 nerdearla-agenda-mcp

# Con autenticación
docker run -p 3000:3000 \
  -e MCP_BEARER=mi-token-secreto \
  nerdearla-agenda-mcp

Ver DOCKER_GUIDE.md para configuración avanzada.

🆚 Transport Layers

Transport

Puerto

Uso

Conexión

STDIO

-

Claude Desktop

Local

HTTP/SSE

3000

Conexiones remotas

Red

📚 Documentación MCP

👥 Autores

Speaker

GitHub

LinkedIn

Manuel Bruña

@manubruña

LinkedIn

Carlos Pereyra

@carlospereyra

LinkedIn

🎯 Sobre la Charla

"Automatizá con flow: IA, n8n y MCP sin morir en el intento"

En esta charla demostramos cómo crear workflows inteligentes que conectan:

  • 🤖 Claude/IA para procesamiento inteligente

  • 🔗 n8n para orquestación de workflows

  • MCP para integración de sistemas externos

  • 🌐 APIs REST para conectividad universal

🛠️ Stack Tecnológico Demostrado

  • MCP SDK 1.x - Protocolo de comunicación con IA

  • Node.js + TypeScript - Runtime y tipado

  • Puppeteer - Web scraping dinámico

  • Express - HTTP server

  • n8n - Automatización visual

  • Claude Desktop - Cliente MCP nativo

🌟 ¿Te Gustó el Proyecto?

Si este MCP Server te resultó útil:

  • Dale una estrella al repositorio

  • 🐛 Reporta bugs si encuentras alguno

  • 💡 Sugiere mejoras via Issues

  • 🔄 Comparte con otros desarrolladores

📄 Licencia

MIT License - Siéntete libre de usar este código en tus propios proyectos.


Desarrollado con ❤️ para la comunidad de Nerdearla 2025

Available Tools

7 tools
get_best_talk_recommendationB

Proporciona una recomendación experta sobre cuál es la charla más destacada y valiosa del evento. Analiza contenido, speakers y relevancia para sugerir la experiencia más enriquecedora disponible.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions the tool 'analyzes content, speakers and relevance,' it doesn't describe how this analysis works, what data sources are used, whether recommendations are personalized, or what format the output takes. For a recommendation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two sentences that efficiently convey the tool's purpose and methodology. The first sentence states the core function, and the second explains the analysis approach. There's no wasted language or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a recommendation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what constitutes 'expert' analysis, how recommendations are generated, what format the output takes, or whether there are any limitations or constraints. The description leaves too many questions unanswered for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description appropriately doesn't discuss parameters since none exist. It focuses instead on what the tool does, which is correct for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to provide expert recommendations about the most outstanding and valuable talk at an event. It specifies the analysis criteria (content, speakers, relevance) and the goal (suggesting the most enriching experience). However, it doesn't explicitly differentiate from sibling tools like 'get_topics_by_tags' or 'get_next_talk' which might also provide talk suggestions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this recommendation tool is appropriate compared to 'get_next_talk' (which suggests the next chronological talk) or 'get_topics_by_tags' (which filters by topics). There's no indication of prerequisites, timing considerations, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cache_infoB

Obtiene información sobre el estado del cache de datos de la agenda. Muestra cuándo fue la última actualización, cuánto tiempo queda válido y estadísticas del cache.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the tool's behavior by stating it returns cache status information (last update, validity time, statistics), which implies it's a read-only operation. However, it doesn't disclose potential side effects, error conditions, authentication needs, or rate limits. The description adds basic context but lacks depth for behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized (two sentences) and front-loaded with the core purpose. Every sentence adds value: the first states what it does, and the second elaborates on the specific information returned. It could be slightly more structured but is efficient with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (simple read operation with 0 parameters) and lack of annotations/output schema, the description is minimally complete. It explains what information is returned but doesn't cover format, error handling, or integration context. For a tool with no structured metadata, it meets basic needs but leaves gaps in understanding how to interpret the results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%. The description doesn't need to explain parameters, and it correctly doesn't mention any. Baseline for 0 parameters is 4, as there's no parameter information to add beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: 'Obtiene información sobre el estado del cache de datos de la agenda' (Gets information about the status of the agenda data cache). It specifies the verb ('obtiene información') and resource ('cache de datos de la agenda'), and lists specific details provided (last update time, validity time remaining, cache statistics). However, it doesn't explicitly differentiate from sibling tools, which are all about talks/topics, not cache management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions. Given that all sibling tools are focused on talk/topic data retrieval, this tool's purpose (cache status) is distinct, but the description doesn't help an agent understand when cache information is needed versus actual data queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_missed_talksB

Obtiene las charlas que te perdiste (que empezaron pero no terminaron). Incluye URLs cuando están disponibles.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that URLs are included when available, which adds some context about output behavior. However, it lacks details on permissions, rate limits, data freshness, or what constitutes a 'missed talk' beyond the basic definition, leaving significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that efficiently state the purpose and a key feature (URL inclusion). It's front-loaded with the core function and avoids unnecessary details. However, it could be slightly more structured by explicitly separating purpose from behavioral notes, but it's still very efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and 0 parameters, the description is minimal. It covers the basic purpose and hints at output behavior (URLs), but for a tool that likely returns a list of talks, it lacks details on format, sorting, pagination, or error cases. This leaves the agent with incomplete context for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description adds no parameter information, which is appropriate here. Baseline for 0 parameters is 4, as no compensation is needed, and the description doesn't detract by implying parameters that don't exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Obtiene las charlas que te perdiste (que empezaron pero no terminaron)' specifies retrieving missed talks that started but didn't finish. It distinguishes from siblings like get_past_talks or get_upcoming_talks by focusing on incomplete talks. However, it doesn't explicitly differentiate from all siblings, keeping it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like get_past_talks or get_next_talk. It mentions including URLs when available, but this is a feature detail, not usage context. There are no explicit when/when-not statements or named alternatives, leaving the agent with minimal direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_next_talkB

Obtiene la próxima charla más cercana. Incluye URL cuando está disponible.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that URLs are included when available, which adds some context about output behavior. However, it doesn't address other important aspects like whether this is a read-only operation, if it requires authentication, potential rate limits, or how it determines 'closest' (e.g., by time, relevance). For a tool with no annotations, this is insufficient transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded: a single sentence that directly states the tool's core function, followed by a brief additional detail about URLs. Every word earns its place with no redundancy or unnecessary elaboration. It's appropriately sized for a simple, parameter-less tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is somewhat complete but has gaps. It explains what the tool returns (the next closest talk with URLs when available), which is adequate for basic understanding. However, without annotations or output schema, it doesn't fully cover behavioral aspects like safety, permissions, or detailed output structure, leaving room for improvement in contextual coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description doesn't need to explain any parameters, and it doesn't add any parameter information beyond the schema. With no parameters, the baseline is 4, as there's nothing to compensate for and no opportunity to add value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Obtiene la próxima charla más cercana' (Gets the next closest talk). It specifies a verb ('obtiene') and resource ('charla'), and includes an additional detail about including URLs when available. However, it doesn't explicitly differentiate from sibling tools like 'get_upcoming_talks' or 'get_best_talk_recommendation', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_upcoming_talks' and 'get_best_talk_recommendation' available, there's no indication of when this specific tool (getting the single next closest talk) is preferred over getting multiple upcoming talks or recommendations. The description only states what it does, not when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_past_talksB

Obtiene las charlas que ya pasaron. Incluye URLs cuando están disponibles.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLímite de charlas a retornar (default: 5)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions that URLs are included when available, which adds some behavioral context about the response format. However, it doesn't disclose other important traits like whether this is a read-only operation, if there are rate limits, authentication needs, or what happens when no past talks exist. For a tool with no annotations, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences that directly state the purpose and an additional feature (URL inclusion). It is front-loaded with the core function and wastes no words, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 optional parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and a response detail (URLs), but lacks information on usage context, behavioral traits, or output structure. Without annotations or output schema, more completeness would be beneficial but not critical for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 100% description coverage, providing details on 'limit' including type, default value, and purpose. The description adds no parameter information beyond what the schema already documents. According to the rules, with high schema coverage (>80%), the baseline is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Obtiene las charlas que ya pasaron' (Gets past talks) with the specific resource 'charlas' (talks). It distinguishes from siblings like 'get_upcoming_talks' by specifying past talks, but doesn't explicitly differentiate from 'get_missed_talks' which might overlap. The purpose is clear but sibling differentiation is incomplete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use it over 'get_missed_talks' or 'get_upcoming_talks', nor does it specify prerequisites or exclusions. Usage is implied by the purpose but lacks explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_topics_by_tagsB

Lista los temas disponibles agrupados por tags

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists topics grouped by tags, but doesn't describe traits like whether it's read-only, requires authentication, has rate limits, or what the return format looks like. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Spanish that directly states the tool's purpose. It's appropriately sized and front-loaded with the core action. However, it could be slightly more structured by including usage context, but it earns its place without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (listing with grouping), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'topics' or 'tags' refer to, how results are formatted, or any behavioral traits. For a tool with zero structured coverage, this minimal description is inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. Baseline for 0 parameters is 4, as it avoids unnecessary complexity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Lista los temas disponibles agrupados por tags' (Lists available topics grouped by tags). It specifies the verb (list), resource (topics), and grouping method (by tags). However, it doesn't differentiate from sibling tools like 'get_past_talks' or 'get_upcoming_talks' which also list talks/topics, so it misses full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention context, prerequisites, or exclusions, and with siblings like 'get_best_talk_recommendation' or 'get_missed_talks' that might overlap in listing topics, there's no explicit or implied usage differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_upcoming_talksB

Obtiene las próximas charlas basadas en la hora actual GMT-3. Incluye URLs cuando están disponibles.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLímite de charlas a retornar (default: 5)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that results include URLs when available, which adds some context about output behavior. However, it doesn't address important aspects like whether this is a read-only operation, potential rate limits, authentication requirements, or what happens when no upcoming talks exist. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - just two sentences that directly state the tool's purpose and a key output characteristic. Every word earns its place, with no redundant information or unnecessary elaboration. The information is front-loaded with the core functionality stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with one optional parameter and no output schema, the description provides adequate basic information about what the tool does. However, it lacks important context about the return format (beyond mentioning URLs), error conditions, or how results are ordered. The absence of annotations means the description should do more to compensate, but it doesn't fully address these gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'limit' fully documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no parameter information in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Obtiene las próximas charlas' (Gets upcoming talks) with specific context 'basadas en la hora actual GMT-3' (based on current GMT-3 time). It distinguishes itself from siblings like get_past_talks and get_missed_talks by focusing on future events. However, it doesn't explicitly differentiate from get_next_talk which might serve a similar purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose get_upcoming_talks over get_next_talk or get_best_talk_recommendation, nor does it specify any prerequisites or exclusions. The agent receives no usage context beyond the basic purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updates
    • First observedget_best_talk_recommendation
    • First observedget_cache_info
    • First observedget_missed_talks
    • First observedget_next_talk
    • First observedget_past_talks
    • First observedget_topics_by_tags
    • First observedget_upcoming_talks

TDQS

A3.6/5.0

Scored across 7 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no overlap: get_best_talk_recommendation provides expert recommendations, get_cache_info handles cache status, get_missed_talks retrieves missed talks, get_next_talk gets the next upcoming talk, get_past_talks retrieves past talks, get_topics_by_tags lists topics by tags, and get_upcoming_talks lists upcoming talks. The descriptions clearly differentiate each tool's function, eliminating any ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case, starting with 'get_' or 'get_' followed by a descriptive noun phrase (e.g., get_best_talk_recommendation, get_upcoming_talks). This uniformity makes the tool set predictable and easy to understand, with no deviations in naming conventions.

Tool Count5/5

With 7 tools, the server is well-scoped for an agenda management system, covering key operations like retrieving past, upcoming, missed, and next talks, along with recommendations, cache info, and topic listings. Each tool earns its place without being excessive or insufficient for the domain.

Completeness4/5

The tool set provides comprehensive coverage for querying and retrieving agenda data, including temporal views (past, upcoming, next, missed), recommendations, cache status, and topics. A minor gap exists in the lack of update or management tools (e.g., adding or modifying talks), but for a read-only agenda server, the surface is largely complete and supports common agent workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers