finance-agent

arturio-amorim/finance-agent-mcp
0 starsMITCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Enables AI agents to call deterministic finance tools (compound interest, loan payment, currency conversion, etc.) through MCP, with a shared tool registry used by both the agent loop and MCP clients.

README.md

๐Ÿค– Finance Agent + MCP

!Python !License: MIT !MCP !Tool use

An LLM agent that answers finance questions by calling tools (it never does the math itself), and exposes those same tools as an MCP server so any MCP client โ€” like Claude Desktop โ€” can use them too.

The idea worth stealing: the tools live in one registry and are exposed twice โ€” to the agent loop and to MCP. Define once, no drifting schemas. That's the kind of structure that scales on a team.

โœจ Features

  • Tool-use agent loop with multi-step tool calls and a printed tool trace.
  • MCP server (FastMCP) exposing the same tools to any MCP host.
  • Provider-swappable โ€” Anthropic Claude (default) or OpenAI, one env var.
  • Deterministic finance tools, unit-tested with no API key.

๐Ÿงฐ Tools

| Tool | What it computes | |---|---| | compound_interest | future value of a lump sum | | cagr | compound annual growth rate (%) | | loan_payment | monthly payment for an amortizing loan | | future_value_of_savings | future value of monthly contributions | | convert_currency | FX conversion (static sample rates) |

๐Ÿ—๏ธ Architecture

flowchart LR
    R["Shared tool registry<br/>(finagent.tools)"] --- Agent["Agent loop<br/>Claude / OpenAI"]
    R --- MCP["MCP server<br/>(FastMCP)"]
    U[User] --> Agent --> Ans[Answer + tool trace]
    Host["MCP client<br/>(Claude Desktop)"] --> MCP

More in docs/architecture.md.

๐Ÿš€ Quickstart

# Install (Python 3.10+)
pip install -e .
pip install -r requirements.txt

# Configure
cp .env.example .env       # add ANTHROPIC_API_KEY (or set LLM_PROVIDER=openai)

# Ask the agent (it will call tools and show its work)
python scripts/chat.py "If I save $300/month at 8% for 25 years, how much will I have?"
python scripts/chat.py "Monthly payment on a $250k mortgage at 6.5% over 30 years?"
python scripts/chat.py "Convert 5000 BRL to USD, then grow it at 10% for 5 years."

Example output:

=== Tool calls ===
  โ€ข future_value_of_savings({'monthly_contribution': 300, 'annual_rate_pct': 8, 'years': 25}) -> {'future_value': 285809.08, ...}
=== Answer ===
Saving $300/month at 8% for 25 years grows to about $285,809.

๐Ÿ”Œ Use it from Claude Desktop (MCP)

Run the server:

python -m finagent.mcp_server

Then add it to your Claude Desktop config (claude_desktop_config.json). Use the Python from the env where you installed the package:

{
  "mcpServers": {
    "finance-agent": {
      "command": "python",
      "args": ["-m", "finagent.mcp_server"]
    }
  }
}

Claude can now call compound_interest, loan_payment, etc. directly.

๐Ÿ—‚๏ธ Project structure

finance-agent-mcp/
โ”œโ”€โ”€ src/finagent/
โ”‚   โ”œโ”€โ”€ tools.py        # the shared tool registry (pure functions + schemas)
โ”‚   โ”œโ”€โ”€ agent.py        # provider-swappable tool-use loop
โ”‚   โ”œโ”€โ”€ mcp_server.py   # exposes the registry over MCP (FastMCP)
โ”‚   โ””โ”€โ”€ config.py
โ”œโ”€โ”€ scripts/chat.py     # CLI agent
โ”œโ”€โ”€ tests/test_tools.py # pure unit tests (no key)
โ””โ”€โ”€ docs/architecture.md

โœ… Tests

pytest -q     # tests the finance math directly โ€” no API key required

๐Ÿงญ Roadmap

  • [x] Tool registry + 5 finance tools (unit-tested)
  • [x] Tool-use agent loop (Claude / OpenAI)
  • [x] MCP server exposing the same tools
  • [ ] Add a live FX-rate tool + a market-data tool
  • [ ] Streaming responses + a small web UI
  • [ ] Trace/observability hooks (tie in with project #3)

๐Ÿ“„ License

MIT โ€” see LICENSE.

---

Built by Arturio Amorim Sobrinho โ€” AI/LLM Engineer. GitHub ยท LinkedIn

Related MCP servers

Browse all โ†’