Conecta tus herramientas agénticas a Meteor
Cualquier herramienta que hable MCP — Claude Code, Claude Desktop, Cursor, Windsurf, Cline, Codex o tu propio agente — se conecta directo a Meteor y opera tu workspace: ejecuta Mets, gestiona el CRM, dispara tareas y más. La misma superficie de la API, expuesta como herramientas.
Introducción
El Model Context Protocol es un estándar abierto para que los agentes de IA descubran y usen herramientas externas de forma segura. El servidor MCP de Meteor es remoto y se autentica con tu API key met_ — la misma que usas en la API REST. Cualquier cliente MCP puede conectarse; abajo está la config de los más comunes y de un agente propio.
El SDK y la API REST son para cuando tú escribes el código. El servidor MCP es para cuando un agente opera Meteor por su cuenta.
Conectar un cliente
Todos los clientes apuntan al mismo endpoint remoto y pasan tu key en el header Authorization. Usa una key de test (met_test_) mientras pruebas.
Claude Code
Un comando desde la terminal:
claude mcp add --transport http meteor \
https://api.met.meteor.com.co/api/v1/mcp \
--header "Authorization: Bearer met_live_tu_key"
Claude Desktop
En claude_desktop_config.json:
{
"mcpServers": {
"meteor": {
"url": "https://api.met.meteor.com.co/api/v1/mcp",
"headers": { "Authorization": "Bearer met_live_tu_key" }
}
}
}
Cursor
En .cursor/mcp.json (del proyecto) o el global:
{
"mcpServers": {
"meteor": {
"url": "https://api.met.meteor.com.co/api/v1/mcp",
"headers": { "Authorization": "Bearer met_live_tu_key" }
}
}
}
Windsurf
En ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"meteor": {
"serverUrl": "https://api.met.meteor.com.co/api/v1/mcp",
"headers": { "Authorization": "Bearer met_live_tu_key" }
}
}
}
Cline (VS Code)
Desde el panel de MCP de Cline, agrega un servidor remoto con la URL y el header de autenticación — misma forma que arriba.
Codex (OpenAI)
Codex conecta servidores MCP por stdio, así que mcp-remote puentea el servidor remoto de Meteor. En ~/.codex/config.toml:
[mcp_servers.meteor]
command = "npx"
args = ["-y", "mcp-remote", "https://api.met.meteor.com.co/api/v1/mcp", "--header", "Authorization: Bearer met_live_tu_key"]
Otros clientes MCP
Cualquier cliente compatible con MCP (transport HTTP/SSE) sirve. La receta es siempre la misma: URL del servidor + header Authorization: Bearer met_….
Tu propio agente
Si construyes tu propio agente, conéctalo con un cliente MCP programático (por ejemplo, @modelcontextprotocol/sdk) y dale a tu modelo las tools de Meteor:
import { Client } from '@modelcontextprotocol/sdk/client';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp';
const client = new Client({ name: 'mi-agente', version: '1.0.0' });
await client.connect(new StreamableHTTPClientTransport(
new URL('https://api.met.meteor.com.co/api/v1/mcp'),
{ requestInit: { headers: { Authorization: `Bearer ${process.env.MET_API_KEY}` } } },
));
const { tools } = await client.listTools(); // las tools de Meteor, según tus scopes
// pasas `tools` a tu modelo y ejecutas client.callTool(...) cuando el modelo lo pida
Así tu agente descubre y ejecuta las capacidades de Meteor sin que tú cablees cada endpoint a mano.
Descubrimiento
Si tu cliente resuelve servidores por dominio en vez de por URL fija, el descriptor está publicado:
curl https://developers.meteor.com.co/.well-known/mcp.json
Trae el endpoint, el transporte, cómo autenticar y la lista de tools. Se genera del catálogo real del servidor en cada build, así que no puede quedar desactualizado respecto de lo que el servidor expone de verdad.
Junto a él va server.json, el descriptor con el formato de los registros de MCP. Es el que sirve para que un agente encuentre Meteor sin conocer este dominio.
Capacidades
El catálogo son 34 tools sobre 15 dominios, y se filtra por los scopes de tu key: si la key no tiene el scope, la tool no aparece. Esta tabla se genera del catálogo real del servidor.
| Dominio | Tools | Scopes |
|---|---|---|
| Tareas | met_list_tasks Listar tareasmet_get_task Ver una tareamet_create_task Crear tareamet_execute_task Ejecutar una tareamet_get_task_execution Ver una ejecución de tareamet_set_task_status Cambiar el estado de una tarea | tasks:read · tasks:write |
| Ítems | met_list_items Listar items de una colecciónmet_get_item Ver un itemmet_create_item Crear un itemmet_update_item Actualizar un item | items:read · items:write |
| Recordatorios | met_list_reminders Listar recordatoriosmet_create_reminder Agendar un recordatorio a un contactomet_update_reminder Reagendar o editar un recordatoriomet_cancel_reminder Cancelar un recordatorio | reminders:read · reminders:write |
| Runs | met_run_agent Ejecutar un Metmet_get_run Ver un Runmet_list_runs Historial de Runs | runs:execute · runs:read |
| Automatizaciones | met_list_flows Listar flujosmet_run_flow Ejecutar un flujomet_get_flow_run Ver la ejecución de un flujo | automations:read · automations:execute |
| Plantillas | met_list_snapshots Catálogo de plantillasmet_get_snapshot Ficha de una plantillamet_install_snapshot Instalar una plantilla | snapshots:read · snapshots:install |
| Contactos | met_list_contacts Listar contactosmet_create_contact Crear contacto | contacts:read · contacts:write |
| Handoff | met_set_autopilot Pasar la conversación a un humano (o devolverla)met_pause_autopilot Pausar el autopiloto por unos minutos | handoff:manage |
| Agents | met_list_agents Listar los Mets del workspace | agents:read |
| Colecciones | met_list_collections Listar colecciones | collections:read |
| Variables | met_list_variables Listar variables del workspace | variables:read |
| Skills | met_list_skills Listar habilidades del workspace | skills:read |
| Canales | met_send_message Enviar un mensaje a un contacto | channels:send |
| Conversaciones | met_get_messages Leer la conversación con un contacto | conversations:read |
| Archivos | met_list_assets Buscar archivos del workspace | files:read |
Es un subconjunto de la API REST, no su equivalente: cada tool llama al mismo service y declara el mismo scope que su endpoint, pero no todos los endpoints tienen tool. Lo que no esté aquí se hace por REST o por el SDK.
Si tu key es de partner
Una key de partner habla con otro endpoint, en el host de la API de Partners:
https://api.partners.meteor.com.co/mcp
Son dos servidores distintos y con qué key te autenticas decide cuál te sirve: una key de workspace habla con el de arriba, una de partner con este. Un workspace y una cartera de clientes no comparten permisos, así que tampoco comparten catálogo — y una key de workspace apuntando aquí recibe un catálogo vacío, no un error.
Son 13 tools, todas con el prefijo met_partner_. El partner sobre el que operan sale de tu key, nunca de un argumento.
| Dominio | Tools | Scopes |
|---|---|---|
| leads | met_partner_list_leads Listar oportunidadesmet_partner_get_lead Ver una oportunidadmet_partner_create_lead Crear una oportunidadmet_partner_list_lead_comments Leer el hilo de una oportunidadmet_partner_comment_lead Escribir en el hilo de una oportunidad | partner:leads:read · partner:leads:write |
| support | met_partner_list_tickets Listar ticketsmet_partner_get_ticket Ver un ticketmet_partner_reply_ticket Responder un ticket | partner:support:read · partner:support:write |
| projects | met_partner_list_projects Listar proyectosmet_partner_list_project_tasks Tareas de un proyecto | partner:projects:read |
| clients | met_partner_list_clients Listar clientes atribuidos | partner:clients:read |
| commissions | met_partner_list_commissions Listar comisiones | partner:commissions:read |
| payouts | met_partner_list_payouts Listar liquidaciones | partner:payouts:read |
Seguridad
- La key define el workspace y los scopes: el agente solo ve y ejecuta lo permitido.
- Las credenciales de terceros (de tus integraciones) nunca se exponen al agente — solo el resultado de las tools.
- Cada tarea ejecutada debita Energía y queda auditada, igual que en la API REST.
- Con una key de test (
met_test_) el agente prueba sin costo ni efectos reales.
¿Prefieres escribir el código tú? Empieza por las Guías y el quickstart del SDK.