spark-ordernet-mcp
This server provides read-only access to Spark / Ordernet brokerage accounts, enabling portfolio analysis, transaction history, order status, security lookup, price data, and market news without allowing any trading or account modification.
Accounts: List all brokerage accounts accessible to the login.
Portfolio: View current holdings including positions (quantity, cost, market value, % of portfolio, last price), account summary (total value, cash, credit, withdrawable), and securities totals.
Transactions: Retrieve transaction history (buys, sells, dividends, fees, deposits, withdrawals) between two dates, with support for foreign-currency ledgers and automatic year-splitting.
Orders: View orders for a given day with status, fills, and prices.
Order History: Get detailed execution and status history for a specific order.
Standing Orders: List recurring or standing order definitions.
Yields: Obtain account return and value series for a specified year (monthly or daily), including nominal, real, and dollar yields, deposits, etc.
Search Securities: Find securities by symbol, name, or TASE number; returns topic keys for further lookups.
Resolve Securities: Resolve security identifiers to public display metadata.
Price History: Retrieve daily OHLCV (open, high, low, close, volume) price history for a security by its topic key.
Latest News: Fetch the latest market news items from Spark.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@spark-ordernet-mcp show my current holdings in Meitav Trade"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Spark Ordernet MCP
Read-only MCP access to Spark / Ordernet brokerage accounts, including Meitav Trade. The server exposes current holdings, transactions, orders, returns, security lookup, price history, standing orders, and market news.
The authenticated client is constrained to an exact GET allowlist. Authentication is the only POST request; order entry, cancellation, money movement, currency conversion, and account changes are not reachable.
Requirements
Python 3.11 or newer
A supported Spark / Ordernet brokerage login
Related MCP server: kiwoom-mcp-server
Run the MCP server
Use the packaged command directly from GitHub:
uvx --from git+https://github.com/anhermon/spark-ordernet-mcp \
spark-ordernet-mcpConfigure an MCP client with credentials supplied only through its environment:
{
"mcpServers": {
"ordernet": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/anhermon/spark-ordernet-mcp",
"spark-ordernet-mcp"
],
"env": {
"ORDERNET_BROKER": "meitav",
"ORDERNET_USERNAME": "${ORDERNET_USERNAME}",
"ORDERNET_PASSWORD": "${ORDERNET_PASSWORD}"
}
}
}
}Supported broker slugs include meitav, psagot, ibi, nesua, and gaon.
Install the Codex skill
Ask Codex to install:
https://github.com/anhermon/spark-ordernet-mcp/tree/main/spark-ordernetOr clone the repository and copy spark-ordernet/ into
~/.codex/skills/spark-ordernet/.
Private portfolio report
After cloning the repository, create the ignored credential file and run:
cp .env.example .env
# Edit .env locally.
uv run --env-file .env python scripts/generate_portfolio_report.pyThe report is written atomically to reports/portfolio-analysis.html with mode
0600. Reusable broker snapshots are stored under the ignored
reports/.spark-cache/ directory with owner-only permissions. Completed years
are reused automatically, making subsequent reports faster and less dependent
on the broker's availability.
The report resolves numeric instrument IDs to safe public names when possible, normalizes income and fees to ILS using transaction-date FX, provides sortable historical-position columns, and plots indexed price action only across recorded holding lifecycles. Missing FX or market history is shown explicitly instead of being guessed.
--refreshrefreshes all historical snapshots.--offlinereproduces the last successful cached report.--no-cachedisables cache reads and writes for one run.--cache-ttl 300controls reuse of recent current-year snapshots.
The generated report and cache contain private financial data. They are ignored by Git and must not be published.
Development checks
Install the Git hooks once per clone:
uvx --from pre-commit pre-commit installThe hooks reject source and configuration files longer than 800 lines, run Ruff, and execute the unit-test suite. Run the same checks across the repository before pushing:
uvx --from pre-commit pre-commit run --all-filesGitHub Actions runs this command on every push and pull request. Individual checks can also be run directly:
uv run python scripts/check_file_size.py .
uv run python -m unittest discover -s tests
uv run --with ruff ruff check .License
MIT — see LICENSE.
Available Tools
11 toolsaccountsA
List the brokerage accounts this login can read.
Inputs: no named parameters.
latest_newsC
Latest market-news items available in Spark.
Inputs: no named parameters.
order_historyC
Execution and status history for one order returned by orders().
Inputs: order_key (required), date.
ordersC
Orders for a given day (YYYY-MM-DD, default today): status, fills, prices.
Inputs: date, account.
portfolioB
Current holdings, cash and totals for an account — the snapshot to analyse.
Returns positions (quantity, cost, market value, % of portfolio, last price), the account summary (value, cash, credit, withdrawable) and securities totals.
Inputs: account.
price_historyA
Daily OHLCV history for a security. topic_key looks like RZF_0000001 (TASE), KRN_0000002 (fund) or CLPS_999_EXMPL (foreign) — get it from resolve_securities, search_securities, or a position key from portfolio().
Inputs: topic_key (required), points, interval.
resolve_securitiesA
Resolve exact public security identifiers to safe display metadata.
The static universe is scanned once. Account-shaped topics and raw static rows are never returned. Ambiguous identifiers remain unresolved.
Inputs: identifiers (required).
search_securitiesA
Find a security by symbol, name or TASE number. Returns topic keys usable with price_history. The platform has no search endpoint — this searches the public static instrument universe the SPA itself searches client-side. Results contain only allowlisted public security metadata.
Inputs: query (required), limit.
standing_ordersB
Standing-order definitions visible to the authenticated login.
Inputs: no named parameters.
transactionsB
Account transaction history between two dates (YYYY-MM-DD).
Buys, sells, dividends, fees, deposits and withdrawals. The API returns garbage when a range spans calendar years, so ranges are split per year automatically. Set dollar=True for the foreign-currency ledger.
Inputs: end_date (required), start_date (required), dollar, account.
yieldsC
Account return/value series for a year, monthly-style or daily-style.
Monthly fields include NominalYield, RealYield, DollarYield, Value, and MONTH_DEPOSITE_WITHRWALS. Daily-style fields include Date, NominalYield, TheoreticalYield, Value, and Deposite.
Inputs: year (required), account, monthly.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool targets a distinct aspect: orders vs history, securities search vs resolution, accounts vs portfolio vs transactions. No two tools overlap in purpose.
Names mix plural nouns (orders, yields, accounts, portfolio) with verb_noun (search_securities, resolve_securities) and noun_noun patterns (price_history, order_history, standing_orders, latest_news). No single consistent convention.
11 tools cover a reasonable scope for a brokerage MCP: orders, history, positions, securities lookup, price data, news, accounts, and transactions. Not too few or too many.
Covers read operations well but lacks write tools like place_order, modify_standing_order, or cancel. Missing create/update/delete for orders and accounts, limiting full lifecycle coverage.
Maintenance
Related MCP Connectors
Trading MCP server for AI agents, with live market data, account reads and controlled execution.
Read-only MCP server for Belarusian securities: tokens, shares, bonds, companies.
Official Intrinio MCP server. US stock prices, options and fundamentals for AI agents.
Read-only finance MCP server. Connects your banks, cards, payment apps, books and payroll into one ledger for your AI. Can't move money. Open source (AGPL-3.0), free during beta.
Related MCP Servers
- AlicenseAqualityDmaintenanceA read-only MCP server that provides access to Charles Schwab account data and market information, including portfolio positions, real-time quotes, options chains, price history, and account balances through AI assistants.9MIT
- AlicenseAqualityBmaintenanceRead-only MCP server for Kiwoom Securities, enabling natural language queries of Korean stock market data and account information, including ISA tax status.49129 npm1MIT
- FlicenseNot gradedqualityDmaintenanceA read-only MCP server that exposes Interactive Brokers and Moomoo brokerage accounts as tools, enabling natural-language queries across positions, trade history, realized P&L, and sector exposure in one merged view.-

@luxalgo/broker-mcpofficial
AlicenseAqualityBmaintenanceA local MCP server that gives AI agents read-only access to real brokerage accounts across 16 brokers and exchanges, while keeping API keys on the user's machine. It enables portfolio overviews, positions, trade history, and performance statistics through natural-language queries.61MIT