Solo lectura: no crea, edita ni borra datos.
Model Context Protocol
MCP server público para agentes IA.
Endpoint
Una puerta controlada, no una API abierta sin criterio.
El servidor MCP vive en el API Symfony y exige token bearer. Está pensado para clientes como Claude Desktop, VS Code, Cursor o MCP Inspector cuando soportan servidores remotos con headers HTTP, con herramientas pequeñas y explícitas.
https://api.luismibriz.dev/api/v1/mcpContenido público: no expone drafts, Cholo, tokens ni datos privados.
Bearer token por cliente: los tokens se emiten y rotan desde Cholo.
Auditoría: cada llamada queda atribuida al prefijo del token MCP.
Tools disponibles
Pocas herramientas, bien acotadas.
La idea no es volcar la base de datos a un agente: es darle capacidades públicas con salida estable, auditable y fácil de razonar.
list_public_postsDevuelve los últimos posts publicados con título, extracto, slug y URL.
search_public_postsBusca posts publicados por texto libre, priorizando coincidencias en el título.
get_services_summaryResume los servicios técnicos activos sin exponer datos privados ni contenido de administración.
Solicitud de acceso
El token se pide, se revisa y se emite manualmente.
Mientras no haya área privada, las solicitudes entran por el formulario de contacto. Quedan guardadas como mensaje de contacto, me llega el aviso por email y después emito el token desde Cholo si encaja con el uso previsto.
- Paso 1Solicitas acceso indicando cliente MCP y uso previsto.
- Paso 2Reviso la solicitud y emito el token desde Cholo.
- Paso 3Se envía un enlace one-shot; el usuario pulsa "Revelar token" cuando esté listo para copiarlo.
- Paso 4Para regenerar o revocar, usa contacto o email con el prefijo del token.
Archivos de configuración
Copia el bloque de tu cliente y pega tu token fuera de git.
El endpoint acepta llamadas MCP por HTTP con Authorization: Bearer .... No hay OAuth público todavía: el token se emite desde Cholo, se guarda hasheado en el API y solo se muestra en claro al crearlo o regenerarlo.
VS Code
.vscode/mcp.json
VS Code usa servers y permite inputs para pedir el token como password la primera vez que arranca el servidor. Así compartes la configuración sin commitear secretos.
{
"inputs": [
{
"type": "promptString",
"id": "luismibriz-mcp-token",
"description": "Token MCP de solo lectura",
"password": true
}
],
"servers": {
"luismibriz": {
"type": "http",
"url": "https://api.luismibriz.dev/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${input:luismibriz-mcp-token}"
}
}
}
}Cursor y compatibles
Formato mcpServers
Algunos clientes usan mcpServers en lugar de servers. Si tu cliente soporta servidores remotos con headers, usa este bloque y deja el valor real de la variable en tu entorno local o en su configuración privada.
{
"mcpServers": {
"luismibriz": {
"url": "https://api.luismibriz.dev/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${LUISMIBRIZ_MCP_TOKEN}"
}
}
}
}Variable local
Si tu cliente expande variables de entorno, guarda el token fuera del repositorio. Si no las expande, pega el bearer solo en la configuración privada del cliente, nunca en un archivo versionado.
LUISMIBRIZ_MCP_TOKEN=mcp_tu_token_privado_aquiPara regenerar, revocar o cambiar el email asociado a un token, usa el formulario de contacto o escribe a [email protected].
Demo en vivo
Conéctate a mi servidor MCP
Este blog no es solo teoría: el endpoint que describo más arriba está corriendo en producción. Añade este bloque al mcpServers de un cliente compatible con servidores remotos y headers bearer. Tu agente podrá hablar con la API de este portfolio en lectura, sin acceso al admin ni a datos sensibles.
{
"mcpServers": {
"luismibriz": {
"url": "https://api.luismibriz.dev/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${LUISMIBRIZ_MCP_TOKEN}"
}
}
}
}Token: pídelo desde la página MCP. Lo emito manualmente desde Cholo y el plaintext se muestra una sola vez. No publico tokens embebidos en el JSON precisamente porque son auditables y eso me obliga a hacerlo bien.
Tools disponibles
list_public_posts
Devuelve los últimos artículos publicados con título, slug, fecha, categoría y URL canónica.
Prueba: “¿Qué has publicado últimamente en el blog?”
search_public_posts
Busca artículos por texto sobre título, excerpt y keywords. Los matches en título puntúan más alto.
Prueba: “¿Tienes algo escrito sobre Symfony y MCP?”
get_services_summary
Lista los servicios profesionales activos con su resumen y URL pública.
Prueba: “¿En qué servicios trabajas ahora mismo?”