IA en finanzas: Financial Modeling Prep MCP para datos de mercado en Claude
Conecta datos financieros en tiempo real a Claude con el MCP de Financial Modeling Prep: instala @converly/fmp-mcp, resuelve el problema HTTP vs stdio y consulta cotizaciones sin salir del chat.
Por diversión, pensé en trastear con un servidor MCP para datos financieros, pero conseguir que funcionase en Claude como un MCP resultó no ser particularmente sencillo. No porque la API de Financial Modeling Prep sea compleja, ni porque el servidor MCP que pensé que sería plug and play lo sea: todo es bastante sencillo. Pero conseguir que Claude Desktop hablase con él correctamente y hacer que fuese muy fácil de instalar llevó a una reconstrucción arquitectónica completa.
El paquete de npm que encontré parecía perfecto: financial-modeling-prep-mcp-server, documentación completa, más de 250 endpoints. Lo instalé, configuré mi clave de API, reinicié Claude Desktop. Nada. Conflictos de puertos, contaminación de stdout, errores de parseo de JSON. Resulta que el paquete usa transporte HTTP, y Claude Desktop espera stdio. Completamente incompatible.
Así que lo reconstruí. El resultado es @converly/fmp-mcp, un servidor MCP de finanzas basado en stdio para IA que funciona en Claude Desktop. Siete herramientas principales, código fuente en TypeScript, manejo de errores correcto y, lo más importante: habla el mismo idioma que Claude.
Cómo meter datos financieros en tiempo real en tu asistente de IA
La trayectoria de crecimiento de NVIDIA
Si te gusta el aspecto de mi informe, sigue leyendo. Esta es una guía práctica para acceder a datos financieros «con IA» en Claude Desktop usando un servidor MCP. Aprenderás:
- Cómo los servidores MCP hacen que las APIs financieras sean «nativas para IA»
- Instalar y configurar @converly/fmp-mcp
- La parte técnica: el problema del transporte HTTP frente a stdio (y por qué importa)
- Demostraciones en vivo con datos reales de bolsa
- Limitación de tasa, autenticación y manejo de errores
- Consideraciones de producción para el plan gratuito
Lo que esto no cubre: estrategias de trading, asesoramiento de inversión ni análisis cuantitativo. Esto trata puramente de infraestructura: meter datos financieros en Claude para que puedas construir las herramientas de análisis que necesites.
Requisitos previos: Claude Desktop instalado, Node.js para npx y una clave de API de Financial Modeling Prep (el plan gratuito sirve para probar). Si no estás seguro de esos requisitos, puedes instalar Claude Desktop con mi guía de aquí, y también necesitarás Desktop Commander. El resto más o menos se las arregla solo. Más o menos.
Por qué los datos financieros necesitan integración con IA
Tal como yo lo entiendo (¡esto no es un Bloomberg Terminal!), aquí va un flujo de trabajo típico para analizar datos financieros con IA:
- Obtener datos de la API de Financial Modeling Prep
- Parsear la respuesta JSON
- Copiar los fragmentos relevantes a Claude
- Hacer tu pregunta
- Repetir para cada empresa, métrica o periodo de tiempo
Es tedioso. Y rompe el flujo. Estás puenteando a mano dos sistemas que deberían hablar directamente.
Los servidores MCP resuelven esto haciendo que las APIs sean accesibles directamente para Claude como herramientas. En lugar de obtener los datos tú mismo, Claude llama a get_quote("AAPL") y recibe la respuesta. Puede comparar varias empresas, agregar datos a lo largo de periodos de tiempo y encadenar llamadas a la API sin que tú copies y pegues JSON.
La API de Financial Modeling Prep cubre:
- Más de 70.000 valores en más de 60 bolsas
- Cotizaciones en tiempo real, precios históricos, volumen de negociación
- Cuentas de resultados, balances, flujos de caja (trimestrales y anuales)
- Ratios financieros, valoraciones de analistas, insider trading
- Noticias, indicadores económicos, análisis técnico
Todo lo que necesitas para el análisis fundamental, pero sin el wrangling manual de datos.
El viaje: por qué reconstruí el servidor MCP
Empecé con financial-modeling-prep-mcp-server de npm. Parecía perfecto: cobertura de herramientas completa, desarrollo activo, buena documentación. Pero no arrancaba.
Error 1: conflictos de puertos
Error: listen EADDRINUSE: address already in use :::8080
[FmpMcpServer] ❌ Server failed to start...
El servidor intentaba vincularse al puerto 8080. Eso está bien para un servidor HTTP, pero Claude Desktop no habla con servidores HTTP: espera transporte stdio. Mensajes JSON-RPC en stdin/stdout.
Error 2: contaminación de stdout
Unexpected token 'F', "[FmpMcpServ"... is not valid JSON
El servidor estaba registrando prefijos [FmpMcpServer] en stdout. El protocolo MCP espera JSON-RPC puro en stdout: cualquier otro texto rompe el parser. Los logs pertenecen a stderr.
Error 3: desajuste de arquitectura
El paquete usa Smithery SDK para el transporte HTTP. Está diseñado para ejecutarse como un servicio web separado al que los clientes MCP se conectan por HTTP. Claude Desktop no soporta este patrón: solo soporta el transporte stdio, donde el servidor se ejecuta como un subproceso y se comunica vía stdin/stdout.
Dos opciones: hacer un hack para esquivar el requisito de HTTP o reconstruir con stdio. Lo reconstruí. Me llevó unas cuatro horas, incluido depurar que NODE_ENV=production bloqueaba las devDependencies (eso me costó una hora buscando @types/node desaparecidos).
El resultado: @converly/fmp-mcp, construido con @modelcontextprotocol/sdk usando transporte stdio. Siete herramientas principales para empezar, con margen para añadir más.
Instalación: poner en marcha @converly/fmp-mcp
Paso 1: consigue una clave de API de Financial Modeling Prep
Regístrate en financialmodelingprep.com. El plan gratuito te da 250 llamadas a la API al día: suficiente para probar, no suficiente para trabajo en producción. Necesitarás Starter (19 $/mes) para cualquier cosa en serio.
Paso 2: configura Claude Desktop
Abre tu archivo de configuración de Claude Desktop (si no estás seguro de cómo añadir un servidor MCP a Claude Desktop, lee esta guía)
- Windows:
%AppData%\Claude\claude_desktop_config.json - Mac:
~/Library/Application Support/Claude/claude_desktop_config.json
Añade esto a la sección mcpServers:
{
"mcpServers": {
"financial-modeling-prep": {
"command": "npx",
"args": [
"-y",
"@converly/fmp-mcp"
],
"env": {
"FMP_API_KEY": "your_api_key_here"
}
}
}
}
Sustituye your_api_key_here por tu clave de API real de Financial Modeling Prep.
Paso 3: reinicia Claude Desktop
Cierra Claude Desktop por completo (no solo la ventana; sal de la aplicación). Al reiniciar, lanzará el servidor MCP como un subproceso. Deberías ver siete herramientas nuevas disponibles:
get_quote— cotizaciones de acciones en tiempo realsearch_symbol— encontrar tickers por nombre de empresaget_company_profile— información detallada de la empresaget_income_statement— cuentas de resultados (anuales/trimestrales)get_balance_sheet— datos del balanceget_cash_flow— estados de flujos de cajaget_stock_news— últimas noticias de acciones
Demostración en vivo: datos reales de bolsa
Déjame enseñarte cómo se ve esto en la práctica. Voy a obtener la cotización actual de Apple mientras escribo este artículo:
Petición: get_quote("AAPL")
Respuesta:
{
"symbol": "AAPL",
"name": "Apple Inc.",
"price": 278.34,
"changePercentage": 0.1115,
"change": 0.31,
"volume": 28097229,
"dayLow": 276.82,
"dayHigh": 279.22,
"yearHigh": 288.62,
"yearLow": 169.21,
"marketCap": 4112850094020,
"priceAvg50": 267.4322,
"priceAvg200": 228.80914,
"exchange": "NASDAQ",
"open": 277.795,
"previousClose": 278.03
}
Son datos reales de justo ahora (en el momento de escribir esto...). Apple cotizando a 278,34 $, capitalización de mercado de 4,1 billones de dólares, subiendo un 0,11 % hoy. No salí de Claude, no abrí un navegador, no copié ni pegué nada. Claude lo obtuvo directamente a través del servidor MCP.
Aquí va un ejemplo más detallado: el perfil de empresa de Tesla:
Petición: get_company_profile("TSLA")
La respuesta incluye:
- Precio actual: 459,02 $
- Capitalización de mercado: 1,48 billones de dólares
- Sector: Auto Manufacturers
- CEO: Elon R. Musk
- Empleados: 125.665
- Descripción: visión completa del negocio
- Métricas financieras: Beta 1,878, sin dividendos
- Fecha de IPO: 29 de junio de 2010
Este es el poder de los servidores MCP. Claude ahora puede hacer preguntas como «Compara las capitalizaciones de Apple y Tesla» o «Muéstrame los ratios P/E de las acciones FAANG» y obtener respuestas directamente de la API. Sin recolección manual de datos.
La arquitectura: cómo funcionan los servidores MCP
Integración tradicional de API:
You → API → JSON → Parse → Claude → Answer
Integración MCP:
You → Question → Claude → MCP Server → API → Claude → Answer
El servidor MCP se sitúa entre Claude y la API de Financial Modeling Prep. Gestiona:
- Autenticación — gestión de la clave de API en variables de entorno
- Formateo de peticiones — conversión de llamadas de herramientas a endpoints de la API
- Parseo de respuestas — estructuración del JSON para Claude
- Manejo de errores — límites de tasa, símbolos inválidos, fallos de red
El @modelcontextprotocol/sdk proporciona la infraestructura:
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server(
{ name: 'fmp-mcp-server', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
const transport = new StdioServerTransport();
await server.connect(transport);
La parte clave: StdioServerTransport. Esto configura la comunicación stdin/stdout. Claude Desktop lanza el servidor como un subproceso, envía las llamadas de herramientas por stdin y recibe las respuestas en stdout. Todo formateado como JSON-RPC.
Las trampas: qué falla de verdad
1. Limitación de tasa (errores 429)
El plan gratuito te da 250 llamadas a la API al día. Suena razonable hasta que te das cuenta de que obtener un perfil de empresa, una cuenta de resultados y un balance son 3 llamadas. Analiza 10 empresas y has usado 30 llamadas. Hazlo 8 veces y te has quedado sin día.
El servidor devolverá:
{
"error": "FMP API error: 429 Too Many Requests"
}
Solución: sube a Starter (19 $/mes) para 300 llamadas por minuto, o a Premium (49 $/mes) para 750/min. El plan gratuito es genuinamente solo para pruebas.
2. Autenticación (errores 403)
Si ves:
{
"error": "FMP API error: 403 Forbidden"
}
Tu clave de API falta, es inválida o no tiene permisos para el endpoint al que estás llamando. Comprueba:
- Que la clave de API esté en
claude_desktop_config.jsonbajoenv.FMP_API_KEY - Que no haya erratas en la clave
- Que tu nivel de suscripción soporte el endpoint (algunos requieren Premium)
3. Inconsistencias en la calidad de los datos
Financial Modeling Prep agrega datos de múltiples fuentes. A veces los números no coinciden con lo que ves en Yahoo Finance o Bloomberg. Los cálculos de capitalización de mercado varían (metodología de acciones en circulación) y la metodología no siempre es consistente entre endpoints.
No dependas de esto para decisiones financieras críticas sin verificar los datos. Es excelente para análisis e investigación, menos fiable para precisión absoluta.
4. La contaminación de stdout lo rompe todo
Si estás construyendo tu propio servidor MCP, nunca escribas logs en stdout. Usa console.error() para los logs, no console.log(). Stdout debe ser puramente mensajes JSON-RPC. Una sola línea que no sea JSON rompe todo el protocolo.
Cometí este error al principio. El servidor arrancaba, Claude intentaba parsear el primer mensaje y se topaba con:
Unexpected token 'L', "Listening..."... is not valid JSON
Cambié todos los logs a stderr, problema resuelto.
Consideraciones de producción
Limitaciones del plan gratuito
250 llamadas/día es básicamente inútil para trabajo en producción. Puedes probar la integración, verificar que las herramientas funcionan y construir tus flujos de análisis. Pero para monitorización diaria de cartera o investigación automatizada, necesitas Starter como mínimo.
Starter (19 $/mes):
- 300 llamadas/minuto
- 5 años de datos históricos
- Solo mercados de EE. UU.
Premium (49 $/mes):
- 750 llamadas/minuto
- Más de 30 años de histórico
- Cobertura de EE. UU., Reino Unido y Canadá
- Indicadores técnicos, insider trading, transcripciones de resultados
Estrategia de caché
El servidor MCP no cachea las respuestas. Cada llamada a una herramienta = una petición a la API. Si analizas las mismas empresas repetidamente, considera cachear a nivel de aplicación o subir tu suscripción a FMP para límites de tasa más altos.
Manejo de errores
El servidor devuelve mensajes de error estructurados:
{
"error": "FMP API error: 429 Too Many Requests"
}
Claude verá esto y puede reintentar con backoff exponencial o informarte del límite de tasa. Mejor que fallos silenciosos.
Qué viene ahora
El servidor actual implementa 7 herramientas principales. La API de Financial Modeling Prep tiene más de 250 endpoints. Para cuando leas esto habré añadido estas incorporaciones de alto valor:
- Datos de mercado: componentes del S&P 500, rendimiento por sector
- Datos de analistas: objetivos de precio, estimaciones de beneficios, subidas/bajadas
- Insider trading: filings del Form 13F, transacciones de insiders
- Indicadores económicos: PIB, desempleo, tipos de la deuda
- Análisis técnico: medias móviles, RSI, MACD
Si quieres contribuir o sugerir herramientas, el repo de GitHub está abierto: github.com/converly/fmp-mcp.
Conclusiones clave
Los servidores MCP hacen que las APIs sean nativas para IA. En lugar de recolección manual de datos y copiar y pegar, Claude accede directamente a los datos financieros como herramientas. Esto cambia cómo interactúas con los datos de mercado: de investigación por lotes a análisis conversacional.
HTTP ≠ stdio. Claude Desktop espera transporte stdio. Los servidores MCP basados en HTTP no funcionarán sin cambios arquitectónicos. Si construyes servidores MCP, empieza con @modelcontextprotocol/sdk y StdioServerTransport.
El plan gratuito es solo para pruebas. 250 llamadas/día suena generoso pero desaparece rápido. Prevé Starter (19 $/mes) si haces trabajo real.
La calidad de los datos varía. Financial Modeling Prep es excelente para análisis e investigación, pero verifica los números críticos contra fuentes primarias. Las diferencias de metodología provocan inconsistencias.
Actualización:
Funciones nuevas añadidas:
Datos de mercado y cotizaciones
- get_quote — cotizaciones de acciones en tiempo real (precio, volumen, cambio, etc.)
- search_symbol — buscar símbolos de acciones por nombre de empresa o ticker
- get_historical_chart — datos históricos de precios con intervalos flexibles (1min, 5min, 15min, 30min, 1hour, 4hour)
Fundamentales de empresa
- get_company_profile — información detallada de la empresa (descripción, industria, sector, CEO, etc.)
- get_income_statement — cuentas de resultados (anuales/trimestrales)
- get_balance_sheet — estados del balance (anuales/trimestrales)
- get_cash_flow — estados de flujos de caja (anuales/trimestrales)
Métricas y ratios financieros
- get_key_metrics — métricas financieras clave (P/E, ROE, ratios de deuda, etc.)
- get_financial_ratios — ratios detallados (rentabilidad, liquidez, eficiencia)
Movimientos del mercado y rendimiento
- get_market_gainers — acciones con las mayores subidas de precio
- get_market_losers — acciones con las mayores caídas de precio
- get_most_active — acciones más negociadas por volumen
- get_sector_performance — instantánea actual del rendimiento por sector
Cobertura de analistas
- get_analyst_estimates — estimaciones financieras de analistas (previsión de ingresos, EPS)
- get_price_target — resumen de objetivos de precio de analistas
- get_analyst_ratings — valoraciones de analistas y subidas/bajadas
Actividad de insiders e institucional
- get_insider_trading — actividad reciente de insider trading
- get_institutional_holders — propiedad institucional (filings 13F)
Noticias y calendario
- get_stock_news — últimos artículos de noticias sobre acciones
- get_earnings_calendar — próximos anuncios de resultados
- get_economic_calendar — próximas publicaciones de datos económicos
Indicadores económicos
- get_economic_indicator — datos económicos (PIB, desempleo, CPI, etc.)
Indicadores técnicos
- get_technical_indicator_rsi — índice de fuerza relativa (RSI)
- get_technical_indicator_sma — media móvil simple (SMA)
- get_technical_indicator_ema — media móvil exponencial (EMA)
Datos de índices
get_sp500_constituents — lista de componentes del índice S&P 500
Enlaces
- Paquete npm: npmjs.com/package/@converly/fmp-mcp
- Repositorio de GitHub: github.com/converly/fmp-mcp
- Financial Modeling Prep: financialmodelingprep.com
- MCP SDK: github.com/modelcontextprotocol/typescript-sdk
- Claude Desktop: claude.ai/download
Artículos relacionados
3 trucos para optimizar tokens en Claude Code (Fable 5)
Optimiza tokens y ventana de contexto en Claude Code tras Fable 5: /compact, desglose de contexto y conectores activos. Ahorro acumulativo para uso intensivo diario.
Qué es harness engineering: el arnés que hace útil al modelo
Qué es harness engineering: mejorar el arnés del LLM (contexto, tools, hooks, verificación) sin cambiar el modelo. Caso LangChain en Terminal Bench 2.0.
¿Qué son los agentes de IA? La explicación en palabras llanas
Un agente de IA es tu modelo de siempre dentro de un bucle, con una meta y herramientas. Te explico qué son, cómo se diferencian de un workflow y por dónde empezar.

