Servidor MCP con trabajadores de Cloudflare
Introducción
El Protocolo de Contexto de Modelo (MCP) es un estándar abierto que permite a los agentes y asistentes de IA interactuar con los servicios. Al configurar un servidor MCP, puede permitir que los asistentes de IA accedan directamente a sus API.
Cloudflare Workers, combinado con el paquete workers-mcp , proporciona una solución potente y escalable para crear servidores MCP.
Related MCP server: Remote MCP Server
Prerrequisitos
Antes de comenzar, asegúrese de tener:
Node.js instalado
CLI de Wrangler instalado (
npm install -g wrangler)
Empezando
Paso 1: Crear un nuevo trabajador de Cloudflare
Primero, inicialice un nuevo proyecto de Cloudflare Worker:
npx create-cloudflare@latest my-mcp-worker
cd my-mcp-workerLuego, autentica tu cuenta de Cloudflare:
wrangler loginPaso 2: Configurar Wrangler
Actualice su archivo wrangler.toml con los detalles de cuenta correctos:
name = "my-mcp-worker"
main = "src/index.ts"
compatibility_date = "2025-03-03"
account_id = "your-account-id"Instalación de herramientas MCP
Para habilitar la compatibilidad con MCP, instale el paquete workers-mcp :
npm install workers-mcpEjecute el comando de configuración para configurar MCP:
npx workers-mcp setupEsto hará lo siguiente:
Añadir las dependencias necesarias
Configurar un proxy local para realizar pruebas
Configurar el trabajador para el cumplimiento de MCP
Escritura de código de servidor MCP
Actualice su src/index.ts para definir su servidor MCP:
import { WorkerEntrypoint } from 'cloudflare:workers';
import { ProxyToSelf } from 'workers-mcp';
export default class MyWorker extends WorkerEntrypoint<Env> {
/**
* A friendly greeting from your MCP server.
* @param name {string} The name of the user.
* @return {string} A personalized greeting.
*/
sayHello(name: string) {
return `Hello from an MCP Worker, ${name}!`;
}
/**
* @ignore
*/
async fetch(request: Request): Promise<Response> {
return new ProxyToSelf(this).fetch(request);
}
}Componentes clave:
WorkerEntrypoint : administra las solicitudes entrantes y la exposición del método.
ProxyToSelf : garantiza el cumplimiento del protocolo MCP.
Método sayHello : una función MCP de ejemplo que los asistentes de IA pueden llamar.
Agregar llamadas API
Puedes ampliar tu servidor MCP integrándolo con API externas. Aquí tienes un ejemplo de obtención de datos meteorológicos:
export default class WeatherWorker extends WorkerEntrypoint<Env> {
/**
* Fetch weather data for a given location.
* @param location {string} The city or ZIP code.
* @return {object} Weather details.
*/
async getWeather(location: string) {
const response = await fetch(`https://api.weather.example/v1/${location}`);
const data = await response.json();
return {
temperature: data.temp,
conditions: data.conditions,
forecast: data.forecast
};
}
async fetch(request: Request): Promise<Response> {
return new ProxyToSelf(this).fetch(request);
}
}Implementación del servidor MCP
Una vez configurado tu Worker, impleméntalo en Cloudflare:
npx wrangler deployDespués de la implementación, su Worker estará activo y los asistentes de IA podrán descubrir y usar sus herramientas MCP.
Para actualizar su servidor MCP, vuelva a implementarlo con:
npm run deployPrueba del servidor MCP
Para probar su configuración de MCP localmente:
npx workers-mcp proxyEste comando inicia un proxy local que permite que los clientes MCP (como Claude Desktop) se conecten.
Seguridad
Para proteger su servidor MCP, utilice Wrangler Secrets:
npx wrangler secret put MCP_SECRETEsto agrega un mecanismo de autenticación de secreto compartido para evitar el acceso no autorizado.
Conclusión
¡Felicitaciones! Has creado e implementado correctamente un servidor MCP con Cloudflare Workers. Ahora puedes ampliarlo con más funciones y ofrecer nuevas herramientas para asistentes de IA.
Para obtener más detalles, consulte la documentación de Cloudflare MCP .
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.