iol-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
iol-mcp
An unofficial Model Context Protocol (MCP) server for the InvertirOnline (IOL) REST API, the Argentine retail broker.
It lets AI agents such as Claude Code read your portfolio and account statement, fetch quotes and historical series, check MEP dollar rates, browse mutual funds (FCIs), and, only if you explicitly enable it, place and cancel orders.
Disclaimer
This project is not affiliated with, endorsed by, or supported by InvertirOnline or any of its companies. "InvertirOnline" is a trademark of its owner.
Use at your own risk. Software that can place orders with real money can lose real money. The authors accept no liability for any loss, including losses caused by bugs, API changes, or mistakes made by an AI agent. Nothing here is financial advice.
Trading is disabled by default. Tools that buy, sell, cancel, subscribe or redeem are not even registered unless you set
ENABLE_TRADING=true. Leave it off unless you understand what you are enabling, and consider using it only with an agent that asks you to confirm each action.Your IOL credentials are used to log in to the IOL API from the machine running this server. The server has no authentication of its own, so keep it on a machine and network you trust.
Related MCP server: upstox-mcp-server
Quick start
You need an InvertirOnline account with API access and either Docker or Node.js 24+.
1. Configure credentials
cp .env.example .env
# edit .env and set IOL_USERNAME and IOL_PASSWORDSee Configuration for all variables.
2. Run the server
Docker, prebuilt image (published by CI to GitHub Container Registry):
docker run -d --name iol-mcp --restart unless-stopped \
--env-file .env -p 127.0.0.1:7577:7577 \
ghcr.io/ejgonzalez90/iol-mcp:latestDocker Compose, built locally:
docker compose up -dNode.js, from source (no build step):
npm ci
npm run devThe Node.js options read credentials from the process environment, not from .env; for example
node --env-file=.env dist/index.js after npm run build, or export the variables in your shell.
The server listens on http://0.0.0.0:7577/mcp using the MCP Streamable HTTP transport. The
examples publish it on 127.0.0.1 only, because the server has no authentication of its own;
drop the 127.0.0.1: prefix only if you put it behind something that does.
3. Connect a client
Claude Code:
claude mcp add --transport http iol-mcp http://localhost:7577/mcpAny other MCP client that supports Streamable HTTP (check your client's documentation for the exact config file and key names):
{
"mcpServers": {
"iol-mcp": {
"type": "http",
"url": "http://localhost:7577/mcp"
}
}
}Configuration
Variable | Required | Default | Description |
| Yes* | IOL account username (email). | |
| Yes* | IOL account password. | |
| No |
| Override the API base URL (for a mock or sandbox). |
| No |
| Set to exactly |
| No |
| HTTP port. |
* The server logs in lazily on the first API call using these variables and renews the short-lived
bearer token automatically. If they are unset you can instead call the authenticate tool with
explicit credentials.
On startup the server logs one line stating whether trading is enabled and how many trading tools
were registered or skipped. Credentials are never logged; only set/MISSING is shown.
Tools
34 tools in total: 26 read-only and 8 that require ENABLE_TRADING=true.
Authentication
Tool | Description |
| Authenticate with InvertirOnline (defaults to the |
Account (read-only)
Tool | Description |
| Investment portfolio for a country ( |
| Account statement showing available cash and positions. |
| Authenticated client's profile data. |
| List operations with optional filters. |
| Details of a specific operation by number. |
| Pending notifications for the authenticated user. |
Quotations (read-only)
Tool | Description |
| Current price quotation for a security. |
| Detailed quotation (order book, last trades) for a security. |
| Historical price series for a security between two dates. |
| All current quotations for an instrument type and country. |
| Quotations for a specific panel (e.g. a market index panel). |
Securities (read-only)
Tool | Description |
| Available instrument types for a country. |
| Available panels for an instrument type and country. |
| General information about a listed security. |
| Options chain for a security. |
Mutual funds, FCI (read-only)
Tool | Description |
| All available mutual funds. |
| Details and current NAV for a specific fund. |
| Available fund types. |
| Fund management companies (administradoras). |
| Funds offered by an administrator, optionally filtered by type. |
MEP dollar rates (read-only)
Tool | Description |
| Current MEP (dollar) reference rate. |
| MEP reference rate for a specific underlying bond symbol (e.g. |
Simplified operations (read-only)
Tool | Description |
| Estimated buy amounts for a simplified (one-click) operation. |
| Parameters for a simplified operation type. |
| Validate a simplified operation before submitting. |
Trading (requires ENABLE_TRADING=true)
These tools are not registered unless ENABLE_TRADING=true.
Tool | Description |
| Place a buy order for a security on an Argentine or US market. |
| Place a sell order for a security on an Argentine or US market. |
| Buy a foreign (D) security (EspecieD, MEP/CCL dollar-linked). |
| Sell a foreign (D) security (EspecieD, MEP/CCL dollar-linked). |
| Subscribe (invest) in a mutual fund. |
| Redeem (withdraw) from a mutual fund. |
| Cancel a pending operation by its number. |
| Place a simplified (one-click) buy order. |
Development
npm ci
npm run dev # run from source with tsx (no build)
npm run lint # eslint
npm run build # tsc -> dist/
npm test # vitest; all tests mock fetch and never touch the networkHot reload in Docker (mounts src/, restarts on save):
docker compose -f docker-compose.dev.yml up --buildBuild the production image locally:
docker build --target runtime -t iol-mcp:latest .When NODE_ENV is not production, GET /debug returns server health, uptime, and the active
session count (credentials are reported only as set/MISSING). The production image sets
NODE_ENV=production, which disables it.
To add a tool, register it with server.registerTool(...) in src/tools/ and make all HTTP calls
through apiRequest() in src/client.ts. A tool that moves money or changes broker state must go
in src/tools/trading.ts and be added to TRADING_TOOL_NAMES so the ENABLE_TRADING guard covers
it.
License
MIT © 2026 ejgonzalez90
This server cannot be deployed
Maintenance
Related MCP Connectors
Agentic brokerage access to a US brokerage account: quotes, orders, positions, cash and documents.
Live stock quotes, a stock screener, crypto prices and FX rates as agent tools.
Unified financial infrastructure connecting AI agents directly to trade live/demo brokerage accounts, Web3 non-custodial wallets, real-time market data across equities, ETFs, crypto, forex, options, DeFi swaps, and prediction markets, institutional research feeds, and algorithmic strategy backtesters.
Connect brokerage accounts to AI assistants: holdings, orders, asset lookup, and approved trading.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Trading212 brokerage accounts, including portfolio analysis, order placement (demo mode), and investment pie management.5MIT
- FlicenseNot gradedqualityCmaintenanceEnables LLM agents to analyze portfolios and execute orders on the Indian stock market via Upstox API v2 using natural language.-
- AlicenseAqualityDmaintenanceEnables AI agents to trade on Interactive Brokers: check quotes, balance, positions, and execute buy/sell orders (including fractional shares by dollar amount) via the Client Portal API.2014MIT
- AlicenseAqualityDmaintenanceEnables LLM agents to interact with Interactive Brokers accounts for market data, account info, and order entry with built-in risk controls and a two-step confirmation flow.9MIT