Probar un servidor MCP online

Pega la dirección de tu servidor MCP y pruébalo desde el navegador, sin instalar nada. Verás sus tools, resources y prompts, podrás llamarlos y tendrás cada mensaje JSON-RPC a la vista. Además revisamos su diseño con los criterios del curso y te decimos qué lección explica cada aviso.

Conectar

Con https, la conexión pasa por desarrollomcp.com. Con http://localhost, tu navegador habla directamente con tu servidor.

Ejemplos del curso, sin cuenta:

Para servidores con clave. Solo viaja a tu servidor: no la registramos ni la guardamos en ningún sitio, y se borra al cerrar la página.

Login OAuth (si tu servidor lo pide)

Si tu servidor responde 401 con WWW-Authenticate, el probador hace el login como Claude o ChatGPT: descubre los metadatos, se registra como cliente (CIMD o registro dinámico), abre la página de login en una ventana con PKCE y canjea el código por el token. El token solo vive en esta página. Cada paso sale en el panel de tráfico, con los secretos tapados.

Si tu servidor de autorización no admite registro automático, registra a mano un cliente público con la dirección de vuelta https://desarrollomcp.com/probar/oauth y escribe aquí su client_id.

Cómo funciona

El probador es un cliente MCP que corre en tu navegador. Usa el SDK oficial de TypeScript, el mismo del curso, y habla la versión que elijas: 2026-07-28, sin estado, o 2025-11-25, con el saludo initialize. Al conectar pide al servidor sus tools, resources, plantillas y prompts, recorriendo todas las páginas si las hay.

Según la dirección, la conexión va por uno de dos caminos:

  • Directo, para http://localhost y 127.0.0.1. Tu navegador habla con tu servidor y nada pasa por desarrollomcp.com. Sirve para probar mientras programas.
  • A través de desarrollomcp.com, para un servidor publicado en https. Un navegador no puede llamar a cualquier servidor por CORS, así que reenviamos tus peticiones. Solo hacia direcciones https públicas y nunca con tus cookies. Con los ejemplos del curso no hace falta cuenta. Con tu servidor, sí: es gratis.

MCP Apps: la vista, como en Claude

Si una tool declara una vista en _meta.ui.resourceUri, al llamarla el probador hace de host, como Claude o ChatGPT. Lee el HTML con resources/read, lo carga en un sandbox de otro dominio con la CSP que declara la vista y le pasa los argumentos y el resultado. La vista puede llamar a tools del servidor, y el probador deja pasar solo las que incluyen app en visibility, como dice la especificación. También puede dejar contexto al modelo o escribir en el chat, y pedir abrir enlaces o la pantalla completa.

Debajo de la vista ves el cable: cada mensaje entre la vista y el host, de ui/initialize a tool-result, con lo que significa. Lo que la vista deja al modelo y lo que escribiría en el chat sale en sus propios paneles. Para entender las piezas, lee MCP Apps: cuándo una tool pide interfaz y Construir una MCP App completa. Pruébalo con el ejemplo panel-entregas.

El sandbox está en desarrollomcp-vistas.andresleontest.workers.dev, un sitio distinto de desarrollomcp.com: la vista no ve tu sesión ni la página del probador. Sin dominios declarados no tiene acceso a la red, y nunca puede conectarse a desarrollomcp.com.

Login OAuth, paso a paso

Si tu servidor responde 401 con WWW-Authenticate, el probador sigue la autorización de MCP con el SDK oficial, como un cliente público. Lee los metadatos del recurso y los del servidor de autorización, y se registra como cliente. Si el servidor admite documentos de metadatos (CIMD), su client_id es https://desarrollomcp.com/probar/cliente-oauth.json; si no, se registra con registro dinámico. Después abre la página de login en una ventana con PKCE y canjea el código por un token ligado a tu servidor.

Cada paso sale en el panel de tráfico con lo que significa, y el código, el token y el verificador PKCE aparecen tapados. El token solo vive en esta página: se pierde al recargar o al cerrar la sesión. Para verlo sin montar nada, conecta el ejemplo nortia-login: su login no pide contraseña. Lo explica APIs externas y autorización.

Probar un servidor local

En modo directo, la página de desarrollomcp.com hace las peticiones a tu servidor desde tu navegador. El navegador solo deja leer la respuesta si tu servidor acepta ese origen (CORS) y expone la cabecera Mcp-Session-Id. Los SDK, además, rechazan por defecto un Origin que no sea local, como protección frente a DNS rebinding. Estos son los cambios en los servidores de las lecciones 9 y 10.

En TypeScript, sobre el src/http.ts de la lección 9 (el paquete cors se instala con npm install cors):

src/http.ts (fragmento)
import cors from 'cors';
import { createMcpExpressApp } from '@modelcontextprotocol/express';

// Acepta el Origin del probador (createMcpExpressApp compara el nombre de host)
const app = createMcpExpressApp({ allowedOrigins: ['localhost', '127.0.0.1', 'desarrollomcp.com'] });
// CORS: deja leer la respuesta y la cabecera Mcp-Session-Id desde la página
app.use(cors({
  origin: 'https://desarrollomcp.com',
  exposedHeaders: ['Mcp-Session-Id', 'Mcp-Protocol-Version', 'WWW-Authenticate'],
}));
app.all('/mcp', (req, res) => void node(req, res, req.body));

En Python, con el SDK oficial mcp 2.x y uvicorn:

servidor.py (fragmento)
from mcp.server.transport_security import TransportSecuritySettings
from starlette.middleware.cors import CORSMiddleware

seguridad = TransportSecuritySettings(
    allowed_hosts=["127.0.0.1:*", "localhost:*"],
    allowed_origins=["https://desarrollomcp.com"],
)
app = mcp.streamable_http_app(stateless_http=True, json_response=True, transport_security=seguridad)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://desarrollomcp.com"],
    allow_methods=["GET", "POST", "DELETE"],
    allow_headers=["*"],
    expose_headers=["Mcp-Session-Id", "Mcp-Protocol-Version", "WWW-Authenticate"],
)
# uvicorn.run(app, host="127.0.0.1", port=8765)

Chrome pide además permiso para que una web acceda a tu red local la primera vez que la página llama a localhost. Si lo deniegas, el probador no llega a tu servidor; puedes cambiarlo en la configuración del sitio. Cuando termines de probar, quita desarrollomcp.com de los orígenes permitidos si no lo necesitas.

Qué revisa

La revisión de diseño aplica los criterios de las lecciones a lo que devuelve tu servidor. Avisa, por ejemplo, de tools sin descripción o con una descripción que no dice cuándo no usarlas, de parámetros sin tipo ni límites, de anotaciones que faltan o no cuadran con el nombre, de errores que llegan como fallo del protocolo en lugar de isError y de definiciones que ocupan demasiado contexto. Cada aviso enlaza con la lección que lo explica: Herramientas, Qué construir y cuándo no, Diseño de servidores MCP, Evaluar si el modelo usa bien tus tools, Rendimiento y coste de contexto y Seguridad avanzada.

El tamaño en tokens es una estimación. Medimos los bytes de lo que un host típico entrega al modelo (nombre, descripción y esquema de entrada de cada tool) y lo dividimos entre 3,5 caracteres por token, con un margen de 3 a 4. La cifra exacta depende del modelo: para saberla, pasa el mismo JSON por el contador de tokens de tu proveedor.

Privacidad y límites

  • La cabecera Authorization solo viaja a tu servidor. No la registramos ni la guardamos, y el panel de tráfico la muestra oculta.
  • En el login OAuth, el token, el código y el registro del cliente solo viven en la memoria de esta página. Cuando el servidor de autorización no admite CORS, los metadatos, el registro y el canje del token pasan por desarrollomcp.com con las mismas reglas que el resto, sin guardarse.
  • Del tráfico que pasa por desarrollomcp.com solo registramos el servidor de destino, el método MCP, el código de estado y lo que tardó. Nunca los cuerpos.
  • Hay un límite de 60 peticiones por minuto y 300 al día por cuenta. Cada petición se corta a los 30 segundos o a los 2 MB de respuesta.
  • Solo se admiten direcciones https públicas en el puerto 443, sin direcciones IP ni redes locales. El probador no sigue redirecciones.

Lo que no hace

El probador no abre el stream de avisos del servidor (el GET de la era 2025), así que no recibe notificaciones como list_changed. Tampoco hace de modelo: no decide qué tool llamar, y en una MCP App los mensajes al chat y el contexto para el modelo se enseñan, pero nadie los responde. Para conectar nuestro propio servidor a Claude o ChatGPT, sigue Usa el curso desde Claude y ChatGPT.