MCP server
The Senti MCP server exposes the Senti Quant Public API to an AI assistant through the Model Context Protocol. Point Claude Code, Claude Desktop, Cursor or any MCP client at it, and you can ask about your accounts in plain language instead of writing HTTP calls.
It is open source (Koniverse/Senti-MCP,
MIT) and published on npm as
senti-mcp-server.
What you need
- Node.js 22.11.0 or newer. Node 20 reached end of life on 2026-04-30. If you
are still on it, pin
senti-mcp-server@1.4.0— the last release that runs there, with ten tools and no authoring support. - A Senti API key (
sq_live_…). Create one at the API Keys dashboard with these six read scopes:accounts:read,brokers:read,strategies:read,performance:read,trading:read,authoring:read.
There is no key-introspection endpoint, so a missing scope is not caught at
startup. It surfaces as a 403 naming the scope the first time you call a tool
that needs it — every other tool keeps working.
Install
No install step. npx fetches the package on first run. Add this to your MCP
client’s config:
{
"mcpServers": {
"senti": {
"command": "npx",
"args": ["-y", "senti-mcp-server"],
"env": {
"SENTI_API_KEY": "sq_live_..."
}
}
}
}
Restart the client and fourteen tools appear. To hold a specific release, pin it
in args: ["-y", "senti-mcp-server@2.8.1"] — 2.8.1 is npm’s current latest.
To put it on your PATH instead,
run npm install -g senti-mcp-server and set "command": "senti-mcp-server" with
no args.
The tools
Fourteen tools, all read-only.
One
GEThas no tool yet. The API gainedGET /api/v1/drafts/{draftId}/attachments/{attachmentId}— read a single attachment by id — after2.8.1shipped, so the server does not wrap it. Uselist_draft_attachmentswith itsfilenameargument to read one attachment, or call the endpoint directly through the API.
| Group | Tools |
|---|---|
| Accounts | list_accounts, list_account_strategies |
| Catalog | list_brokers, list_strategies |
| Trading | list_positions, list_pending_orders, list_deals |
| Performance | get_account_performance, get_performance_breakdowns, get_equity_timeseries |
| Authoring | get_authoring_conventions, list_drafts, get_draft, list_draft_attachments |
The id a tool returns is the accountId every other Senti endpoint takes.
login is your MT5 account number, not a key.
Three responses are deliberately shaped rather than returned whole, because the underlying endpoints can produce megabytes:
get_performance_breakdownskeeps at most 10 symbols, by largest absolute net P&L.get_equity_timeseriesdownsamples to at most 200 points, but always keeps the first point, the last point and the deepest drawdown, so the start, the end and the worst of the curve stay exact.list_draftsdrops source code, compiler logs and diagnostics; callget_draftfor one draft’s source.
Whatever was cut is reported in a notes field, which is empty when nothing was.
Narrow your date range for finer resolution.
A
409fromlist_positionsorlist_pending_ordersmeans the account’s MT5 terminal is offline — not that the account holds no positions. Performance tools have no409; an unreachable terminal arrives as a nullliveblock and is reported as unreachable rather than as zeroes.
Authoring MQL5 from your editor
Set SENTI_ENABLE_AUTHORING_WRITE and seven more tools are registered —
create_draft, update_draft, delete_draft, add_draft_attachment,
update_draft_attachment, delete_draft_attachment and compile_draft. That is
the whole write → build → read the errors → write again loop without leaving the
editor. Your key also needs the authoring:write scope.
"env": {
"SENTI_API_KEY": "sq_live_...",
"SENTI_ENABLE_AUTHORING_WRITE": "1"
}
Leave it unset — or set it to 0, false, no or off — and none of the seven
are registered, so there is nothing a model can call by accident.
Four things worth knowing before you turn it on:
update_draftis a full replace, not a patch. BothnameandsourceCodeare always written, so send the complete draft every time. Sending only what you changed deletes the rest of the file.- The two delete tools pause for a human.
delete_draftanddelete_draft_attachmentask for explicit confirmation through MCP elicitation, because nothing here can undo them. On a client that does not support elicitation they cannot be used at all — deliberately, rather than degraded to a silent delete. - Call
get_authoring_conventionsfirst. Code that breaks the platform rules is rejected by a static scan before it reaches the compiler, and compile slots are globally serial, so learning a rule by failing a compile is slow. - A failed build is not an error.
compile_draftsucceeds and reportsok: falsewith diagnostics. Read the result rather than retrying.
What it cannot do
No trading writes. Closing a position, cancelling an order, stopping a strategy
and deploying one to an account have no tool, deliberately. They sit behind
different scopes (trading:write, strategies:write) and no setting of
SENTI_ENABLE_AUTHORING_WRITE reaches them.
No registering an authored EA. POST /api/v1/drafts/{draftId}/register is
left out on purpose, because no tool in the authoring surface can delete what it
would create. Register from the API or the dashboard.
Security
The API key is read from the environment and never appears in a tool’s input schema. A tool parameter would live in the model’s context, and from there in transcripts and logs; an environment variable does not. The test suite asserts the key appears in no error message.
Everything the server can reach is what your key’s scopes allow — the same non-custodial boundary as the rest of Senti. See non-custodial permissions.
Troubleshooting
A valid-looking key returns 401. Keys are bound to the environment that
issued them. SENTI_API_BASE_URL defaults to the production API, so a key created
against a different environment is rejected however valid it is. Check that the
key and the base URL belong to the same environment before regenerating the key.
A tool you expect is missing. npx -y senti-mcp-server resolves to whatever
npm’s latest tag points at. Run npm view senti-mcp-server dist-tags to see what
that is, and pin a version in args if you need a specific one. The authoring read
tools arrived across 2.1.0–2.4.0; the write tools in 2.5.0–2.8.0.
Nothing appears after editing the config. Most clients only read their MCP config at startup. Restart the client fully.
Related
- API reference: the endpoints every tool wraps.
- Security: how Senti handles keys and access.
- Non-custodial permissions: what trade-only access means.