Skip to main content
Glama
Sandypaluk

K4G Application Triage MCP Server

by Sandypaluk

Accelerator Application Triage MCP Server (Demo)

Un pequeño servidor MCP que convierte el triaje de solicitudes de startups/fundadores en algo que cualquier cliente de IA compatible con MCP (como Claude Desktop) pueda consultar en lenguaje natural, en lugar de tener que revisar manualmente una hoja de cálculo o una herramienta de formularios.

Originalmente se construyó pensando en una aceleradora del ámbito de los sistemas alimentarios y la innovación basada en plantas — el tipo de programa que gestiona un pipeline estructurado de solicitudes, puntuación y revisión por mentores en cada ciclo. Las herramientas y los datos de ejemplo reflejan ese contexto, pero el patrón subyacente es genérico: cualquier aceleradora, incubadora o programa de subvenciones con un pipeline de solicitudes podría apuntar este mismo servidor a su propio sistema de registro.

Se trata de un build de portafolio / demo, así que los datos de ejemplo aquí responden a preguntas específicas de ese contexto de aceleradora de sistemas alimentarios (etiquetas de sector como "alt-protein" y "fermentation", países y fundadores del sector alimentario). Sustituye src/data.ts por un conjunto de datos diferente y las mismas cuatro herramientas responderían a las preguntas equivalentes para una aceleradora fintech, un programa de tecnología climática o cualquier otro dominio — lo que cambia son los datos, no la arquitectura. En un despliegue real, src/data.ts se sustituiría por llamadas al sistema de registro que la organización use realmente (Airtable, Notion, la API de una herramienta de formularios, etc.) — las cuatro herramientas siguientes no necesitarían cambiar en absoluto. Ese es el objetivo de MCP: al cliente de IA no le importa lo que haya detrás de la herramienta.

Qué puede responder

  • "¿Qué solicitudes de alt-protein obtuvieron una puntuación de 7+ en impacto?"

  • "¿Qué sigue en la cola de revisión de David?"

  • "¿Qué no ha sido recogido todavía por ningún revisor?"

  • "Saca el expediente completo de K4G-2026-058, incluidas las notas."

  • "Marca Root & Policy Lab para una discusión completa del panel — el equipo necesita diligencia sobre los cofundadores."

Related MCP server: TeamDesk MCP Server

Herramientas

Herramienta

Qué hace

¿Modifica datos?

k4g_search_applications

Filtrar por texto, sector, etapa o puntuación mínima de impacto

No

k4g_get_application

Detalle completo + notas del revisor para una solicitud

No

k4g_list_pending_review

Todo lo que aún necesita una decisión, opcionalmente por revisor

No

k4g_flag_for_review

Marca una solicitud para discusión del panel y registra el motivo

Sí

Configuración

npm install
npm run build

Ejecutarlo de forma independiente

npm start

Se quedará esperando mensajes MCP en stdin/stdout — eso es normal, está diseñado para ser lanzado por un cliente MCP, no para ejecutarse de forma interactiva.

Conexión con Claude Desktop

  1. Abre el archivo de configuración de Claude Desktop:

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

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

  2. Añade este servidor (sustituye la ruta por donde hayas colocado esta carpeta):

{
  "mcpServers": {
    "k4g-applications": {
      "command": "node",
      "args": ["/absolute/path/to/k4g-applications-mcp-server/dist/index.js"]
    }
  }
}
  1. Reinicia Claude Desktop. Deberías ver "k4g-applications" listado bajo el icono de herramientas/conectores, y podrás hacer preguntas como las anteriores directamente en el chat.

Ampliarlo hacia un despliegue real

  • Sustituye src/data.ts por un cliente de API real (Airtable/Notion/etc.) — las firmas de las herramientas en src/index.ts permanecen iguales.

  • Añade herramientas de escritura con cuidado: k4g_flag_for_review es deliberadamente la única herramienta que cambia datos, y solo marca — nunca rechaza ni acepta una solicitud directamente, así que un humano sigue tomando la decisión final.

  • Para una versión alojada/compartida (varios revisores, no solo uso local), sustituye el transporte stdio por Streamable HTTP — consulta la documentación de MCP en https://modelcontextprotocol.io.

Available Tools

4 tools
k4g_flag_for_reviewFlag Application for Panel DiscussionA

Mark an application as 'flagged_for_discussion' and attach a reviewer note explaining why.

This changes the application's review_status - it is not read-only. Use it when an application needs a second opinion or a full-panel discussion rather than a solo decision.

Args:

  • id (string): application ID

  • reviewer (string): who is flagging it

  • note (string): reason for flagging

Returns the updated application record as JSON.

Error Handling:

  • Returns "Error: no application found with ID ''" if the ID doesn't exist.

NameRequiredDescriptionDefault
idYesApplication ID to flag, e.g. 'K4G-2026-058'.
noteYesWhy this application should get panel discussion or a second look.
reviewerYesName of the person adding this flag/note.

TDQS

A4.3/5.0
Behavior4/5

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

The description explicitly notes that it changes the application's review_status and is not read-only, which aligns with annotations (readOnlyHint=false, destructiveHint=false). It also discloses error handling behavior for a non-existent ID. While annotations already indicate it's a write operation (readOnlyHint=false), the description adds value by specifying the exact field change and the specific return value (updated application record as JSON).

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 well-structured and concise. It front-loads the primary purpose, then explains the behavioral change (review_status), gives usage guidance, lists parameters, states the return value, and includes error handling. Each sentence earns its place, and the structure (description → behavior → usage → args → return → errors) is logical and skimmable. No fluff or redundancy.

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

Completeness5/5

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

Given the moderate complexity (three simple string parameters, no output schema, but a clear behavioral change), the description is complete. It covers purpose, usage context, the state-changing effect, return format, and error case. The sibling tools are search/list/read operations, so this flag tool stands out clearly. No significant gaps remain for an agent to understand what this tool does and when to invoke it.

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 already has 100% coverage of the three parameters (id, reviewer, note) with detailed descriptions, including formats and constraints (e.g., minLength=1, maxLength). The description's 'Args' section minimally reiterates the parameter names without adding substantive new meaning beyond the schema. The baseline score of 3 applies because the schema does the heavy lifting, and the description doesn't offer additional parameter insights.

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

Purpose5/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: 'Mark an application as flagged_for_discussion and attach a reviewer note' – a specific verb (flag) targeting a specific resource (application). It immediately distinguishes itself from siblings like k4g_search_applications or k4g_get_application by focusing on the flagging action and the context of needing a second opinion or panel discussion.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use this tool: 'when an application needs a second opinion or a full-panel discussion rather than a solo decision'. This effectively implies an alternative (solo decision) but does not explicitly name a sibling tool as an alternative. The context is clear and actionable, though it could be improved by referencing specific sibling tools for comparison.

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

k4g_get_applicationGet K4G Application DetailA
Read-onlyIdempotent

Fetch full detail for a single application by ID, including all reviewer notes.

Args:

  • id (string): the application ID, e.g. "K4G-2026-014"

Returns the full application record as JSON, including the notes array.

Error Handling:

  • Returns "Error: no application found with ID ''" if the ID doesn't exist. Use k4g_search_applications to find the correct ID first.

NameRequiredDescriptionDefault
idYesApplication ID, e.g. 'K4G-2026-014'.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false? Actually readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by documenting the exact error message for a missing ID, the return format (JSON full application record including notes array), and the prerequisite to search first. This exceeds what the annotations alone provide.

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 well-structured with clear sections for Args, Returns, and Error Handling. The first sentence front-loads the tool's core purpose, and every section provides useful information without filler.

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

Completeness5/5

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

For a single-parameter read operation, the description fully covers parameter usage, return shape, error behavior, and how to find the correct ID. The annotations cover safety, and the description is complete enough to use without additional context.

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%, and the schema already describes the id parameter with an example and minLength. The description's Args section largely repeats the schema, so it adds minimal new semantic value beyond the structured field.

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

Purpose5/5

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

The description states 'Fetch full detail for a single application by ID' with a specific verb and resource, and explicitly mentions including reviewer notes. This clearly distinguishes it from sibling tools like k4g_search_applications, k4g_list_pending_review, and k4g_flag_for_review.

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

Usage Guidelines4/5

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

The description clearly indicates when to use the tool (fetch detail for a single application by ID) and explicitly directs users to k4g_search_applications first if they need the correct ID. It does not explicitly discuss when not to use it relative to all siblings, but the guidance is sufficient.

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

k4g_list_pending_reviewList Applications Pending ReviewA
Read-onlyIdempotent

List applications that still need a decision: review_status is 'pending_review' or 'flagged_for_discussion'.

This is the tool to answer "what's stuck in the queue" - it does not include applications already marked 'reviewed'.

Args:

  • assigned_reviewer (string, optional): filter to one reviewer's queue

  • unassigned_only (boolean, optional): show only applications nobody owns yet (default false)

Returns JSON with: { count, applications: [ ...summaries, sorted oldest submitted_date first ] }

Examples:

  • "What's still in David's queue?" -> assigned_reviewer="David"

  • "What hasn't been picked up by anyone yet?" -> unassigned_only=true

NameRequiredDescriptionDefault
unassigned_onlyNoIf true, only return applications with no reviewer assigned yet.
assigned_reviewerNoOnly show applications assigned to this reviewer. Omit to include all reviewers, including unassigned.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, but the description adds valuable behavioral details: it filters by specific statuses and does not include reviewed applications. It also mentions the sorting order of results. No contradiction found.

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 well-structured and concise, with clear paragraphs for purpose, usage, arguments, and examples. Every sentence adds value, not redundant. Front-loaded with critical information.

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

Completeness5/5

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

Despite no output schema, the description accurately summarizes the return format. Given the tool's moderate complexity and comprehensive annotations, the description is complete and appropriate. It also covers all parameters and usage patterns.

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 input schema already covers both parameters with descriptions. The description adds behavioral meaning, such as 'unassigned_only' showing applications nobody owns and the filtering effect of 'assigned_reviewer'. Schema coverage is 100%, so description complements rather than repeats.

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

Purpose5/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: listing applications pending a decision with specific review_status values. It distinguishes from siblings by focusing on pending items and explicitly excluding reviewed ones.

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

Usage Guidelines5/5

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

It provides clear guidance on when to use this tool (to answer 'what's stuck in the queue') and what it excludes. It also gives behavioral examples for using filters. Although it doesn't state when to use alternatives, the context is explicit and sufficient.

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

k4g_search_applicationsSearch K4G ApplicationsA
Read-onlyIdempotent

Search the incubator application pipeline by text, sector, stage, or score.

This tool searches across all applications in the current cycle. It does NOT modify any data - use k4g_flag_for_review for that.

Args:

  • query (string, optional): matches against org name, founder name, one-liner

  • food_sector (string, optional): e.g. "alt-protein", "fermentation", "policy"

  • stage (enum, optional): pipeline stage to filter on

  • min_impact_score (number, optional): 1-10, minimum impact score

  • limit (number, optional): max results, default 20

Returns JSON with: { total, count, applications: [ { id, org_name, founder_name, country, food_sector, one_liner, stage, review_status, assigned_reviewer, impact_score, feasibility_score, team_score } ] }

Examples:

  • "Which alt-protein applications scored 7 or higher on impact?" -> food_sector="alt-protein", min_impact_score=7

  • "Find anything from Kenya" -> query="Kenya"

  • Don't use when: you already have the application ID (use k4g_get_application instead)

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default 20).
queryNoFree-text match against org name, founder name, or one-liner. Omit to skip text filtering.
stageNoFilter by pipeline stage.
food_sectorNoFilter by sector, e.g. 'alt-protein', 'fermentation', 'policy', 'packaging', 'education'.
min_impact_scoreNoOnly return applications with impact_score >= this value.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: it searches across all applications in the current cycle, returns a specific JSON shape, and reinforces that it does not modify data. This exceeds the baseline but is not a 5 because it omits details like result ordering or pagination behavior beyond the limit parameter.

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 well-structured with clear sections (overview, args, returns, examples, exclusions). It is front-loaded with the purpose, every sentence serves a function, and the content is comprehensive without being bloated. Despite being longer than typical tool descriptions, the structure makes it highly scannable and useful.

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

Completeness5/5

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

Given the tool's moderate complexity (5 optional parameters, no output schema), the description is highly complete. It documents the full return payload shape, parameter semantics, example usage, and relationships to sibling tools. With rich annotations and a thorough description, the agent has everything it needs to invoke the tool correctly.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful value via concrete examples ('Which alt-protein applications scored 7 or higher on impact?' -> food_sector='alt-protein', min_impact_score=7) and clarifies that query matches org name, founder name, or one-liner. This goes beyond simple schema repetition and earns a 4.

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

Purpose5/5

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

The description clearly states the verb and resource: 'Search the incubator application pipeline by text, sector, stage, or score.' It also specifies scope ('all applications in the current cycle') and explicitly contrasts with k4g_get_application for when an application ID is already available, making sibling differentiation strong.

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

Usage Guidelines5/5

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

Usage guidance is explicit and thorough. It names alternatives (k4g_flag_for_review for modifications, k4g_get_application when an ID is known), provides example natural-language queries with parameter mappings, and includes an explicit 'Don't use when' section.

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. 4 tool updatesv1.0.0
    • First observedk4g_flag_for_review
    • First observedk4g_get_application
    • First observedk4g_list_pending_review
    • First observedk4g_search_applications

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search finds applications by criteria, get fetches full details by ID, list surfaces pending decision items, and flag modifies review status. There is minor overlap between search and list, but the descriptions and intended use cases make the boundary explicit.

Naming Consistency4/5

All tools share the k4g_ prefix and use snake_case with a verb-first structure. k4g_flag_for_review and k4g_list_pending_review deviate slightly from the direct verb_noun pattern of the other two, but the convention is still clear and predictable.

Tool Count5/5

Four tools is a well-scoped set for an application triage server: search, detail view, pending queue, and flagging for discussion. Each tool covers a distinct step in the triage workflow without unnecessary bloat.

Completeness3/5

The read and flag workflows are covered, but there is no tool to mark an application as reviewed, assign a reviewer, or advance an application to the next pipeline stage. This creates a dead end where triage can only move applications into a discussion state, not out of it.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    An MCP server for Metrx — provides tools for construction, healthcare, logistics, manufacturing, and legal mid-market businesses to query and analyze their operational data via AI.
    23
    118 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for TeamDesk databases, enabling CRUD operations, search, and document generation via natural language.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Stessa rental-property accounting platform, enabling AI agents to query properties, portfolios, banking, documents, and tenancies via natural language.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    MCP server that acts as a research intelligence agent, converting natural language queries into SQL or full-text search against Hacker News and arXiv data, and returning answers with supporting evidence.
    4
    -