financial-analyst-mcp
MCP-Powered Financial Analyst
実際のMCP(Model Context Protocol)サーバーを中心に構築した、ローカルファーストのAI金融アナリストです。 1つのチャットボットが株価のトレンドを推測する代わりに、2つのエージェントが連携して動作します:
Validator agent — インターネットから取得したデータ(Yahoo Finance、ニュースAPI)に、LLMに届く前にギャップ、不正な値、ティッカーの不一致がないかをチェックします。
Analyst agent — 検証済みデータとMCPツールの出力に基づいて推論し、構造化されたサマリー(トレンド、移動平均、ボラティリティ、関連ニュースのセンチメント)を作成します。
両方のエージェントは、カスタムMCPサーバーが公開するツールを呼び出します。これがこのプロジェクトの中核であり、単なるLangChainのグルーコードではありません。
基本的なチュートリアル版から追加したもの
1つのエージェントがすべてを行う代わりに、2つのエージェントに分割(Validator → Analyst)
検証を独自のツールとして含む、3つのツールを備えた本格的なMCPサーバー
両エージェントでのLangSmithトレーシング
Neon Postgresキャッシュ層(レート制限のあるAPIへの再アクセスを回避)
手計算による正解データを使った小さな評価スイート
デプロイ済みのWebアプリ(Render上のFastAPI、Vercel上の静的フロントエンド)
Related MCP server: MonteWalk
アーキテクチャ
User query (ticker + date range)
│
▼
Validator agent ──calls──▶ MCP server ──▶ fetch_price_data (Yahoo Finance)
│ ▶ validate_data
│ (retries once on bad data)
▼
Analyst agent ──calls──▶ MCP server ──▶ analyze_chart (moving averages, volatility)
│ ▶ get_news_sentiment
▼
Structured summary + chart data → FastAPI → frontendプロジェクト構成
backend/
mcp_server/ # the MCP server + its 3 tools (this is the centerpiece)
agents/ # Validator agent, Analyst agent
orchestration/ # LangGraph wiring: Validator -> Analyst
db/ # Neon Postgres cache + eval result storage
evals/ # hand-checked test cases + eval runner
main.py # FastAPI app, deployed on Render
frontend/
index.html # single-page UI, deployed on Vercel
vercel.json
render.yaml # Render deployment config for the backend
requirements.txt
.env.exampleセットアップ
クローンしてインストール
git clone <your-repo-url> cd financial-analyst-mcp python -m venv venv && source venv/bin/activate pip install -r requirements.txt環境変数 —
.env.exampleを.envにコピーして、以下を入力します:GROQ_API_KEY— 無料、支払い不要(console.groq.comでサインアップ)、Analyst agentとニュース関連性チェックで使用DATABASE_URL— RDS Postgresの接続文字列NEWSAPI_KEY— newsapi.orgの無料プラン(100リクエスト/日、カード不要)LANGCHAIN_API_KEY、LANGCHAIN_PROJECT— LangSmithトレーシング用(任意、無料プラン)
データベーステーブルを設定
python -m backend.db.database --initバックエンドをローカルで実行
uvicorn backend.main:app --reload --port 8000フロントエンドをローカルで実行 — ブラウザで
frontend/index.htmlを開くか、以下のように配信します:cd frontend && python -m http.server 5500index.htmlの先頭付近にあるAPI_BASE_URL定数を、バックエンドを指すように更新します(ローカルではhttp://localhost:8000、デプロイ後はRenderのURL)。評価スイートを実行
python -m backend.evals.run_evals
デプロイ(AWS無料利用枠)
以下の手順はすべて、AWSの12か月間無料利用枠の範囲内です(記載されている無料利用枠のインスタンスサイズを選択する限り)。ここでコードの変更は一切不要で、同じFastAPIアプリとMCPサーバーがそのまま動作します。
1. データベース → RDS(Postgres)
AWSコンソール → RDS → データベースを作成。
エンジン:PostgreSQL。テンプレート:無料利用枠。
インスタンスクラス:
db.t3.micro(またはdb.t4g.micro。コンソールが無料利用枠として提供している方)。マスターユーザー名とパスワードを設定し、メモしておきます。
「接続」で、パブリックアクセス: あり を設定します(EC2インスタンスと自分のマシンからアクセスできるようにするために必要です。ポートフォリオプロジェクトならこれで問題ありません。後で必要になれば制限を強化できます)。
起動したら、エンドポイント(
xxxx.rds.amazonaws.comのような形式)をコピーし、接続文字列を作成します:DATABASE_URL=postgresql://<username>:<password>@<endpoint>:5432/postgresRDSインスタンスのセキュリティグループで、インバウンドルールを追加します:PostgreSQL(ポート5432)、ソース = 自分のIP(ローカルテスト用)、後でEC2インスタンスのセキュリティグループも追加します。
2. バックエンド → EC2
AWSコンソール → EC2 → インスタンスを起動。
AMI:Amazon Linux 2023(またはUbuntu 22.04)。インスタンスタイプ:t2.micro(無料利用枠の対象)。
キーペア(
.pemファイル)を作成/ダウンロードします — SSH接続に必要です。セキュリティグループ:インバウンドのSSH(ポート22、自分のIP)と、フロントエンドがAPIに到達できるようにカスタムTCPポート8000を任意の場所(
0.0.0.0/0)から許可します。起動して、SSHで接続します:
ssh -i your-key.pem ec2-user@<instance-public-ip>インスタンス上で:
git clone <your-repo-url> financial-analyst-mcp cd financial-analyst-mcp nano .env # paste in GROQ_API_KEY (free, from console.groq.com), DATABASE_URL (from RDS), NEWSAPI_KEY, etc. bash aws/ec2-setup.shこれにより、Pythonと依存関係のインストール、データベーステーブルの作成、バックエンドの
systemdサービス(financial-analyst)としての起動が行われます。このサービスは切断後も実行され続け、インスタンスが再起動した場合も自動的に再起動します。起動を確認します:
curl http://<instance-public-ip>:8000/health
3. フロントエンド → S3静的ウェブサイト
frontend/index.htmlの先頭付近にあるAPI_BASE_URLをhttp://<your-ec2-public-ip>:8000に更新します。自分のマシンから(AWS CLIがインストールされ、
aws configureで認証情報を一度設定している場合):BUCKET_NAME=your-unique-bucket-name bash aws/deploy-frontend-s3.shスクリプトがバケットを作成し、静的ウェブサイトホスティングを有効にして、
index.htmlをアップロードします。最後に公開URL(http://<bucket>.s3-website-<region>.amazonaws.com)を表示します。フロントエンドを変更したら、同じスクリプトを再実行して再アップロードするだけです。
注意事項
EC2のパブリックIPは、インスタンスを停止/起動すると変わります(Elastic IPをアタッチしない限り。Elastic IPは実行中のインスタンスにアタッチされている限り無料です)。IPが変わった場合は、
API_BASE_URLを更新してS3デプロイスクリプトを再実行します。コストをゼロに保つには、
t2.micro/db.t3.microの無料利用枠サイズを守り、AWS無料利用枠は最初の12か月間のみであることを覚えておいてください。
AWS無料利用枠で費用はかかりますか?
いいえ、以下の制限内に収まる限りかかりません(すべて新規アカウント向けのAWS 12か月間無料利用枠に含まれます):
サービス | 無料利用枠の制限 | このプロジェクトの使用量 |
EC2(t2.micro/t3.micro) | 750時間/月 | 24時間365日稼働のインスタンス1台 = 約730時間 — 制限内に収まる |
RDS(db.t3.micro/t4g.micro) | 750時間/月 + 20GBストレージ | データベースインスタンス1台 = 制限内に収まる |
S3 | 5GBストレージ、20,000 GET / 2,000 PUTリクエスト/月 | HTMLファイル1つと軽いポートフォリオトラフィック — ほど遠い |
データ転送(アウトバウンド) | 100GB/月(最初の12か月間) | ポートフォリオレベルのトラフィックでは到達しない |
費用がかかるもの(避けるべきもの):
同時に2つ目のEC2インスタンスまたはRDSデータベースを起動する(各サービスの無料利用枠時間は最初の1台分のみで、2つ稼働すると2倍の時間を消費します)
t2.micro/t3.micro(EC2)またはdb.t3.micro/db.t4g.micro(RDS)より大きいインスタンスタイプを使用するElastic IPをリクエストして、実行中のインスタンスにアタッチしない — AWSは未アタッチのElastic IPに課金することで、これを意図的に防止しています
AWSアカウントが新規でない場合 — 無料利用枠はアカウント作成から12か月間なので、アカウントをそれ以上保有していると、これらのサービスは通常どおり請求されます
設定しておく価値のある安全策: AWSコンソール → 請求 → 予算 → 1ドルの予算アラートを作成します。何かに費用がかかり始めた瞬間にメールで通知されるので、驚くことはありません。
MCPレイヤーに関するメモ
MCPサーバー(backend/mcp_server/server.py)は、stdioを介してModel Context Protocolで通信するスタンドアロンプロセスです。エージェントは langchain-mcp-adapters を使用してMCPクライアントとして接続し、MCPツールをLangChain互換のツールに自動的に変換します。つまり、同じMCPサーバーを、変更なしでClaude Desktop、Cursor、その他のMCP互換ホストに接続できます。これが、ツールスキーマをエージェントにハードコードするのではなく、この方法で構築する意義そのものです。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
Real-time market events, sentiment, and technical analysis as MCP tools, backed by real data.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to retrieve real-time stock data, manage watchlists, and perform comprehensive technical analysis using Yahoo Finance API. Provides 18+ tools for stock price tracking, trend analysis, volatility assessment, and financial indicators through MCP integration.MIT
- AlicenseCqualityDmaintenanceProvides AI agents with institutional-grade quantitative finance tools including real-time market data, paper trading via Alpaca, risk analysis with Monte Carlo simulations, backtesting, and multi-source news sentiment analysis for portfolio management and trading strategy development.315MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to access financial data and perform analysis by exposing AlphaVantage API endpoints as MCP tools, including company overview, income statement, balance sheet, cash flow, and earnings reports.1
- AlicenseNot gradedqualityDmaintenanceProvides 10 financial data tools (market data, economic indicators, news, insider trades, and calendars) via a single MCP layer, enabling any MCP-compatible LLM to access diverse financial data through a unified interface.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MalindaBotheju/financial-analyst-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server