Morpho MCP
Morpho's hosted MCP server — query vaults, markets, Midnight fixed-rate markets, and positions, and prepare unsigned transactions from any MCP-compatible agent.
Morpho MCP is Morpho's hosted, remote MCP server. It gives any MCP-compatible agent live access to Morpho vaults, markets, Midnight fixed-rate markets, and positions, and lets it prepare unsigned transactions for you to review and sign.
Setup and Usage
The server is hosted and public. There is nothing to install and no key to manage. It never signs or sends a transaction.
| Endpoint | https://mcp.morpho.org/ |
| Transport | Streamable HTTP |
| Authentication | None — no API key, no account |
| Server name | org.morpho/mcp |
Read tools are generated from selected Core REST, Vaults App API and Markets API operations in the Morpho API OpenAPI specs, so their inputs and outputs match those APIs. The conventions below apply to protocol calls:
- Generated tools take selectors. Single-vault tools and vault prepare tools take a
vault-selectorformatted as<chainId>:<vaultAddress>, for example8453:0xbeef0e0834849aCC03f0089F01f4F1Eeb06873C9. Single-market Blue tools and market prepare tools take amarket-selectorformatted as<chainId>:<marketId>. Midnight market IDs are unique across chains, so Midnight tools take amarket-idwith no chain ID. List tools take filters, not a selector. - Amounts are base units. Asset amounts are integer strings in the token's base units. Read token decimals from tool responses; never assume them. Share amounts (
sharesinputs orunit: "shares") are integer strings in raw onchain share units — vault shares, or Morpho Blue supply/borrow shares — not scaled to the asset's decimals. - List tools are paginated. Vault and Blue market lists pass the returned
cursorback until it isnull. - Discover before you write. Find a target with a list tool, inspect it with the matching get tool, then call a
morpho_prepare_*tool. Never hardcode addresses. - Chain-slug inputs.
morpho_get_token_balance,morpho_prepare_claim_rewardsand themorpho_prepare_midnight_*tools take achainslug. The server instructions list the accepted slugs.
Prepare tools
A generated morpho_prepare_* tool calls the Morpho Actions API and returns its result under data:
- If
data.statusissignature_required, sign eachdata.signatures[].typed_data, then call the same tool again with the same selector and the body{ continuation, signatures: [{ id, signature }] }. - A finished result lists the unsigned transactions in
data.calls. Send them unchanged and in order from the account, and only ifdata.simulation.statusissuccessanddata.expires_athas not passed. - If
data.simulation.statusisfailed, showdata.simulation.failureand do not send the calls. - Each result carries
action_proof, the Actions API'sMorpho-Action-Proofresponse header. The MCP server passes it through without verifying it. Production clients must verify it againsthttps://api.morpho.org/.well-known/morpho-actions-jwks.json(ES256 only) before showing typed data or sending calls.
morpho_prepare_force_redeem takes flat arguments (vault-selector, account, complete: true, max_penalty_bps) instead of a body, so it has no continuation call. Its result can report nonzero residual_shares, a safety margin the exit leaves in the vault; data.simulation.effects.remaining_shares shows the simulated balance left.
morpho_prepare_claim_rewards is not generated. It returns a PreparedOperation: the transactions to sign and a warnings array. Warnings carry a severity — an error means stop, and the transactions must not be presented for signing.
The morpho_prepare_midnight_* tools are not generated either. They build transactions with the Morpho SDK and return a PreparedOperation, with any token approval and the MidnightBundlesV2 authorization before the main transaction. They take a chain slug, a Midnight marketId and amounts in human-readable decimals ("100"), not base units. Take tools (*_take_*) quote the book themselves and stop the fill at the quoted average price plus slippage (default 0.5%); call morpho_midnight_get_book_quote first to show the rate.
Connect a Client
Point any MCP client at https://mcp.morpho.org/. The tools appear in the next session.
Add the server with claude mcp add. The --scope user flag registers it once for every project on your machine; drop it to scope the server to the current project.
claude mcp add morpho --scope user --transport http https://mcp.morpho.org/Or install the morpho-mcp plugin from the Morpho skills marketplace:
/plugin marketplace add morpho-org/morpho-skills
/plugin install morpho-mcp@morpho-skillsConfirm it connected with claude mcp list. Inside a session, /mcp lists the connected servers and the tools each exposes.
In Claude, open Settings, then Connectors, then Add custom connector, and enter https://mcp.morpho.org/. Leave the OAuth fields empty.
On Team and Enterprise plans, an Owner adds the connector for the organization first.
In ChatGPT, turn on developer mode under Settings, then Apps & Connectors, then Advanced settings. Then create a connector with the MCP server URL https://mcp.morpho.org/ and No authentication.
Developer mode is only on paid plans, in ChatGPT on the web.
In a conversation, select the connector from the tools menu so ChatGPT can call it.
Add the server to ~/.cursor/mcp.json to use it in every project, or to .cursor/mcp.json to scope it to one project:
{
"mcpServers": {
"morpho": {
"type": "http",
"url": "https://mcp.morpho.org/"
}
}
}Add the server to your user profile from a terminal:
code --add-mcp '{"name":"morpho","type":"http","url":"https://mcp.morpho.org/"}'To share it with a project instead, add it to .vscode/mcp.json:
{
"servers": {
"morpho": {
"type": "http",
"url": "https://mcp.morpho.org/"
}
}
}Add the server with codex mcp add, passing --url to select the Streamable HTTP transport:
codex mcp add morpho --url https://mcp.morpho.org/Or declare it in ~/.codex/config.toml to make it global, or in a trusted project's .codex/config.toml to scope it to that project:
[mcp_servers.morpho]
url = "https://mcp.morpho.org/"Confirm it connected with codex mcp list.
Every client that takes a remote MCP server asks for the same three values:
| Field | Value |
|---|---|
| Server URL | https://mcp.morpho.org/ |
| Authentication | None |
| Transport | Streamable HTTP |
Choose Streamable HTTP wherever a client offers a transport choice. The server does not support the older SSE transport, so a client configured for SSE never connects.
Other clients, for example Perplexity, Mistral Le Chat, Cline, LM Studio and Goose, ask for the same values, most of them under a settings screen named Connectors or Extensions. Field names vary: Windsurf's mcp_config.json calls the URL serverUrl.
Tools
The server exposes 43 tools. Read tools answer questions about protocol state or the documentation; prepare tools return unsigned transactions.
General
| Tool | Description |
|---|---|
morpho_health_check | Check the server and its connected services. |
morpho_get_supported_chains | List each chain by name with its Blue, Vault and Midnight support. |
morpho_get_token_balance | A token balance, plus whether Morpho or the Bundler still needs an approval. |
morpho_doc_search | Search the Morpho documentation by semantic similarity. |
Vaults and Blue markets
| Tool | Inputs | Description |
|---|---|---|
morpho_query_vaults | chain_ids, search, cursor, and other filters | List Morpho vaults (V1 and V2) with net APY, total assets and liquidity in USD, curators, warnings, and version. Filter by chain_ids, search, and other supported fields. Paginate by passing back cursor until it is null. |
morpho_get_vault | vault-selector | Get one Morpho vault (V1 or V2) by vault selector <chainId>:<vaultAddress>. |
morpho_get_vault_positions | user-address, chain_ids, cursor | List a user's Morpho V1 and V2 vault positions with portfolio totals. Paginate by passing back cursor until it is null. |
morpho_query_markets | Chain and token filters, cursor | List Morpho Blue markets, filterable by chain, loan token and collateral token. Paginate by passing back cursor until it is null. |
morpho_get_market | market-selector | Get one Morpho Blue market by market selector. |
morpho_get_market_positions | user-address, chain filters | List a user's Morpho Blue market positions, filterable by chain. Paginate by passing back cursor until it is null. |
Midnight
| Tool | Description |
|---|---|
morpho_midnight_list_markets | List Midnight markets. |
morpho_midnight_get_market | Get a Midnight market's configuration. |
morpho_midnight_get_market_state | Get a Midnight market's current state. |
morpho_midnight_list_market_positions | List current positions in a Midnight market. |
morpho_midnight_list_user_positions | List a user's Midnight positions. |
morpho_midnight_get_user_position | Get a user's position in a Midnight market. |
morpho_midnight_get_user_position_performance | Get a Midnight position's performance. |
morpho_midnight_get_offer_group | Get the offer groups matching an onchain group ID. |
morpho_midnight_list_user_offer_groups | List a user's offer groups with their offers. |
morpho_midnight_list_maker_takeable_offers | List one maker's active offers. |
morpho_midnight_list_books | List offer books for active maturities, with the top price levels. |
morpho_midnight_get_book | Get one offer book with both sides. |
morpho_midnight_get_book_side | Get one side of a book as price levels. |
morpho_midnight_get_book_side_takeable_offers | Get up to 1,000 executable offers for one book side. |
morpho_midnight_get_book_quote | Get a quote for an amount, with expected prices and the offers to take. |
Transactions
| Tool | Description |
|---|---|
morpho_prepare_deposit | Deposit into a V1 or V2 vault. |
morpho_prepare_withdraw | Withdraw an exact asset amount from a V1 or V2 vault. |
morpho_prepare_redeem | Redeem vault shares, or the whole position with complete: true. |
morpho_prepare_force_withdraw | Force a V2 vault withdrawal from its adapters; a penalty applies. |
morpho_prepare_force_redeem | Force-redeem a whole V2 position through its adapters, capped by max_penalty_bps; a penalty applies and a small residual_shares margin can remain. |
morpho_prepare_redeem_in_kind | Exit a V2 vault, taking the illiquid part as a market supply position. |
morpho_prepare_supply | Supply (lend) the loan token to a market. |
morpho_prepare_blue_withdraw | Withdraw supplied loan tokens from a market. |
morpho_prepare_supply_collateral | Supply collateral to a market. |
morpho_prepare_withdraw_collateral | Withdraw collateral from a market. |
morpho_prepare_borrow | Borrow from a market against collateral already supplied. |
morpho_prepare_repay | Repay a market borrow by assets, by shares, or in full. |
morpho_prepare_supply_collateral_and_borrow | Supply collateral and borrow in one step. |
morpho_prepare_repay_and_withdraw_collateral | Repay and withdraw collateral in one step. |
morpho_prepare_refinance | Move a borrow position to another market on the same chain. |
morpho_prepare_claim_rewards | Claim Merkl rewards against the canonical Distributor. |
Midnight transactions
| Tool | Description |
|---|---|
morpho_prepare_midnight_take_lend | Lend at a fixed rate by taking the best ask offers. |
morpho_prepare_midnight_take_borrow | Borrow at a fixed rate against collateral already supplied, by taking the best bid offers. |
morpho_prepare_midnight_supply_collateral_take_borrow | Supply collateral and borrow at a fixed rate in one transaction. |
morpho_prepare_midnight_take_withdraw | Exit a lend position before maturity by selling credit to the best bid offers. |
morpho_prepare_midnight_take_repay_withdraw_collateral | Repay debt at the book price before maturity, then optionally withdraw collateral. |
morpho_prepare_midnight_supply_collateral | Supply collateral to a Midnight market. |
morpho_prepare_midnight_redeem | Redeem lend credit for loan tokens. |
morpho_prepare_midnight_repay_withdraw_collateral | Repay debt at face value, withdraw collateral, or both. |
morpho_prepare_midnight_cancel_offers | Cancel a maker's offer groups. |
morpho_prepare_midnight_set_authorization | Authorize or revoke MidnightBundlesV2 on Midnight. |
Response notes
Vaults App API vault lists include net APY, total assets and liquidity in USD, curator details, warnings, and the vault version. APY values are decimal rates, so 0.0317 means 3.17%.
Vault list and position reads use the internal API tier through /vaults-app-api. For self-hosted
deployments, all Morpho API calls use MORPHO_REST_API_URL (default
https://internal-api-dev.morpho.dev; production: https://internal.api.morpho.org) and
MORPHO_REST_API_KEY. The key is sent as the raw authorization header value, with no Bearer
prefix. This is server-side configuration; MCP clients do not send or manage that secret.
For product implementation and review guidance, install the separate Morpho Skills.
Prompt Examples
Once the server is connected, ask in plain language. Your agent picks the tools.
- For vault
0x…on Base, show its average APY, TVL, curator, and fee rates. Note that the APY excludes rewards. - Compare the borrow rates on the wstETH/WETH markets on Ethereum and Arbitrum.
- For
0x…on Base, show my position in market0x…and how much I have earned and paid. - List all my V2 vault positions across chains.
- Prepare a 1,000 USDC deposit into vault
0x…on Base for0x…, and show me the transactions before I sign anything. - How much can I withdraw from V2 vault
0x…on Ethereum right now, and what would a forced withdrawal cost? - List the Midnight markets and show the offer book for the nearest maturity.
- Do I have claimable Merkl rewards on Base? If so, prepare the claim.