mcp-coinbase
Provides tools for interacting with Coinbase, enabling cryptocurrency price queries, portfolio management, transaction history, and trading (buy/sell) operations.
Click on "Install 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., "@mcp-coinbaseShow my portfolio balance"
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.
@striderlabs/mcp-coinbase
MCP (Model Context Protocol) server for Coinbase crypto exchange. Provides browser-automated tools for live prices, portfolio management, transaction history, and trading.
Tools
Tool | Description |
| Get current cryptocurrency prices from Coinbase |
| Get your Coinbase portfolio balances and values |
| Get recent transaction history |
| Place a buy order (with preview mode) |
| Place a sell order (with preview mode) |
| Get your deposit address for a cryptocurrency |
Related MCP server: Luno MCP Server
Installation
npm install -g @striderlabs/mcp-coinbase
npx playwright install chromiumOr from the tarball:
npm install -g striderlabs-mcp-coinbase-1.0.0.tgz
npx playwright install chromiumConfiguration
Set these environment variables before running:
export COINBASE_EMAIL="your@email.com"
export COINBASE_PASSWORD="yourpassword"
export COINBASE_2FA_CODE="123456" # optional: TOTP code, or leave blank to enter manuallyUsage with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"coinbase": {
"command": "mcp-coinbase",
"env": {
"COINBASE_EMAIL": "your@email.com",
"COINBASE_PASSWORD": "yourpassword"
}
}
}
}Or using npx:
{
"mcpServers": {
"coinbase": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-coinbase"],
"env": {
"COINBASE_EMAIL": "your@email.com",
"COINBASE_PASSWORD": "yourpassword"
}
}
}
}Tool Reference
get_prices
Get current spot prices for one or more cryptocurrencies.
{
"symbols": ["BTC", "ETH", "SOL"],
"currency": "USD"
}Returns live prices fetched from the Coinbase public API — no login required.
get_portfolio
Get your full portfolio with balances and USD values. Requires login.
{}get_transactions
Get recent transaction history.
{
"limit": 20
}buy_crypto
Place a buy order. Use confirm: false (default) to preview the order without executing.
{
"symbol": "BTC",
"amount_usd": 100,
"confirm": false
}Set confirm: true to execute the trade.
sell_crypto
Place a sell order. Use confirm: false (default) to preview.
{
"symbol": "ETH",
"amount_crypto": 0.5,
"confirm": false
}get_wallet_address
Get your deposit address for a cryptocurrency.
{
"symbol": "BTC"
}2FA Handling
The server handles two-factor authentication gracefully:
If
COINBASE_2FA_CODEis set, it will be used automaticallyOtherwise, the server waits up to 60 seconds for you to complete 2FA in the browser
The browser session is reused across tool calls to minimize repeated logins
Browser Automation
This package uses Playwright with stealth mode (via playwright-extra + puppeteer-extra-plugin-stealth) to automate the Coinbase web interface. This approach:
Works with Coinbase's standard web UI
Handles dynamic page content
Bypasses basic bot detection via stealth plugin
Development
git clone https://github.com/markswendsen-code/mcp-coinbase
cd mcp-coinbase
npm install
npx playwright install chromium
npm run buildRun in dev mode (with tsx, no build step):
npm run devSecurity Notes
Never commit your Coinbase credentials to version control
Use environment variables for all sensitive configuration
The
confirm: falsedefault on buy/sell prevents accidental tradesReview all trades carefully before setting
confirm: true
License
MIT
Available Tools
6 toolsbuy_cryptoA
Place a buy order for cryptocurrency on Coinbase. Set confirm to false (default) for a preview, or true to execute. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Cryptocurrency symbol to buy (e.g., "BTC", "ETH") | |
| confirm | No | If false, returns preview only. If true, executes the order. | |
| amount_usd | Yes | Amount in USD to spend |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the environment variable requirements and the preview/execute modes, which adds value. However, it does not mention potential side effects (e.g., irreversible real-money orders, fees, order types) that would be useful for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the main purpose, then provide essential details about confirm behavior and environment variables. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a clear purpose, all parameters are documented in the schema, and the description covers the key behavioral distinction (preview vs execute) and prerequisites. No output schema is provided, so return value details are not required. This is sufficiently complete for a relatively simple buy tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for symbol, amount_usd, and confirm. The description repeats the confirm behavior but adds no new semantic meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Place a buy order for cryptocurrency on Coinbase.' This clearly distinguishes it from siblings like sell_crypto (sell) and get_portfolio (read).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool (when buying crypto) and explains the confirm parameter for preview vs execution. It does not explicitly mention alternatives or exclusions, but the context is clear enough for an agent to select it for buy actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolioA
Get your Coinbase portfolio balances and values. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It does disclose a key requirement: the need for COINBASE_EMAIL and COINBASE_PASSWORD environment variables. However, it does not explicitly state whether the operation is read-only, mention rate limits, or describe possible failure modes. The verb 'Get' implies a read, but this is not made explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences that are direct and free of filler. Every word contributes to understanding the tool's purpose and a critical prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (no parameters, no output schema), the description covers the essential purpose and the key setup requirement. It does not detail the exact return format, but this is acceptable for a low-complexity tool. Overall, it offers sufficient context for an agent to decide and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero input parameters, so the description need not explain parameter meanings. The schema coverage is 100% vacuously. The description adds value by mentioning environment variables, which are relevant to how the tool operates, but these are not part of the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get') and a clear resource ('your Coinbase portfolio balances and values'), which is distinct from sibling tools like get_transactions, buy_crypto, or get_prices. The purpose is immediately obvious and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool over alternatives. While siblings exist (e.g., get_transactions for transaction history), the description does not provide any comparison, exclusions, or context for selection. The usage scenario is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricesA
Get current cryptocurrency prices from Coinbase. Uses the public Coinbase API - no authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | List of cryptocurrency symbols (e.g., ["BTC", "ETH", "SOL"]) | |
| currency | No | Fiat currency to price against (default: USD) | USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the API is public and no authentication is required, which is a useful safety trait. However, it does not disclose potential rate limits, error handling, data freshness, or the exact return format. This is a simple read-only operation, so the lack of deeper behavioral detail is a minimal gap, but it still does not fully cover the necessary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, consisting of two sentences that immediately state the purpose and the key prerequisite (public API, no auth). Every word serves a purpose; there is no fluff or repetition, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and schema covers parameters, the description does not explain the return values or output format, and there is no output schema. This omission places a burden on the description to describe what the caller receives, which it fails to do. The description is otherwise complete for a basic price lookup, but the lack of return information prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters, including defaults and examples. The description adds no additional semantic information beyond what is already in the schema. Therefore, per the baseline for high schema coverage, the score is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get current cryptocurrency prices from Coinbase.' This is a specific verb+resource combination that is easily distinguished from sibling tools like get_portfolio or buy_crypto. The scope is explicit, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating the tool uses a public API and requires no authentication, which helps an agent understand when it can be used. However, it does not explicitly mention alternatives or when not to use this tool compared to sibling tools, so it lacks explicit exclusionary guidance. This fits 'clear context, no exclusions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionsA
Get recent transaction history from Coinbase. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of transactions to retrieve (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It discloses a key behavioral trait: the need for COINBASE_EMAIL and COINBASE_PASSWORD environment variables. However, it does not describe the return format or pagination/limits beyond the schema, so transparency is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and includes the only critical prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the core purpose and authentication requirement. However, it omits details about the response structure or any behavior around the limit parameter, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the single 'limit' parameter with 100% coverage. The description adds no extra meaning about the parameter, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get recent transaction history from Coinbase' with a specific verb and resource, distinguishing it from sibling tools like get_portfolio, buy_crypto, and sell_crypto. It is immediately obvious what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to retrieve recent transactions) but does not explicitly state when to use it over alternatives or provide any exclusions. It mentions the requirement for environment variables, which serves as a precondition but not as comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_addressA
Get your Coinbase deposit address for a cryptocurrency. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Cryptocurrency symbol to get deposit address for (e.g., "BTC", "ETH") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a meaningful requirement (COINBASE_EMAIL and COINBASE_PASSWORD environment variables) and the operation is inherently read-only based on the verb 'Get', but it does not mention potential errors, rate limits, or return format. This is adequate for a simple getter but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose and then the prerequisite. Every word earns its place, with no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single well-described parameter and no output schema, the description is adequate but leaves gaps: it does not describe the return value (e.g., address string format) or any error conditions. However, the purpose is clear and the complexity is low, so a 3 is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself does not add extra detail beyond the schema; it only says 'for a cryptocurrency' while the schema already specifies the symbol parameter and examples. No additional semantic value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a Coinbase deposit address for a cryptocurrency, using a specific verb ('Get') and resource. This distinguishes it from sibling tools like get_portfolio, get_transactions, or get_prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need a deposit address) and provides a prerequisite (environment variables), but does not explicitly discuss when to use this tool versus alternatives or any exclusions. The context is clear but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sell_cryptoA
Place a sell order for cryptocurrency on Coinbase. Set confirm to false (default) for a preview, or true to execute. Requires COINBASE_EMAIL and COINBASE_PASSWORD environment variables.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Cryptocurrency symbol to sell (e.g., "BTC", "ETH") | |
| confirm | No | If false, returns preview only. If true, executes the order. | |
| amount_crypto | Yes | Amount of cryptocurrency to sell (in crypto units) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses that execution is gated by confirm, that preview is default, and that environment variables are required. However, it does not detail order types or execution side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, then behavior and prerequisites. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, but the description covers purpose, preview/execution, and prerequisites. Missing return-value detail is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters, so the description adds no extra information beyond reiterating the confirm behavior already documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Place' with the object 'a sell order for cryptocurrency on Coinbase,' clearly distinguishing it from sibling 'buy_crypto'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on the confirm parameter (preview vs. execute), but does not explicitly name alternatives like buy_crypto or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v1.0.0- First observed
buy_crypto - First observed
get_portfolio - First observed
get_prices - First observed
get_transactions - First observed
get_wallet_address - First observed
sell_crypto
TDQS
Each tool has a clearly distinct purpose: portfolio, transactions, buy, sell, wallet address, and prices. There is no overlap or ambiguity between them.
All tools follow a consistent verb_noun pattern: get_ for reads, buy_/sell_ for actions. Naming is uniform and predictable.
With 6 tools, the server is well-scoped for Coinbase operations. Each tool serves a clear function without redundancy or bloat.
Core account management and trading workflows are covered: viewing balances, history, prices, buying, selling, and getting deposit address. Minor gaps exist (e.g., cancel order, send crypto) but these are not critical for a basic trading server.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
21MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
Open-source MCP server for Zerodha Kite Connect. Portfolio, market data, backtesting, alerts.
Related MCP Servers
AlicenseBqualityCmaintenanceMCP Server for the CoinStats API. Provides access to cryptocurrency market data, portfolio tracking, and news.304116MIT- GoMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for cryptocurrency trading across multiple exchanges (Bybit, Binance, KuCoin, etc.) with real-time price data, comparison, and natural language query support. Integrates with AI assistants via the Model Context Protocol.MIT
- AlicenseCqualityAmaintenanceLocal paper-trading and market simulation MCP server for multi-account portfolios, advanced orders, options/futures, backtesting, alerts, and automation.60MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/markswendsen-code/mcp-coinbase'
If you have feedback or need assistance with the MCP directory API, please join our Discord server