Finance MCP Server
by blahaj-gifio.github.Blahaj-gif/hitl-finance-mcpv0.3.1
Market data, SEC filings and risk tools for Webull, Saxo and IBKR. Only you can send an order.
context tax
queued
security
queued
cold start
queued
freshness
Active28d ago
Install Finance MCP server
Install in Claude Code
claude mcp add hitl-finance -e WEBULL_APP_KEY='<webull-app-key>' -e WEBULL_APP_SECRET='<webull-app-secret>' -e SAXO_ACCESS_TOKEN='<saxo-access-token>' -e BLS_API_KEY='<bls-api-key>' -- uvx hitl-finance-mcpInstall in Cursor
{
"mcpServers": {
"hitl-finance": {
"command": "uvx",
"args": [
"hitl-finance-mcp"
],
"env": {
"WEBULL_APP_KEY": "<webull-app-key>",
"WEBULL_APP_SECRET": "<webull-app-secret>",
"SAXO_ACCESS_TOKEN": "<saxo-access-token>",
"BLS_API_KEY": "<bls-api-key>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"hitl-finance": {
"command": "uvx",
"args": [
"hitl-finance-mcp"
],
"env": {
"WEBULL_APP_KEY": "<webull-app-key>",
"WEBULL_APP_SECRET": "<webull-app-secret>",
"SAXO_ACCESS_TOKEN": "<saxo-access-token>",
"BLS_API_KEY": "<bls-api-key>"
}
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"hitl-finance": {
"type": "stdio",
"command": "uvx",
"args": [
"hitl-finance-mcp"
],
"env": {
"WEBULL_APP_KEY": "<webull-app-key>",
"WEBULL_APP_SECRET": "<webull-app-secret>",
"SAXO_ACCESS_TOKEN": "<saxo-access-token>",
"BLS_API_KEY": "<bls-api-key>"
}
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"hitl-finance": {
"command": "uvx",
"args": [
"hitl-finance-mcp"
],
"env": {
"WEBULL_APP_KEY": "<webull-app-key>",
"WEBULL_APP_SECRET": "<webull-app-secret>",
"SAXO_ACCESS_TOKEN": "<saxo-access-token>",
"BLS_API_KEY": "<bls-api-key>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| WEBULL_APP_KEY | — | yes | Webull OpenAPI app key. Without it prices fall back to Yahoo and the account and order tools are unavailable; everything else still works. |
| WEBULL_APP_SECRET | — | yes | Webull OpenAPI app secret. Signs every request; the app key alone cannot authenticate. |
| WEBULL_REGION_ID | — | — | Webull region: us, hk, jp, sg, th, my, uk, au, eu, br, mx, za. |
| WEBULL_ENVIRONMENT | — | — | prod trades the real account. paper repoints the ENTIRE client at Webull's sandbox, quotes included, and needs separate sandbox credentials — production keys return 401 there. |
| FINANCE_BROKER | — | — | Which broker adapter the account and order tools use, and where prices come from: webull, saxo or ibkr. Only the tools the configured broker can serve are registered, so the tool list never advertises one that would refuse. Webull is the only adapter that has been run against a live account; saxo and ibkr are written from published documentation and say so in every result they produce. |
| SAXO_ACCESS_TOKEN | — | yes | Only for FINANCE_BROKER=saxo. A 24-hour simulation token comes from Saxo's Developer Portal with no approval process and no live money; live access needs the OAuth2 code flow. UNVERIFIED ADAPTER. |
| SAXO_ENVIRONMENT | — | — | sim or live. Selects Saxo's simulation gateway or the live one. |
| IBKR_BASE_URL | — | — | Only for FINANCE_BROKER=ibkr. This is the Client Portal Web API, not the TWS socket API: run IBKR's Client Portal Gateway and log in at https://localhost:5000 in a browser first. A paper account works and is the better choice. UNVERIFIED ADAPTER. |
| IBKR_TLS_INSECURE | — | — | Set to 1 to accept the Client Portal Gateway's self-signed certificate unverified, or point IBKR_CACERT at it instead. This is a decision about the connection carrying your orders, so it is never made for you. |
| SEC_USER_AGENT | — | — | A descriptive User-Agent with a real contact address, e.g. 'Jane Doe (jane@example.com)'. The SEC's fair-access policy requires it and the filings tools refuse to send requests without one rather than risk an IP ban. |
| BLS_API_KEY | — | yes | Optional. BLS allows 25 macro queries a day without a key; a free key raises it to 500 and extends history from 10 to 20 years. |
Freshness
Active — last maintenance signal 28d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-09-12 · 28d ago · GitHub
Latest release
2026-08-12 · 58d ago · GitHub · v0.3.1
Package published
no data · npm/PyPI
Registry entry updated
2026-08-12 · 58d ago · official registry · v0.3.1
FAQ
›How do I install the Finance MCP server in Claude Code?
Run: claude mcp add hitl-finance -e WEBULL_APP_KEY='<webull-app-key>' -e WEBULL_APP_SECRET='<webull-app-secret>' -e SAXO_ACCESS_TOKEN='<saxo-access-token>' -e BLS_API_KEY='<bls-api-key>' -- uvx hitl-finance-mcp. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Finance require an API key?
Yes. It expects WEBULL_APP_KEY, WEBULL_APP_SECRET, SAXO_ACCESS_TOKEN, BLS_API_KEY, of which 4 are secrets.
›Can I use Finance as a remote (hosted) MCP server?
No hosted endpoint is published; it runs locally over stdio.
›Is Finance in the official MCP registry?
Yes, as io.github.Blahaj-gif/hitl-finance-mcp.
Alternatives to Finance
Other finance & fintech MCP servers.