FastMCP Orders Server
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 fileRelated 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 |
|
|
|
|
Ejecute los archivos SQL proporcionados para crearlas:
psql -d orders_db -f schema.sql
psql -d orders_db -f seed.sqlConfiguración
1. Instalar dependencias
pip install -r requirements.txt2. 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 instanceEjecutar el Servidor
Transporte Stdio (por defecto)
python mcp_server.pyEste 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.pySalida 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.jsPara servidores Python:
npx @modelcontextprotocol/inspector python mcp_server.pyEl inspector abre una ventana del navegador en
http://localhost:6287.En la interfaz, localice get_customer_orders_above_amount bajo Herramientas.
Complete los parámetros (ej.,
{"customer_id": 1, "min_amount": 100}) y haga clic en Llamar.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 |
| `int | ||
None` | No | Clave primaria del cliente (tiene prioridad si se proporcionan ambos) | |
| `str | ||
None` | No | Dirección de correo electrónico para búsqueda alternativa | |
|
| 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,$2en 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.
This server cannot be deployed
Maintenance
Related MCP Connectors
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Query Postgres, MySQL, SQL Server, Oracle, BigQuery, ClickHouse and Redshift from your AI client.
Deterministic safety, correctness & cost gate that vets Postgres SQL before your AI agent runs it.
Comprehensive PostgreSQL documentation and best practices, including ecosystem tools
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables 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.-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to explore and query a mock e-commerce store's data including customers, products, inventory, and orders through conversational interactions backed by PostgreSQL.-
- AlicenseAqualityBmaintenanceEnables read-only interaction with PostgreSQL databases through natural language queries, supporting dynamic connections and secure query validation.3134 npm2MIT
- FlicenseNot gradedqualityDmaintenanceConnects LLMs to a PostgreSQL e-commerce database for sports supplements, enabling natural language product search, order management, and customer operations.-