Schwab MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | The logging level for the server | INFO |
| SCHWAB_CLIENT_ID | No | Your Schwab App Key (Client ID). Optional override if not kept in the token file | |
| SCHWAB_TOKEN_PATH | No | Path to the JSON file containing your Schwab tokens and credentials | ~/.schwab-mcp/token.json |
| SCHWAB_CALLBACK_URL | No | The callback URL configured in your Schwab Developer account | https://127.0.0.1:8182/callback |
| SCHWAB_CLIENT_SECRET | No | Your Schwab App Secret (Client Secret). Optional override if not kept in the token file |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_positionsC | Get all positions with cost basis, quantity, market value, and gain/loss for an account |
| get_quoteB | Get real-time quote for a stock symbol including price, bid/ask, volume, and fundamentals |
| get_quotesC | Get real-time quotes for multiple symbols at once |
| get_instrumentsC | Search for instruments by symbol or description, or get fundamental data for a symbol |
| get_moversB | Get top movers (gainers or losers) for an index by percent or value change |
| load_price_historyA | Fetch price history and load into SQL database for querying. Use this instead of get_price_history when you need to analyze the data with SQL. After loading, use query_market_data to run SQL queries. |
| load_option_chainA | Fetch option chain and load into SQL database for querying. Use this instead of get_option_chain when you need to analyze the data with SQL. After loading, use query_market_data to run SQL queries. |
| query_market_dataA | Run SQL query against loaded market data (price_history and options tables). First use load_price_history or load_option_chain to load data, then query it. Only SELECT queries are allowed. Use get_data_schema to see table schemas and example queries. |
| get_data_schemaB | Get schema information for market data tables including column definitions, available data, and example SQL queries for common analyses like volume profile. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Most tools have distinct purposes, but there is some overlap between get_quote and get_quotes, which could cause confusion as they differ only in handling single vs. multiple symbols. The load_* tools and query_market_data are clearly differentiated by their data loading vs. querying roles, and other tools like get_positions and get_movers target unique functions.
All tool names follow a consistent verb_noun pattern using snake_case, such as get_instruments, load_option_chain, and query_market_data. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions.
With 9 tools, the server is well-scoped for market data and trading analysis, covering key areas like quotes, positions, movers, instruments, and SQL-based data handling. Each tool serves a clear purpose without redundancy, making the count appropriate for the domain.
The tool set provides strong coverage for market data retrieval and analysis, including real-time quotes, historical data, options, and positions. A minor gap exists in the lack of tools for executing trades or managing orders, which might be expected in a trading context, but the available tools support comprehensive data workflows.