Herramientas MCP Generadas — tool_manifest.json
GET
search_leads
Buscar leads por criterios: empresa, estado, score minimo y etiquetas
/leads
Parametros
qstringTexto libre para buscar en nombre, empresa o emailopt
statusstringnuevo | contactado | calificado | perdidoopt
min_scoreintegerScore minimo del lead (0–100)opt
limitintegerMaximo numero de resultados (default 20)opt
POST
create_lead
Crear un nuevo lead en el CRM con datos de contacto y empresa
/leads
Parametros
nombrestringNombre completo del contactoreq
emailstringEmail del leadreq
empresastringNombre de la empresareq
fuentestringCanal: linkedin, web, referido, eventoopt
notasstringNotas inicialesopt
GET
get_lead
Obtener el perfil completo de un lead por su ID, incluyendo historial de actividad
/leads/{id}
Parametros
lead_idstringIdentificador unico del leadreq
PATCH
update_lead_status
Actualizar estado, score o etiquetas de un lead existente
/leads/{id}
Parametros
lead_idstringIdentificador unico del leadreq
statusstringNuevo estado del leadopt
scoreintegerScore actualizado (0-100)opt
etiquetasarrayLista de etiquetasopt
POST
create_deal
Crear una nueva oportunidad de venta en el pipeline asociada a un lead
/deals
Parametros
lead_idstringID del lead asociado al dealreq
titulostringNombre descriptivo del dealreq
valor_eurnumberValor estimado en eurosreq
etapastringprospecto | propuesta | negociacion | cierrereq
cierre_estimadostringFecha estimada YYYY-MM-DDopt
PATCH
advance_deal_stage
Avanzar o retroceder un deal en el pipeline, actualizar valor o fecha de cierre
/deals/{id}
Parametros
deal_idstringIdentificador unico del dealreq
etapastringNueva etapa del pipelineopt
probabilidad_pctintegerProbabilidad de cierre (0-100)opt
razon_cambiostringMotivo para el historialopt
POST
add_followup_note
Registrar una nota de seguimiento o actividad en el historial de un lead
/leads/{id}/notas
Parametros
lead_idstringID del lead al que se adjunta la notareq
tipostringllamada | email | reunion | whatsappreq
contenidostringTexto de la nota o resumenreq
siguiente_accionstringProxima accion a realizaropt
GET
get_pipeline_summary
Obtener resumen del pipeline agrupado por etapa con totales de valor y conteos
/pipeline/summary
Parametros
propietariostringFiltrar por email del comercialopt
fecha_desdestringInicio del periodo YYYY-MM-DDopt
fecha_hastastringFin del periodo YYYY-MM-DDopt
Arquitectura — Claude → MCP → LeadFlow API
Claude
Agente LLM
⟷
MCP transport
MCP transport
leadflow-mcp
server.py · FastMCP
⟷
REST / HTTPS
REST / HTTPS
LeadFlow API
v2.1.0 · FastAPI
Validacion aprobada — mcp_validator.py --strict
Sin nombres duplicados de herramienta
PASSTodos los inputSchema son tipo "object"
PASSTodas las herramientas tienen descripcion
PASSCampos required sin valores vacios
PASSNaming hygiene: snake_case, sin espacios
PASS8 tools · 0 errors · 0 warnings
PASSPython
server.py — generado
#!/usr/bin/env python3 """Generated MCP server scaffold.""" from fastmcp import FastMCP mcp = FastMCP(name='leadflow-mcp') @mcp.tool() def search_leads(input: dict) -> dict: """Buscar leads por criterios: empresa, estado, score""" return {"tool": "search_leads", "status": "todo"} @mcp.tool() def create_lead(input: dict) -> dict: """Crear un nuevo lead en el CRM""" return {"tool": "create_lead", "status": "todo"} @mcp.tool() def create_deal(input: dict) -> dict: """Crear una oportunidad de venta en el pipeline""" return {"tool": "create_deal", "status": "todo"} @mcp.tool() def advance_deal_stage(input: dict) -> dict: """Avanzar o retroceder un deal en el pipeline""" return {"tool": "advance_deal_stage", "status": "todo"} @mcp.tool() def add_followup_note(input: dict) -> dict: """Registrar nota de seguimiento en el historial""" return {"tool": "add_followup_note", "status": "todo"} @mcp.tool() def get_pipeline_summary(input: dict) -> dict: """Resumen del pipeline por etapa con totales""" return {"tool": "get_pipeline_summary", "status": "todo"} ## ... +2 tools mas (get_lead, update_lead_status) if __name__ == '__main__': mcp.run()
Comando ejecutado
bash
$ python3 scripts/openapi_to_mcp.py \ --input openapi_leadflow.json \ --server-name leadflow-mcp \ --language python \ --output-dir ./out \ --format text MCP scaffold generated - server: leadflow-mcp - language: python - tools: 8 - manifest: out/tool_manifest.json - scaffold: out/server.py $ python3 scripts/mcp_validator.py \ --input out/tool_manifest.json \ --strict --format text MCP manifest validation - tools: 8 - errors: 0 - warnings: 0