1. Conduid
  2. Science
  3. FinanceMCPSuite
MCP server · Science

FinanceMCPSuite

Three MCP servers exposing financial strategy data (metadata, P&L history, risk attribution) with a rich CLI. Built with Python, FastMCP, Pydantic, NumPy, and Click.

Unclaimed science
34Low

Scored 4 months ago · breakdown

About FinanceMCPSuite

FinanceMCPSuite is an MCP server in the Science category: three MCP servers exposing financial strategy data (metadata, P&L history, risk attribution) with a rich CLI. Built with Python, FastMCP, Pydantic, NumPy, and Click. It has been installed 0 times through Conduid.

Install

Clone
git clone https://github.com/MrRobotop/financeMCPSuite

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

Ask AI about FinanceMCPSuite

Powered by Claude · Grounded in docs

I know everything about FinanceMCPSuite. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ·README presentNot checked yet.
  • ·License declaredNot checked yet.
  • ·Tests presentNot checked yet.
  • ·Dependencies pinnedNot checked yet.
  • ·No dynamic code executionNot checked yet.
  • ·Scoped permissionsNot checked yet.

README

Finance MCP Suite

**Built by Rishabh Patil **

A collection of three Model Context Protocol servers that expose financial strategy data — metadata, P&L history, and risk attribution — to any MCP-compatible client (Claude Desktop, Claude Code, custom agents, or the bundled CLI).

All servers share a single SQLite database seeded with 20 realistic mock strategies across equity, futures, and FX asset classes, each with 3+ years of synthetic daily P&L data (850+ trading days). No external data source or API key required.


Getting Started

Prerequisites

  • Python 3.11+
  • pip (or any PEP 517-compatible installer)

1. Clone and install

git clone https://github.com/MrRobotop/financeMCPSuite.git
cd financeMCPSuite
pip install -e ".[dev]"

This installs the package in editable mode with all dependencies (mcp, pydantic, click, numpy, pandas, rich) and dev tools (pytest, ruff).

2. Verify the install

finance-mcp --help

You should see:

Usage: finance-mcp [OPTIONS] COMMAND [ARGS]...

  Finance MCP Suite — query investment strategy data from the CLI.

Options:
  --json      Output raw JSON instead of formatted tables.
  -h, --help  Show this message and exit.

Commands:
  get-correlation  Show pairwise return correlations across strategies.
  get-drawdowns    List every drawdown episode for a strategy.
  get-metrics      Compute full risk-adjusted performance metrics.
  get-pnl          Show daily P&L for a strategy over a date range.
  get-portfolio    Compute metrics for a weighted basket of strategies.
  get-risk         Show factor risk attribution for a strategy.
  get-strategy     Show full specification for a single strategy.
  list-strategies  List all investment strategies with optional filtering.
  stress-test      Show how strategies performed during a specific window.

3. Run the tests

pytest tests/ -v

All 304 tests pass across data-store, metric formulas, MCP tool integration, and CLI.

4. Try the CLI

# List all live equity strategies
finance-mcp list-strategies --status live --asset-class equity

# Full detail on a strategy
finance-mcp get-strategy FUT_RATES_TREND_001

# Recent P&L (last 30 trading days shown)
finance-mcp get-pnl EQLS_US_MOM_001

# P&L for a specific date range, export to CSV
finance-mcp get-pnl FX_CARRY_G10_001 --start 2025-01-01 --end 2025-06-30 --export csv

# Full performance metrics (Sharpe, Sortino, Calmar, drawdown, etc.)
finance-mcp get-metrics FUT_RATES_TREND_001

# Performance metrics with a 4% risk-free rate
finance-mcp get-metrics EQLS_US_MOM_001 --rf 0.04

# Risk attribution (factor decomposition)
finance-mcp get-risk EQLS_US_MOM_001 --period 90d

# Correlation heat-map across selected strategies (2024–2025)
finance-mcp get-correlation --strategies EQLS_US_MOM_001,FUT_RATES_TREND_001,FX_CARRY_G10_001 --start 2024-01-01 --end 2025-12-31

# All drawdown episodes deeper than 3% for a strategy
finance-mcp get-drawdowns EQLS_US_MOM_001 --min-depth 3

# Weighted portfolio metrics (weights are auto-normalised)
finance-mcp get-portfolio --holdings EQLS_US_MOM_001:0.5,FUT_RATES_TREND_001:0.3,FX_CARRY_G10_001:0.2

# Stress-test the whole book over a specific period
finance-mcp stress-test --start 2025-03-01 --end 2025-03-31

# Raw JSON output (pipe to jq, save to file, etc.)
finance-mcp --json get-metrics FX_CARRY_G10_001 | jq '.sharpe_ratio'

CLI Reference

finance-mcp [--json] <command> [options]

list-strategies

Browse the full strategy catalogue with optional filters.

finance-mcp list-strategies [--status live|paper|retired] [--asset-class equity|futures|fx]
Option Description Default
--status Filter by lifecycle status all
--asset-class Filter by asset class all

get-strategy <id>

Show the full specification for a single strategy.

finance-mcp get-strategy EQLS_US_MOM_001

get-pnl <id>

Show the daily P&L table for a strategy.

finance-mcp get-pnl EQLS_US_MOM_001 [--start YYYY-MM-DD] [--end YYYY-MM-DD] [--rows N] [--export csv]
Option Description Default
--start First date (ISO 8601) series start
--end Last date (ISO 8601) latest
--rows Max rows to display (0 = all) 30
--export Output format: csv rich table

get-metrics <id>

Compute comprehensive risk-adjusted performance metrics.

finance-mcp get-metrics EQLS_US_MOM_001 [--start YYYY-MM-DD] [--end YYYY-MM-DD] [--rf RATE]
Option Description Default
--start Window start series start
--end Window end latest
--rf Risk-free rate (decimal, e.g. 0.05) 0.0

get-risk <id>

Show factor risk attribution for a strategy.

finance-mcp get-risk EQLS_US_MOM_001 [--period 30d|90d|1y]
Option Description Default
--period Historical snapshot: 30d, 90d, or 1y latest

get-correlation

Show pairwise return correlation heat-map across strategies.

finance-mcp get-correlation [--strategies ID,ID,...] [--start YYYY-MM-DD] [--end YYYY-MM-DD]
Option Description Default
--strategies Comma-separated IDs to include all 20
--start / --end Date window full history

get-drawdowns <id>

List every drawdown episode for a strategy.

finance-mcp get-drawdowns EQLS_US_MOM_001 [--start YYYY-MM-DD] [--end YYYY-MM-DD] [--min-depth PCT]
Option Description Default
--min-depth Minimum depth (%) to include 1.0
--start / --end Date window full history

get-portfolio

Compute risk-adjusted metrics for a weighted basket of strategies.

finance-mcp get-portfolio --holdings ID:W,ID:W,... [--start YYYY-MM-DD] [--end YYYY-MM-DD] [--rf RATE]
Option Description Default
--holdings strategy_id:weight pairs (required)
--rf Risk-free rate 0.0
--start / --end Date window full history

Weights are auto-normalised, so 60:40 and 0.6:0.4 produce identical results.


stress-test

Show how every strategy (or a subset) performed during a specific date window.

finance-mcp stress-test --start YYYY-MM-DD --end YYYY-MM-DD [--strategies ID,ID,...]
Option Description Default
--start Window start (required)
--end Window end (required)
--strategies Comma-separated IDs all 20

Results are sorted worst → best by cumulative return.


Global flags

Flag Description
--json Output raw JSON (works on all commands)
-h / --help Help text on any command

Project Layout

financeMCPSuite/
├── mcp_servers/
│   ├── strategy_metadata/server.py   # Strategy info (names, AUM, status, authors)
│   ├── pnl_history/server.py         # Daily P&L, cumulative returns, all analytics
│   └── risk_attribution/server.py    # Factor-based risk decomposition
├── shared/
│   ├── models.py                     # Pydantic models + metric calculations
│   └── data_store.py                 # SQLite data layer (20 strategies, 3yr PnL)
├── cli/
│   └── query.py                      # Click CLI with Rich-formatted output
├── tests/
│   ├── conftest.py                   # Shared fixtures (isolated test DB)
│   ├── test_metadata.py              # Strategy metadata tests
│   ├── test_pnl.py                   # PnL + metric formula + P3 tool tests
│   ├── test_risk.py                  # Risk attribution tests
│   └── test_cli.py                   # CLI tests (all commands, patched _fetch)
├── .github/workflows/ci.yml          # CI: lint + test on Python 3.11 & 3.12
├── QA_LOG.md                         # Live Q&A log from real server responses
├── IMPROVEMENTS.md                   # Improvement roadmap
├── Makefile                          # Developer shortcuts
└── README.md

MCP Servers

Each server runs over stdio transport and is compatible with any MCP client.

finance-strategy — Strategy Metadata

Tool Description
list_strategies(status?, asset_class?) Filtered catalogue with aggregate stats
get_strategy(strategy_id) Concise summary: name, type, AUM, status, author
get_strategy_metadata(strategy_id) Full spec: universe, rebalance frequency, description

Resource: strategies://catalogue — full JSON snapshot of all 20 strategies.

Strategy ID format: {ASSET}_{REGION}_{SIGNAL}_{VERSION} — e.g., EQLS_US_MOM_001, FUT_RATES_TREND_001, FX_CARRY_G10_001.

finance-pnl — PnL History & Analytics

Tool Description
get_daily_pnl(strategy_id, start_date?, end_date?) Daily P&L series with NAV
get_cumulative_pnl(strategy_id, start_date?, end_date?) Cumulative return series (rebased to 0)
get_performance_metrics(strategy_id, ...) Sharpe, Sortino, Calmar, max drawdown, win rate, skewness, kurtosis
get_correlation_matrix(strategy_ids?, start_date?, end_date?) Pairwise correlations + most/least correlated pairs
get_drawdown_periods(strategy_id, min_depth_pct?) Every drawdown episode with depth, duration, recovery status
get_portfolio_metrics(strategy_ids, weights, ...) Blended metrics for a weighted basket
get_stress_test(start_date, end_date, strategy_ids?) Cross-strategy performance in a date window
get_latest_pnl(strategy_id) Most recent single-day snapshot
get_top_performers(n?, lookback_days?) Cross-strategy ranking by recent PnL

finance-risk — Risk Attribution

Tool Description
get_risk_attribution(strategy_id, snapshot_date?) Factor contributions + total volatility
get_factor_exposure(factor_name) All strategies ranked by exposure to one factor
compare_risk(strategy_id_a, strategy_id_b) Side-by-side risk comparison
list_risk_factors() Available factor names

Factors: market_beta, sector_rotation, rates_duration, fx_exposure, credit_spread.

Resource: risk://factors — list of available factors.


Connect to Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "finance-strategy": {
      "command": "python",
      "args": ["-m", "mcp_servers.strategy_metadata.server"],
      "cwd": "/absolute/path/to/financeMCPSuite"
    },
    "finance-pnl": {
      "command": "python",
      "args": ["-m", "mcp_servers.pnl_history.server"],
      "cwd": "/absolute/path/to/financeMCPSuite"
    },
    "finance-risk": {
      "command": "python",
      "args": ["-m", "mcp_servers.risk_attribution.server"],
      "cwd": "/absolute/path/to/financeMCPSuite"
    }
  }
}

Tip: Replace "python" with the absolute path to the Python binary used to install the package (e.g. /usr/local/bin/python3.12).

Restart Claude Desktop. Example prompts:

  • "List all live equity strategies"
  • "Build a 50/50 portfolio of EQLS_US_MOM_001 and FUT_RATES_TREND_001 and show its risk metrics"
  • "How did all strategies perform during the March 2025 selloff?"
  • "Compare the risk profiles of EQLS_US_MOM_001 and FX_CARRY_G10_001"

Connect to Claude Code

In the project directory, register the servers:

claude mcp add finance-strategy -- python -m mcp_servers.strategy_metadata.server
claude mcp add finance-pnl      -- python -m mcp_servers.pnl_history.server
claude mcp add finance-risk     -- python -m mcp_servers.risk_attribution.server

All tools are immediately available inside Claude Code sessions — no restart required.


Synthetic Data

The SQLite database is auto-generated on first run and contains:

  • 20 strategies across equity (7), futures (7), and FX (6) with a mix of live (11), paper (5), and retired (4) statuses
  • 850+ trading days of daily PnL per strategy (Jan 2023 – Apr 2026)
  • Realistic return properties: Sharpe ratios 0.3 – 2.1, fat-tail shocks (negative skew for equity/carry, positive for trend-following), AR(1) momentum, volatility targets 6%–20%
  • 24 months of monthly factor risk attribution snapshots per strategy

Fully reproducible (seeded RNG). Delete finance_data.db to regenerate.


Performance Metrics

All formulae are implemented from scratch in shared/models.py:

Metric Formula
Total Return ∏(1 + rᵢ) − 1
Annualised Return (CAGR) growth^(252/n) − 1
Annualised Volatility std(r, ddof=1) × √252
Sharpe Ratio mean(excess_r) × √252 / std(excess_r, ddof=1)
Sortino Ratio (R_annual − R_f) / downside_vol
Calmar Ratio `R_annual /
Max Drawdown min((equity − running_peak) / running_peak)
Win Rate count(r > 0) / n
Profit Factor `∑positive_r /
Skewness Fisher bias-corrected (Joanes & Gill 1998)
Excess Kurtosis Fisher bias-corrected, 0 = Normal

Developer Commands

make install     # pip install -e ".[dev]"
make test        # pytest tests/ -v
make test-fast   # pytest tests/ -q
make lint        # ruff check .
make fmt         # ruff format .
make serve-pnl   # run the PnL server standalone
make serve-risk  # run the risk server standalone
make clean       # remove __pycache__, *.pyc, finance_data.db

Tech Stack

  • MCP SDK — Model Context Protocol server framework
  • Pydantic v2 — data validation and serialisation
  • NumPy — synthetic return generation and correlation math
  • pandas — metric calculations
  • Click — CLI framework
  • Rich — terminal formatting (coloured tables, panels, spark bars)
  • SQLite — zero-config embedded database
  • pytest — test framework (304 tests)
  • ruff — linting and formatting

Live Q&A Log

See QA_LOG.md for 9 real questions answered by the running MCP servers — covering strategy discovery, drawdown analysis, portfolio construction, stress-testing, correlations, and risk decomposition.


Authors

Rishabh Patil — design, architecture, co-implementation, tests, documentation and product direction Claude (Anthropic) — co-implementation


License

MIT

README mirrored from the source repository 4 months ago. The original is authoritative.

Questions

About FinanceMCPSuite

How do I install FinanceMCPSuite?

Run git clone https://github.com/MrRobotop/financeMCPSuite, then add the server to your MCP client's configuration. Conduid has recorded 0 installs, so the command is known to work with current clients.

Is FinanceMCPSuite safe to use with an AI agent?

Its trust score is 34 out of 100 (low). Conduid hasn't run static security checks on this repository yet, so review the source yourself before granting it credentials. It has no ConduID identity yet, so agent calls to it are not receipted.

Is FinanceMCPSuite still maintained?

Conduid hasn't recorded a commit date for this repository yet. Check the repository directly for recent activity.