Skip to main content
Glama
zacharymcclernon

mcp-finance-agent

Agente Financiero

Un agente LangGraph que enruta preguntas bursátiles en lenguaje natural entre un servidor MCP personalizado (herramientas cuantitativas de yfinance) y una herramienta de noticias, validado mediante un conjunto de evaluación hecho a mano.

Construido para cerrar dos brechas de habilidades: diseñar servidores MCP (superficie de herramientas, descripciones como lógica de enrutamiento) y orquestación de agentes con criterio de enrutamiento.


Arquitectura

User Query
    │
    ▼
┌─────────┐
│  route  │  3-way classifier: quant / news / both
└────┬────┘
     │
     ├──────────────────────┬─────────────────────
     ▼                      ▼
┌─────────┐           ┌──────────┐
│  quant  │           │   news   │
│ (ReAct) │           │  (ReAct) │
└────┬────┘           └────┬─────┘
     │                     │
     └──────────┬───────────┘
                │
        ┌───────┴────────┐
        │                │
        ▼                ▼
┌──────────────┐   ┌───────────┐
│finish_single │   │ synthesize│
│   _source    │   │           │
└──────┬───────┘   └─────┬─────┘
       │                 │
       └────────┬─────────┘
                ▼
             Answer

Nodos:

  • route — clasifica la consulta; sin llamadas a herramientas, solo una decisión

  • quant — agente ReAct con 5 herramientas MCP; elige la(s) herramienta(s) adecuada(s) para la pregunta

  • news — agente ReAct con get_recent_news; maneja preguntas de noticias/contexto

  • finish_single_source — paso directo para consultas de una sola vía; promueve el resultado a answer

  • synthesize — concilia las salidas de quant y news en una respuesta coherente para consultas "ambas"

Para consultas "ambas", quant y news se ejecutan concurrentemente; LangGraph espera hasta que ambas completen antes de ejecutar synthesize.


Related MCP server: Yahoo Finance MCP Server

Servidor MCP — Herramientas Cuantitativas

Cinco herramientas, cada una limitada a una forma de pregunta:

Herramienta

Caso de uso

get_stock_price(ticker, date?)

Consulta de precio en un punto en el tiempo

get_fundamentals(ticker)

P/E, EPS, capitalización de mercado, crecimiento de ingresos, márgenes

compare_metric(tickers[], metric)

Comparación de fundamentales lado a lado entre empresas

get_price_history_stats(ticker, period)

Retorno, volatilidad, vs. promedio en un período retrospectivo

get_earnings_date(ticker)

Próxima fecha de ganancias / la más reciente

Las descripciones de las herramientas incluyen casos negativos explícitos ("no para X, que pertenece a la herramienta Y") — requerido porque varias herramientas comparten formas de parámetros similares y de otro modo serían ambiguas para el enrutador.


Configuración

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env  # add your ANTHROPIC_API_KEY

Uso

python -m agent.graph "What's Tesla's P/E ratio?"
python -m agent.graph "Why did NVDA drop this week?"
python -m agent.graph "Has AMZN's stock kept pace with its revenue growth?"

Evaluaciones

pytest evals/test_agent.py -v

18 consultas en cuatro categorías: cuantitativo, noticias, ambas y adversarial. Los casos adversariales incluyen trampas de palabras clave (lenguaje de noticias envolviendo preguntas cuantitativas) y consultas de premisa falsa (afirmaciones sobre movimientos de precios que deben verificarse antes de explicar).

Resultado: 15/18 → 18/18 después de corregir dos afirmaciones frágiles de tickers y agregar una regla de clasificación de premisa falsa al prompt del enrutador.


Decisiones de Diseño Clave

1. Descripciones de herramientas como lógica de enrutamiento. Cada descripción de herramienta establece explícitamente lo que no maneja. Sin casos negativos, las herramientas con formas de parámetros superpuestas (por ejemplo, get_stock_price y get_price_history_stats ambas toman ticker + parámetros tipo fecha) son ambiguas para el enrutador LLM.

2. Noticias como una herramienta LangGraph simple, no un segundo servidor MCP. El instinto era "segundo servidor MCP = bloque reutilizable". Se cuestionó: ¿reutilizable para qué? No existía un segundo consumidor concreto. Un segundo servidor MCP significa un segundo subproceso para lanzar y gestionar; un @tool simple es una función única en proceso. La sobrecarga del límite de proceso no tenía un beneficio correspondiente.

3. El enrutador clasifica la intención, los agentes eligen herramientas. El enrutador solo hace clasificación de 3 vías — no elige qué herramienta cuantitativa llamar. La selección de herramientas por LLM (emparejar una consulta con una de las 5 descripciones de herramientas) es un trabajo flexible/no determinista que pertenece dentro del bucle ReAct de quant, no duplicado en el prompt del enrutador.

4. La síntesis debe reconciliar, no concatenar. El prompt de síntesis instruye explícitamente al modelo a conectar los datos cuantitativos y el contexto de noticias en una sola respuesta coherente. "No solo enumeres ambos por separado — conéctalos." Sin esto, la ruta "ambas" produce dos párrafos unidos en lugar de una respuesta real.

Related MCP Connectors

  • 9,900+ US equities, 64 years of prices, financials, technicals, and earnings. Ask in plain English.

  • Research US-listed companies and funds with the StockPortfolio.pro MCP server. Tools cover SEC filing-grounded financials, filing timelines, company comparisons, watchlist screens, fund profiles, and cited filing questions. Filed figures include their fiscal period and EDGAR source URL; missing filing data is returned as null. Public tools work without authentication; optional API-key or OAuth access is supported. US-listed, USD-reporting companies only. Keyless access includes 3 free AI questions per rolling 30-day window. To get more now, choose the Dev plan ($19.99/month, 200 credits) at https://www.stockportfolio.pro/register?plan=dev, then follow https://www.stockportfolio.pro/docs/api-mcp to connect with OAuth or an API key. Or wait for the free allowance to renew.

  • Scrape stock quotes, historical prices, and financial statements from Yahoo Finance.

  • Stock market data for AI agents: real-time quotes, financials, options, SEC filings and news.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time stock quotes, historical price data, financial news, and multi-stock comparisons using Yahoo Finance data. Enables users to access comprehensive financial market information through natural language queries.
    163 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Yahoo Finance data including stock prices, historical data, financial statements, dividends, news, analyst recommendations, and company information through the yfinance library.
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides real-time financial data from Yahoo Finance, enabling stock price lookups, historical data analysis, company information retrieval, and multi-stock comparisons through natural language queries.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive financial data from Yahoo Finance, enabling retrieval of stock prices, company information, financial statements, options data, analyst recommendations, and market news through natural language queries.
    MIT