constructor-servidor-mcp

LeadFlow MCP Server

OpenAPI 2.1.0 → FastMCP scaffold generado automaticamente · 8 herramientas · 0 errores
8Tools
0Errores
0Warnings
PyLenguaje
✓ OpenAPI spec
✓ extract_tools()
✓ tool_manifest.json
✓ server.py scaffold
✓ validacion strict
✓ listo para Claude
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
⚙️
leadflow-mcp
server.py · FastMCP

REST / HTTPS
🗄️
LeadFlow API
v2.1.0 · FastAPI
Validacion aprobada — mcp_validator.py --strict
Sin nombres duplicados de herramienta
PASS
Todos los inputSchema son tipo "object"
PASS
Todas las herramientas tienen descripcion
PASS
Campos required sin valores vacios
PASS
Naming hygiene: snake_case, sin espacios
PASS
8 tools · 0 errors · 0 warnings
PASS
Python
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