Skip to main content
Glama
zacharymcclernon

mcp-finance-agent

Finance Agent

Агент на LangGraph, который маршрутизирует вопросы о акциях на естественном языке между кастомным MCP-сервером (квантовые инструменты yfinance) и новостным инструментом, проверенный с помощью собственного набора для оценки.

Создан для закрытия двух пробелов в навыках: проектирование MCP-серверов (поверхность инструментов, описания как логика маршрутизации) и оркестрация агентов с суждением о маршрутизации.


Архитектура

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

Узлы:

  • route — классифицирует запрос; без вызовов инструментов, только решение

  • quant — ReAct-агент с 5 MCP-инструментами; выбирает подходящий(ие) инструмент(ы) для вопроса

  • news — ReAct-агент с get_recent_news; обрабатывает вопросы о новостях/контексте

  • finish_single_source — сквозной проход для однопутевых запросов; продвигает результат в answer

  • synthesize — согласует результаты quant и news в единый связный ответ для запросов «both»

Для запросов «both» quant и news выполняются параллельно; LangGraph ждет завершения обоих, прежде чем запускать synthesize.


Related MCP server: Yahoo Finance MCP Server

MCP-сервер — квантовые инструменты

Пять инструментов, каждый ограничен одной формой вопроса:

Инструмент

Сценарий использования

get_stock_price(ticker, date?)

Поиск цены на конкретный момент времени

get_fundamentals(ticker)

P/E, EPS, рыночная капитализация, рост выручки, маржа

compare_metric(tickers[], metric)

Сравнение фундаментальных показателей между компаниями

get_price_history_stats(ticker, period)

Доходность, волатильность, отклонение от среднего за период

get_earnings_date(ticker)

Следующая/последняя дата отчета о прибыли

Описания инструментов включают явные негативные случаи («не для X, это относится к инструменту Y») — это необходимо, поскольку несколько инструментов имеют схожие формы параметров и в противном случае были бы неоднозначны для маршрутизатора.


Установка

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

Использование

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?"

Оценка

pytest evals/test_agent.py -v

18 запросов по четырем категориям: quant, news, both и adversarial. Adversarial-кейсы включают ловушки с ключевыми словами (новостной язык, оборачивающий квантовые вопросы) и запросы с ложной предпосылкой (утверждения о движении цены, которые необходимо проверить перед объяснением).

Результат: 15/18 → 18/18 после исправления двух хрупких утверждений о строке тикера и добавления правила классификации ложных предпосылок в промпт маршрутизатора.


Ключевые проектные решения

1. Описания инструментов как логика маршрутизации. Каждое описание инструмента явно указывает, что он не обрабатывает. Без негативных случаев инструменты с пересекающимися формами параметров (например, get_stock_price и get_price_history_stats оба принимают тикер и параметры, похожие на дату) неоднозначны для LLM-маршрутизатора.

2. Новости как обычный инструмент LangGraph, а не второй MCP-сервер. Инстинкт был: «второй MCP-сервер = переиспользуемый строительный блок». Но если подумать: переиспользуемый для чего? Конкретного второго потребителя не было. Второй MCP-сервер означает второй подпроцесс для запуска и управления; обычный @tool — это одна внутрипроцессная функция. Накладные расходы на границу процесса не имели соответствующей выгоды.

3. Маршрутизатор классифицирует намерение, агенты выбирают инструменты. Маршрутизатор выполняет только трехстороннюю классификацию — он не выбирает, какой квантовый инструмент вызывать. Выбор инструмента LLM (сопоставление запроса с одним из 5 описаний инструментов) — это гибкая/недетерминированная работа, которая принадлежит внутри цикла ReAct quant, а не дублируется в промпт маршрутизатора.

4. Синтез должен согласовывать, а не конкатенировать. Промпт синтеза явно инструктирует модель связывать квантовые данные и новостной контекст в единый связный ответ. «Не просто перечисляй оба по отдельности — свяжи их». Без этого путь «both» дает два абзаца, склеенных вместе, а не реальный ответ.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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.
    301
    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

View all related MCP servers

Related MCP Connectors

  • Global stock research, ML forecasts, valuation signals, screeners & portfolio tracking in Claude

  • Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.

  • 13-model stock valuation engine for AI agents - fair values for 5,900+ US stocks, updated daily.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zacharymcclernon/mcp-finance-agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server