Skip to main content
Glama
masalinas

FastMCP Orders Server

by masalinas

Servidor FastMCP de Pedidos

Un servidor del Protocolo de Contexto de Modelos (MCP) construido con FastMCP que expone una herramienta para consultar pedidos de clientes desde una base de datos PostgreSQL.


Estructura del Proyecto

├── mcp_server.py        # FastMCP server — stdio transport (default), HTTP optional
├── mcp_client.py        # Demo client — connects via stdio, calls the tool
├── .env.example         # Template for DB credentials
├── requirements.txt     # Python dependencies
├── schema.sql           # DDL to create customers + orders tables
├── seed.sql             # Sample data for local testing
└── README.md            # This file

Related MCP server: Mock Store MCP Server

Requisitos Previos

  • Python ≥ 3.10

  • Instancia de PostgreSQL con una base de datos que contenga el esquema descrito a continuación

Esquema de la Base de Datos

El servidor espera dos tablas:

Tabla

Columnas

customers

id (PK), name (text), email (text, unique)

orders

id (PK), customer_id (FK→customers), order_date, total_amount (numeric, €), status

Ejecute los archivos SQL proporcionados para crearlas:

psql -d orders_db -f schema.sql
psql -d orders_db -f seed.sql

Configuración

1. Instalar dependencias

pip install -r requirements.txt

2. Configurar credenciales de la base de datos

Copie la plantilla de entorno y complete sus datos de conexión:

cp .env.example .env
nano .env   # edit values to match your PostgreSQL instance

Ejecutar el Servidor

Transporte Stdio (por defecto)

python mcp_server.py

Este es el modo estándar para servidores MCP locales y funciona con Claude Desktop, el Inspector MCP y cualquier cliente compatible con stdio.

Transporte HTTP (opcional — clientes remotos)

python mcp_server.py --transport http --port 9000

Útil cuando los clientes necesitan un endpoint HTTP remoto en lugar de un proceso local.


Ejecutar el Cliente de Demostración

El cliente incluido se conecta al servidor a través de stdio y ejecuta tres escenarios de prueba:

python mcp_client.py

Salida esperada (con datos de semilla cargados):

[TEST 1] Orders for customer_id=1 with min_amount=100.0
  Order ID   Date          Amount (€)     Status
  --------------------------------------------------------
  5          2025-06-15    180.75 €       completed
  3          2025-03-01    520.00 €       shipped
  1          2025-01-10    250.00 €       completed

  → 3 order(s) found

[TEST 2] Orders for 'carlos@example.com' with min_amount=300.0
  Order ID   Date          Amount (€)     Status
  --------------------------------------------------------
  8          2025-05-10    890.00 €       shipped
  6          2025-02-01    340.00 €       completed

  → 2 order(s) found

[TEST 3] Lookup nonexistent email (expecting error)
  ⚠ Customer not found (nobody@nowhere.com)

Pruebas con el Inspector MCP

El Inspector MCP es una herramienta interactiva para explorar servidores MCP.

npx @modelcontextprotocol/inspector node mcp_server.js

Para servidores Python:

npx @modelcontextprotocol/inspector python mcp_server.py
  1. El inspector abre una ventana del navegador en http://localhost:6287.

  2. En la interfaz, localice get_customer_orders_above_amount bajo Herramientas.

  3. Complete los parámetros (ej., {"customer_id": 1, "min_amount": 100}) y haga clic en Llamar.

  4. Inspeccione la respuesta JSON estructurada.


Especificación de la Herramienta

get_customer_orders_above_amount

Recupera los pedidos de un cliente cuyo total supera un importe mínimo en euros.

Parámetro

Tipo

Obligatorio

Descripción

customer_id

`int

None`

No

Clave primaria del cliente (tiene prioridad si se proporcionan ambos)

customer_email

`str

None`

No

Dirección de correo electrónico para búsqueda alternativa

min_amount

float

No

Valor mínimo del pedido en € (inclusive, por defecto 0.0)

Debe proporcionarse al menos uno de customer_id o customer_email.

Devuelve: list[dict] — cada diccionario tiene las claves order_id, order_date, total_amount, status. Los resultados se ordenan por order_date descendente.

Las respuestas de error se devuelven como una lista que contiene un único diccionario con una clave "error" (no se filtran trazas de pila sin procesar al cliente).


Notas de Seguridad

  • Sin credenciales codificadas — todos los parámetros de la base de datos provienen de variables de entorno cargadas mediante python-dotenv.

  • Solo consultas parametrizadas — la inyección SQL se previene utilizando marcadores de posición $1, $2 en todo el código.

  • Pool de conexiones — se crea un pool de asyncpg (2–10 conexiones) una vez al iniciar el servidor y se cierra al apagarlo.

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • -
    license
    -
    quality
    -
    maintenance
    Enables connection to PostgreSQL databases for EC solution platforms to query and manage e-commerce data including orders, members, and other business information. Provides tools for direct SQL execution, table structure analysis, and specialized e-commerce data retrieval functions.
  • F
    license
    -
    quality
    D
    maintenance
    Enables interaction with the Pagila sample PostgreSQL database through natural language queries and SQL execution, supporting safe SELECT operations and text-to-SQL conversion.
  • A
    license
    A
    quality
    A
    maintenance
    Enables read-only interaction with PostgreSQL databases through natural language queries, supporting dynamic connections and secure query validation.
    3
    195
    2
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masalinas/poc-ai-mcp-claude-code'

If you have feedback or need assistance with the MCP directory API, please join our Discord server