Construyendo un servidor MCP mínimo
Un servidor mínimo expone una capacidad limitada con argumentos y resultados predecibles.
lo que aprenderás
- Explique: host, cliente y servidor.
- Aplique la idea en un ejemplo: creación de un servidor MCP mínimo
- Reconocer las limitaciones y verificar el resultado del ejercicio.
Un servidor mínimo expone una capacidad limitada con argumentos y resultados predecibles. Comience con acciones ficticias y sin escrituras.
Este es un laboratorio conceptual o externo. No asume que la aplicación expone todos los controles descritos.
Cómo funciona, paso a paso
Controlador de demostración y pruebas.
El controlador de demostración siguiente utiliza únicamente datos ficticios. Para un servidor MCP real, regístrelo con el SDK y transporte elegido, luego pruebe el descubrimiento y las llamadas con un cliente compatible. stdio se adapta a los subprocesos locales; HTTP transmitible se adapta a puntos finales remotos. Verifique explícitamente la compatibilidad con SSE heredado o revisiones más recientes.
const stock = new Map([['LX-240', 3], ['P-12', 5], ['A-7', 2]]);
function getProductStock(input) {
if (!input || typeof input.sku !== 'string' || !input.sku.trim())
throw new TypeError('A nonempty sku is required.');
const sku = input.sku.trim();
return stock.has(sku)
? { status: 'found', sku, quantity: stock.get(sku), synthetic: true }
: { status: 'not_found', sku, synthetic: true };
}
console.log(getProductStock({ sku: 'LX-240' }));
// { status: 'found', sku: 'LX-240', quantity: 3, synthetic: true }
El esquema explicativo
Siga las flechas sólidas para el flujo principal. Las flechas azules discontinuas proporcionan datos o contexto; Las flechas discontinuas de color rosa muestran comentarios o resultados devueltos. Colores y formas distinguen modelos, tiendas, decisiones y resultados. En pantallas pequeñas, desplázate horizontalmente para seguir todo el esquema.
Un ejemplo completo
get_product_stock acepta un sku de cadena. LX-240 devuelve cantidad=3; El SKU desconocido devuelve not_found en lugar de cero. Un servidor real también comprueba los permisos del catálogo.
{"name":"get_product_stock","description":"Read fictional stock; never reserve it","inputSchema":{"type":"object","properties":{"sku":{"type":"string","minLength":1}},"required":["sku"],"additionalProperties":false}}
Pruébalo tú mismo
- Implemente el contrato utilizando el dispositivo y pruebe las entradas faltantes, desconocidas y válidas.
- Registre la entrada, la fuente y el resultado esperado antes de ejecutar el experimento. Utilice únicamente los datos ficticios del ejemplo.
- Siga las etapas del diagrama. En cada paso registre qué información se recibe y se produce; No confunda el resultado intermedio con el resultado final.
- Repita después de eliminar la información necesaria o hacer que la entrada sea ambigua. Compruebe si el sistema aclara, detiene o inventa una respuesta.
- Comparar con la solución explicada. Conserve la configuración, fecha, resultado y una explicación de las diferencias. Cambie una cosa y vuelva a probar.
Una solución explicada
El contrato distingue lo encontrado, lo no encontrado y lo fallido para que los clientes no tengan que adivinar. Un ejercicio exitoso le permite mostrar la conexión entre los aportes, las etapas y el resultado. Cuando falta información, una respuesta cautelosa es más útil que detalles inventados. Compare más que estilo: compruebe también las condiciones, las fuentes y las operaciones.
Cuándo resulta útil y cuáles son sus límites
Pin SDK y revisión de protocolo; un ejemplo de contrato no es un apretón de manos completo. Elija este enfoque cuando mejore una necesidad medida. Mantenga una línea de base simple y compare los resultados utilizando insumos idénticos. Un ejemplo exitoso no establece confiabilidad en todas las situaciones.
Comprueba lo que has aprendido
¿Un servidor con herramientas ofrece automáticamente recursos e indicaciones?
No. Las capacidades son opcionales y deben descubrirse y comprobarse.
¿Quién ejecuta una llamada propuesta por el modelo?
La aplicación o servicio de alojamiento después de la validación. El modelo no obtiene automáticamente acceso ilimitado.
¿Qué resultado debería producir este ejercicio?
El contrato distingue lo encontrado, lo no encontrado y lo fallido para que los clientes no tengan que adivinar.
Términos que conviene recordar
- servidor MCP: Un servicio que expone capacidades a través del Protocolo de contexto modelo.
- Llamada de herramientas: una solicitud estructurada para utilizar una capacidad externa.
- Autorizar / Autorización: Comprobar el derecho de acceso a una operación o recurso.
Fuentes y su próximo paso
- Model Context Protocol — especificación
- LangGraph — Flujos de trabajo y agentes
- OWASP — Inyección de instrucciones
Para preparar: M03: seguridad y solución de problemas de MCP