MCP server for the Public.com Trading API
Project description
Public.com MCP Server
An MCP (Model Context Protocol) server that connects AI assistants to your Public.com brokerage account. Trade stocks, options, and crypto — get quotes, manage orders, and view your portfolio — all through natural language.
Disclaimer: For illustrative and informational purposes only. Not investment advice or recommendations. Use at your own risk.
Tools
Read-Only
| Tool | Description |
|---|---|
check_setup |
Verify API credentials and connectivity |
get_accounts |
List all brokerage accounts |
get_portfolio |
View positions, equity, buying power, open orders |
get_orders |
List active/open orders |
get_order |
Get status of a specific order |
get_history |
Transaction history (trades, deposits, dividends, etc.) |
get_quotes |
Real-time quotes for stocks, crypto, options |
get_instrument |
Details about a specific tradeable instrument |
get_all_instruments |
List all available instruments with filters |
get_option_expirations |
Available expiration dates for options |
get_option_chain |
Full option chain (calls + puts) for a symbol |
get_option_greeks |
Greeks (delta, gamma, theta, vega, rho, IV) for multiple options |
get_option_greek |
Greeks for a single option symbol |
preflight_order |
Estimate costs/impact before placing a single-leg order |
preflight_multileg_order |
Estimate costs for multi-leg options strategies |
preflight_short_order |
Estimate costs before placing a short-sale order |
preflight_call_credit_spread |
Estimate costs for a Bear Call Spread |
preflight_call_debit_spread |
Estimate costs for a Bull Call Spread |
preflight_put_credit_spread |
Estimate costs for a Bull Put Spread |
preflight_put_debit_spread |
Estimate costs for a Bear Put Spread |
Write (Destructive)
| Tool | Description |
|---|---|
place_order |
Place a single-leg order (stocks, crypto, options) |
place_multileg_order |
Place multi-leg orders (spreads, straddles, etc.) |
place_call_credit_spread |
Place a Bear Call Spread |
place_call_debit_spread |
Place a Bull Call Spread |
place_put_credit_spread |
Place a Bull Put Spread |
place_put_debit_spread |
Place a Bear Put Spread |
place_short_order |
Place an equity short-sale order |
flatten_and_go_short |
Sell an existing long position then go short (experimental) |
cancel_order |
Cancel an existing order |
cancel_and_replace_order |
Atomically cancel and replace an order |
Prerequisites
- Python 3.10+
- Public.com account — Sign up
- Public.com API key — Get one here
Installation
pip install publicdotcom-mcp-server
Or install from source:
git clone https://github.com/publicdotcom/publicdotcom-mcp-server.git
cd publicdotcom-mcp-server
pip install .
Configuration
Set your API credentials as environment variables:
# Required
export PUBLIC_COM_SECRET=your_api_secret_key
# Optional — sets a default account so you don't need to specify it each time
export PUBLIC_COM_ACCOUNT_ID=your_account_id
Usage
Claude Desktop
Add this to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"public-com": {
"command": "publicdotcom-mcp-server",
"env": {
"PUBLIC_COM_SECRET": "your_api_secret_key",
"PUBLIC_COM_ACCOUNT_ID": "your_account_id"
}
}
}
}
Claude Desktop (using uvx)
If you prefer using uvx (no pre-install needed):
{
"mcpServers": {
"public-com": {
"command": "uvx",
"args": ["publicdotcom-mcp-server"],
"env": {
"PUBLIC_COM_SECRET": "your_api_secret_key",
"PUBLIC_COM_ACCOUNT_ID": "your_account_id"
}
}
}
}
Running Directly
# stdio transport (default — for Claude Desktop, Claude Code, etc.)
publicdotcom-mcp-server
# Or run as a Python module
python -m publicdotcom_mcp_server
Hosted / Remote Deployment
For remote deployments (behind a reverse proxy or load balancer), switch to the streamable-HTTP transport:
export MCP_TRANSPORT=streamable-http
export PUBLIC_COM_SECRET=your_api_secret_key
export PORT=8000 # optional, defaults to 8000
export HOST=0.0.0.0 # optional, defaults to 0.0.0.0
publicdotcom-mcp-server
In this mode the server listens for MCP requests at POST /mcp. Clients authenticate per-request via an Authorization: Bearer <key> header, which takes priority over the PUBLIC_COM_SECRET environment variable — useful for multi-tenant deployments.
Testing with MCP Inspector
npx @modelcontextprotocol/inspector publicdotcom-mcp-server
Development
# Clone and install in development mode
git clone https://github.com/publicdotcom/publicdotcom-mcp-server.git
cd publicdotcom-mcp-server
pip install -e ".[dev]"
# Run tests
pytest
# Run the server locally
python -m publicdotcom_mcp_server
How It Works
This server wraps the publicdotcom-py Python SDK, exposing each API operation as an MCP tool. The MCP protocol allows AI clients to discover and call these tools through a standardized interface.
AI Client (Claude, etc.)
↕ MCP Protocol (stdio)
Public.com MCP Server
↕ HTTPS
Public.com Trading API
All tools include proper MCP tool annotations:
- Read-only tools are marked with
readOnlyHint: true - Write tools are marked with
destructiveHint: true
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file publicdotcom_mcp_server-0.2.0.tar.gz.
File metadata
- Download URL: publicdotcom_mcp_server-0.2.0.tar.gz
- Upload date:
- Size: 25.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0826495039bd71a5fb5c8624ccf4aa507ff0d40e35964e7947c519c30d5119fc
|
|
| MD5 |
aacbe658382a2dbbd5c68f270a4eea07
|
|
| BLAKE2b-256 |
ec0f5357d1f5f5397316ab7d0d7a7f56bf00145d17f3c0a7f6ef684f65800963
|
File details
Details for the file publicdotcom_mcp_server-0.2.0-py3-none-any.whl.
File metadata
- Download URL: publicdotcom_mcp_server-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a7352baffe48484128f5e6d4c7b3337661dfba7505eef9f31bb90ce5d1a07fe
|
|
| MD5 |
9a8c28a84b6963cdbc4e7ae084b2da37
|
|
| BLAKE2b-256 |
e0307391f55c8968fbe6602d3837e58ca9fc4b4de439db5898ca2f73903122c4
|