🧩 MÓDULO 3 — Tools en MCP con FastMCP 📊
- Brayan Neciosup
- 5 nov
- 4 Min. de lectura
¿Qué es una Tool en MCP?
En el ecosistema de Model Context Protocol (MCP), una Tool es una función o acción especializada que un MCP Server expone hacia un cliente MCP (como Claude, GitHub Copilot o cualquier otro LLM compatible) con el objetivo de extender las capacidades nativas del modelo de lenguaje. Las Tools actúan como puntos de entrada funcionales que permiten al LLM ejecutar operaciones que, de forma directa, no podría realizar por sí mismo, como:
Consultar una base de datos local o remota.
Consumir APIs externas.
Manipular archivos o datos del sistema.
Ejecutar transformaciones, cálculos o tareas de negocio específicas.
En síntesis, las Tools son la interfaz de comunicación funcional entre el LLM y el entorno del servidor MCP, haciendo posible la ejecución de acciones reales en respuesta a instrucciones en lenguaje natural del usuario.
Relación entre el LLM, el Cliente MCP y las Tools
Cuando un usuario formula una solicitud en lenguaje natural (por ejemplo: “Calcula el promedio de ventas del último mes”), el cliente MCP analiza la instrucción, infiriendo qué Tool disponible en el servidor MCP es la más adecuada para resolverla. Esta inferencia se basa principalmente en:
El name y la description de cada Tool (que le dan contexto semántico).
Los tags, que agrupan herramientas similares por dominio funcional.
Los schemas de entrada y salida (Input Schema y Output Schema), que indican qué parámetros espera y qué datos produce la Tool.
Así, el LLM traduce la intención del usuario en una llamada estructurada hacia la Tool correspondiente, construyendo una petición (generalmente en formato JSON) que se envía al MCP Server mediante el canal de transporte (HTTP, SSE o STDIO).
Cómo se define una Tool en FastMCP
En FastMCP, definir una Tool es tan sencillo como usar un decorador sobre una función asíncrona:

Con esto, FastMCP genera automáticamente:
Un Input Schema a partir de los parámetros (a, b).
Un Output Schema basado en el tipo de retorno (float).
Esto permite que el cliente MCP entienda cómo comunicarse con la Tool de manera segura y estructurada.
Parámetros Clave de una Tool
Parámetro | Descripción | Importancia |
name | Identificador único de la Tool. No debe contener espacios ni caracteres especiales. | Permite al LLM reconocer la Tool. |
description | Explicación breve y clara del propósito de la Tool. | Sirve como contexto semántico para el LLM al inferir qué herramienta usar. |
tags | Conjunto de etiquetas o categorías funcionales. | Agrupa Tools relacionadas, facilitando filtrado o priorización. |
meta | Diccionario de metadatos: autor, versión, dependencias, etc. | Permite versionado y trazabilidad del desarrollo de Tools. |
input_schema / output_schema | Estructuras JSON generadas automáticamente a partir de los type hints. | Determinan la comunicación entre el LLM y la Tool. |
Input Schema y Output Schema
El Input Schema se genera automáticamente a partir de los parámetros de la función y sus anotaciones de tipo. Por ejemplo:

genera un esquema de entrada equivalente a:

El Output Schema se genera a partir del tipo de retorno (-> int), permitiendo al cliente MCP saber qué estructura esperar como respuesta. Además, FastMCP permite enriquecer los campos con validaciones descriptivas, utilizando Annotated y Field:

Esto refuerza la comunicación entre el servidor y el cliente, mejorando la robustez de las Tools y el feedback hacia el usuario.
Tags y Metadatos (Meta)
Los tags y meta son campos opcionales pero altamente recomendados:
Tags: ayudan a clasificar Tools por dominio (por ejemplo: {"aritmetica"}, {"database"}, {"api"}), lo que facilita la organización y la inferencia contextual por parte del cliente MCP.
Meta: puede incluir información como:
version: control de versiones.
author: responsable o creador de la Tool.
dependencies: librerías o recursos externos requeridos.
Estos campos son muy útiles en entornos colaborativos o de despliegue, donde múltiples Tools evolucionan con el tiempo.
Tools Derivadas o Extensibles
En MCP, también se pueden crear Tools derivadas, que extienden o especializan la funcionalidad de una Tool base. Esto se asemeja conceptualmente a la herencia o sobrecarga de funciones en programación orientada a objetos.
Ejemplo:

De esta manera, ambas Tools conviven en el mismo MCP Server, pero con propósitos distintos y reutilizando lógica base. Para mas detalle revisar: 📽️Ejecucion_ServidorMCP-Tool y el archivo 03_tools_mcp_fastmcp.py
Buenas Prácticas al Definir Tools
Usar nombres descriptivos y consistentes (sumar_dos_numeros, no sumar1).
Evitar caracteres especiales o acentos en name.
Describir claramente la intención de la Tool en description.
Agrupar Tools relacionadas con tags.
Versionar Tools con meta["version"].
Utilizar Annotated y Field para campos más claros y validados.
Evitar lógica compleja dentro de una Tool: mejor delegar a módulos internos.
Separar responsabilidades: mantener las Tools en archivos o módulos específicos dentro de la arquitectura MCP (por ejemplo, tools/database.py, tools/api.py, tools/utils.py).
Conclusión
Las Tools en MCP representan el núcleo funcional que conecta la inteligencia de los modelos de lenguaje con la acción concreta en el mundo real. A través de FastMCP, su definición se vuelve limpia, tipada, validada y extensible, logrando una arquitectura modular que:
Escala fácilmente con nuevas capacidades.
Facilita el mantenimiento.
Permite al LLM trabajar de manera más precisa, segura y contextual.
En esencia, las Tools son la extensión programable del razonamiento de un LLM, el puente entre el pensamiento y la acción.






Comentarios