Skip to main content
Glama
sejalpatole

Simple-Tool-Server-Fastapi

by sejalpatole

🚀 Servidor de herramientas simple con FastAPI

Un servidor de herramientas ligero basado en FastAPI que expone funciones de utilidad sencillas a través de endpoints de API REST.

Este proyecto demuestra cómo se pueden envolver funciones de Python detrás de endpoints de FastAPI y acceder a ello a través de solicitudes HTTP. También proporciona una base para comprender cómo herramientas similares pueden exponerse más adelante a través de Model Context Protocol (MCP).


📌 Características

  • ➕ Sumar dos números

  • 🕐 Obtener la fecha y hora actual

  • 📝 Contar palabras en un texto determinado

  • ⚡ Desarrollo rápido de API con FastAPI

  • ✅ Validación de solicitudes mediante Pydantic

  • 📦 Respuestas de API basadas en JSON

  • 📖 Documentación interactiva automática de la API

  • 🔌 Arquitectura simple que puede extenderse a un servidor de herramientas basado en MCP


Related MCP server: SENTRA MCP

🏗️ Estructura del Proyecto

simple-tool-server-fastapi/
│
├── main.py              # FastAPI application and API endpoints
├── model.py             # Pydantic request models
├── tools.py             # Core utility functions
├── requirements.txt     # Project dependencies
├── .gitignore           # Files excluded from Git
└── README.md            # Project documentation

🔄 Cómo Funciona

El proyecto sigue un flujo sencillo:

Client
   ↓
FastAPI Endpoint
   ↓
Python Tool Function
   ↓
JSON Response

Por ejemplo:

GET /add
   ↓
add_numbers()
   ↓
JSON response

El mismo concepto puede extenderse más adelante hacia una arquitectura MCP:

AI Assistant
     ↓
MCP Client
     ↓
MCP Server
     ↓
Python Tools

🛠️ Tecnologías Utilizadas

  • Python

  • FastAPI

  • Pydantic

  • Uvicorn

  • REST API

  • JSON

  • Conceptos de Model Context Protocol (MCP)


⚙️ Instalación

1. Clonar el repositorio

git clone https://github.com/sejalpatole/simple-tool-server-fastapi.git

2. Navegar al proyecto

cd simple-tool-server-fastapi

3. Crear un entorno virtual

python -m venv venv

4. Activar el entorno virtual

Windows

venv\Scripts\activate

macOS / Linux

source venv/bin/activate

5. Instalar las dependencias

pip install -r requirements.txt

▶️ Ejecutar la Aplicación

Inicia el servidor FastAPI usando Uvicorn:

uvicorn main:app --reload

El servidor se iniciará en:

http://127.0.0.1:8000

📖 Documentación de la API

FastAPI proporciona automáticamente documentación interactiva de la API.

Swagger UI

Abrir:

http://127.0.0.1:8000/docs

ReDoc

Abrir:

http://127.0.0.1:8000/redoc

🔌 Endpoints de la API

1. Inicio

Endpoint

GET /

Devuelve información sobre los endpoints disponibles.

Respuesta de ejemplo

{
  "message": "Welcome to the Simple Tool Server",
  "available_endpoints": [
    "/add",
    "/time",
    "/wordcount"
  ]
}

2. Sumar dos números

Endpoint

GET /add

Parámetros

Parámetro

Tipo

Descripción

a

float

Primer número

b

float

Segundo número

Ejemplo

http://127.0.0.1:8000/add?a=10&b=20

Respuesta de ejemplo

{
  "operation": "Addition",
  "a": 10,
  "b": 20,
  "result": 30
}

3. Obtener la hora actual

Endpoint

GET /time

Ejemplo

http://127.0.0.1:8000/time

Respuesta de ejemplo

{
  "current_time": "2026-08-20 21:00:00"
}

4. Contar palabras

Endpoint

POST /wordcount

Cuerpo de la solicitud

{
  "text": "FastAPI is easy to use"
}

Respuesta de ejemplo

{
  "text": "FastAPI is easy to use",
  "word_count": 5
}

🧩 Componentes del Proyecto

main.py

Contiene la aplicación FastAPI y las rutas de la API.

Define endpooints para:

  • /

  • /add

  • /time

  • /wordcount


tools.py

Contiene las funciones de utilidad principales de Python:

add_numbers()
get_current_time()
word_count()

Mantener la lógica de cada herramienta separada de la capa de API facilita el mantenimiento y la extensión del proyecto.


model.py

Contiene el modelo Pydantic utilizado para validar la solicitud /wordcount.

class WordCountRequest(BaseModel):
    text: str

Esto garantiza que la API reciba la estructura de solicitud esperada.


🧪 Testing

Las API se pueden probar desde:

  • Swagger UI

  • Postman

  • El navegador

  • cURL

  • Cualquier cliente de API REST

Swagger UI está disponible en:

http://127.0.0.1:8000/docs

🌱 Mejoras Futuras

Las posibles extensiones futuras incluyen:

  • Añadir más herramientas de utilidad

  • Añadir autenticación

  • Añadir registro de eventos

  • Añadir pruebas automatizadas con Pytest

  • Añadir soporte para Docker

  • Añadir soporte para el protocolo MCP

  • Exponer las herramientas de Python a través de un servidor MCP

  • Añadir herramientas respaldadas por bases de datos

  • Desplegar el servidor en una plataforma en la nube


🎯 Resultados de Aprendizaje

A través de este proyecto se demuestran los siguientes conceptos:

  • Creación de API con FastAPI

  • Creación de endpoints GET y POST

  • Validación de solicitudes con Pydantic

  • Separar la lógica de la API de la lógica de negocio

  • Trabajar con solicitudes y respuestas JSON

  • Ejecutar aplicaciones con Uvicorn

  • Comprender los fundamentos de los sistemas de IA basados en herramientas

  • Comprender la relación entre APIs, herramientas y MCP


👩💻 Autora

Sejal Patole


⭐ Agradecimiento

Este proyecto fue desarrollado como un ejercicio de aprendizaje para entender FastAPI, las APIs REST, las herramientas de utilidad de Python y los fundamentos de la arquitectura de herramientas basadas en MCP.

Si te resultó útil este proyecto, considera darle una ⭐ al repositorio.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A minimal FastAPI-based MCP server that provides basic utility tools like ping and time functions. Designed for easy deployment with Docker support, authentication, and extensible architecture for future tool additions.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A minimal FastMCP server implementation that provides basic mathematical and greeting tools. Enables users to perform simple operations like adding numbers and greeting people by name through a lightweight MCP interface.
    MIT