SchwabBLOCK
Schwab MCP server that enables AI assistants like Claude to retrieve and interact with your Schwab accounts and Schwab market data.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
A Model Context Protocol (MCP) server that enables AI assistants like Claude to securely interact with Charles Schwab accounts and market data through the official Schwab API.
What You Can Do
Ask Claude to:
- "Show me my Schwab account balances and positions"
- "Get real-time quotes for AAPL, GOOGL, and MSFT"
- "What are today's market movers in the $SPX?"
- "Show me the options chain for TSLA with Greeks"
- "Get my transactions from the last 30 days"
- "Search for ETFs related to technology"
- "Check if the markets are open"
Unofficial MCP Server
This is an unofficial, community-developed TypeScript MCP server for Charles Schwab. It has not been approved, endorsed, or certified by Charles Schwab. It is provided as-is, and its functionality may be incomplete or unstable. Use at your own risk, especially when dealing with financial data or transactions.
Overview
This MCP server acts as a bridge between AI assistants and the Schwab API, providing:
- Secure OAuth Authentication: Implements Schwab's OAuth 2.0 flow with PKCE
for secure authentication
- Comprehensive Trading Tools: Access to accounts, orders, quotes, and
transactions
- Market Data Tools: Real-time quotes, price history, market hours, movers,
and options chains
- Account Privacy: Built-in account identifier scrubbing to protect
sensitive information
- Enterprise-Ready: Deployed on Cloudflare Workers with Durable Objects for
state management
Features
Trading Tools
- Account Management
getAccounts: Retrieve all account information with positions and balancesgetAccountNumbers: Get list of account identifiers- Order Management
getOrder: Get order by IDgetOrders: Fetch orders with filtering by status, time range, and symbolgetOrdersByAccountNumber: Get orders by account numbercancelOrder: Cancel an order (Experimental)placeOrder: Place an order (Experimental)replaceOrder:
e57f606d61ebOBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add schwab-mcp -- npx -y [email protected]
{
"mcpServers": {
"schwab-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Exposed tools (22)
18 read · 4 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
cancelOrder | write | Cancel order by order id for a specific account |
getAccount | read | Get account |
getAccountNumbers | read | Get account numbers |
getAccounts | read | Get accounts |
getInstrumentByCusip | read | Get instrument by cusip |
getMarketHours | read | Get market hours for different markets |
getMarketHoursByMarketId | read | Get market hours for a specific market |
getMovers | read | Get movers for a specific index |
getOptionChain | read | Get option chain for an optionable symbol |
getOptionExpirationChain | read | Get option expiration chain for an optionable symbol |
getOrder | write | Get order by order id for a specific account |
getOrders | read | Get orders |
getOrdersByAccountNumber | read | Get orders by account number |
getPriceHistory | read | Get price history for a specific symbol and date range |
getQuoteBySymbolId | read | Get quote for a one symbol |
getQuotes | read | Get quotes for a list of symbols |
getTransaction | read | Get transaction |
getTransactions | read | Get transactions |
getUserPreference | read | Get user preference |
placeOrder | write | Place order for a specific account |
replaceOrder | write | Replace order by order id for a specific account |
searchInstruments | read | Search for instruments by symbols and projections |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- UNDECLARED (5 observation(s))
- Network
- declared (5 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (12)
exec(
exec(query: string): Promise<D1ExecResult>
import { type ValidatedEnv, type Env } from '../../types/env'import { type ValidatedEnv } from '../../types/env'import { type Env } from '../../types/env'import { type ValidatedEnv } from '../../types/env'import { type ValidatedEnv } from '../../../types/env'const decodedStateJson = atob(encodedState)
atob(data: string): string
declare function atob(data: string): string
@cloudflare/workers-oauth-provider, @modelcontextprotocol/sdk, @sudowealth/schwab-api, hono, pino, workers-mcp, zod, @cloudflare/workers-types
Gates applied: no_behavioural_pass, no_license.
e57f606d61ebfull audit observations/trust-audit/mcp-server/sudowealth__schwab-1.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | e57f606d61eb | BLOCK | D | 69 | first audit |
Questions
What is the Schwab MCP server?
Schwab MCP server that enables AI assistants like Claude to retrieve and interact with your Schwab accounts and Schwab market data.
What tools does Schwab expose?
22 in total: 18 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is Schwab safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does Schwab need?
No credential environment variables were found in its source, so it appears to need none.
How current is this page?
The grade is for one exact copy of the source (e57f606d61eb), read on 2026-10-08. The repository is watched and re-audited when it changes.