Learn / Exchange & Broker MCP

Binance MCP server setup

Figures on this page are as of 2026-09. Fees, limits and margin tiers change — check the venue's own docs before acting on a number.

We found no official Binance MCP server — what exists is community code. And the most prominent of those, AnalyticAce/binance-mcp-server, differs from the best of its peers in one important way: trading operations are available by default, with no documented mechanism to disable them.

That is not a criticism of the project, which is clear about what it does. It is a statement about where your safety has to come from when you use it.

Install

pip install binance-mcp-server
# or
uv add binance-mcp-server

Credentials:

BINANCE_API_KEY
BINANCE_API_SECRET
BINANCE_TESTNET     # optional, default false

The documentation recommends “Use testnet for development and safe testing” and carries a plain disclaimer: “Cryptocurrency trading involves financial risk. Always use the Binance Testnet for testing and development,” noting the software is for educational purposes and that the developers are not responsible for losses.

What it exposes

Six categories:

CategoryTools
Account & portfolio4
Market data & analysis3
Trading operations2 — includes create_order
Performance & analytics2
Wallet & transfers3
Risk management1

Two things to notice.

create_order is present and reachable on a default run. There is no TRADING_ENABLED-style gate documented, unlike the Bybit community server which ships trading off until you set an environment variable.

“Wallet & transfers” exists as a category. Transfers move value between accounts. Whether those tools are reachable depends on the key’s permission flags, which is the point of the next section.

So the key is doing all the work

With no in-server gate, the boundary that decides what can happen is the Binance API key, enforced by Binance rather than by anything on your machine.

Start read-only. A key with enableReading and nothing else cannot place an order regardless of what the server exposes or how the model is prompted.

Verify rather than remember, at process start:

GET /sapi/v1/account/apiRestrictions

It returns ipRestrict, createTime, enableReading, enableWithdrawals, enableInternalTransfer, enableMargin, enableFutures and permitsUniversalTransfer. Assert the values you expect and refuse to run if they differ. Given a “Wallet & transfers” tool category, checking enableInternalTransfer and permitsUniversalTransfer is not theoretical.

Withdrawals are structurally unavailable on an unrestricted key. Binance requires the IP Access Restriction filter before withdrawals can be enabled at all — so a key with no IP whitelist cannot withdraw. That is a stronger statement than remembering to untick a box, and it is the single largest reduction in blast radius available here. See disabling withdrawals on a Binance API key.

The 90-day trap. A key with no IP whitelist has its spot trading permission automatically switched off 90 days after activation. If your MCP setup works for three months and then starts refusing orders while reads keep working, this is almost certainly why — see the IP whitelist article, and expect the failure to surface as -2015.

Set the testnet flag while learning

BINANCE_TESTNET=true points the server at https://testnet.binance.vision/api/v3/, which uses separate credentials. An environment mix-up therefore produces an authentication error rather than a live order — the safe arrangement, and the reason Binance’s testnet is easier to work with than OKX’s header-switched demo mode.

What testnet will not reproduce: production symbol availability, filters and minimum order sizes, or rate limits under real pressure. See Binance testnet API keys.

Two things to get right around it

Rate limits are weight-based, not count-based. A model answering “how is my portfolio doing” can fan out into many calls, and Binance meters by request weight per endpoint. Exceeding it returns -1003, and severe violations escalate to an IP ban signalled by HTTP 418. Reserve headroom for cancels — see Binance API rate limits.

Never auto-retry an order. A timeout means the outcome is unknown, not that it failed, and newClientOrderId does not save you: Binance documents it as unique only among open orders, so a retry is accepted once the original has filled. That is the exact case you needed protection for — the full explanation.

FAQ

Is there an official Binance MCP server?

We did not find one; what is available is community code such as AnalyticAce/binance-mcp-server and ethancod1ng/binance-mcp-server. That means we did not find one rather than that none exists — check Binance’s own documentation before concluding either way.

Can I stop a Binance MCP server from placing orders?

Not through a documented setting in the server reviewed here, which exposes create_order on a default run. The reliable way is a Binance API key without trade permission: that boundary is enforced by Binance and holds regardless of what the server exposes or how the model behaves.

How do I check what my key is allowed to do?

GET /sapi/v1/account/apiRestrictions returns the live permission flags, including ipRestrict, enableReading, enableWithdrawals and the transfer permissions. Calling it at process startup and asserting the expected values turns a misconfiguration into an immediate, obvious failure instead of a latent exposure.

Why did my Binance MCP setup stop being able to trade?

If the key has no IP whitelist, most likely the 90-day expiry — Binance automatically unchecks spot and margin trading 90 days after activation for unrestricted-IP keys. Reads continue working, so only order placement fails, typically with -2015. Re-enable the permission and add an IP whitelist.