Alpaca MCP 服务器是一个用于 Alpaca 交易 API 的模型上下文协议(MCP)服务器实现。它使 Claude Desktop、Cursor 或 VScode 上的大语言模型(LLM)能够使用自然语言(英语)与 Alpaca 的交易基础设施进行交互。该服务器支持股票交易、期权交易、投资组合管理、观察列表处理以及实时市场数据访问。
本服务器允许大语言模型与 Alpaca 的交易基础设施进行自然语言交互。若要开始使用,请确保满足以下前提条件并完成安装步骤。
克隆仓库并进入仓库目录:
git clone https://github.com/alpacahq/alpaca-mcp-server.git
cd alpaca-mcp-server
创建并激活虚拟环境:
python3 -m venv venv
source venv/bin/activate
注意:虚拟环境将使用创建它时所用的 Python 版本。若使用 Python 3.10 或更高版本运行该命令,虚拟环境也将使用 Python 3.10 及以上版本。激活虚拟环境后,可运行 python3 --version 命令确认版本。
安装所需的包:
pip install -r requirements.txt
克隆仓库并激活虚拟环境后,目录结构应如下所示:
alpaca-mcp-server/ ← 这是工作区文件夹(即项目根目录)
├── alpaca_mcp_server.py ← 脚本直接位于工作区根目录
├── .vscode/ ← VS Code 设置(适用于 VS Code 用户)
│ └── mcp.json
├── venv/ ← 虚拟环境文件夹
│ └── bin/python
├── .env.example ← 环境模板(用于创建 .env 文件)
├── .gitignore
├── Dockerfile ← Docker 配置(用于 Docker 使用)
├── .dockerignore ← Docker 忽略文件(用于 Docker 使用)
├── requirements.txt
└── README.md
ALPACA_API_KEY = "your_alpaca_api_key"
ALPACA_SECRET_KEY = "your_alpaca_secret_key"
PAPER = True
TRADE_API_URL = None
TRDE_API_WSS = None
DATA_API_URL = None
STREAM_DATA_WSS = None
官方 Claude Desktop 设置文档可在此处查看:https://modelcontextprotocol.io/quickstart/user
在项目根目录下打开终端并运行以下命令:
python alpaca_mcp_server.py # 或者 `python -m alpaca_mcp_server`
设置 → 开发者 → 编辑配置claude_desktop_config.json:注意:
将
替换为克隆的 alpaca-mcp-server 目录的路径。这应指向在终端中使用 python3 -m venv venv 创建的虚拟环境内的 Python 可执行文件。
{
"mcpServers": {
"alpaca": {
"command": "/venv/bin/python" ,
"args": [
"/path/to/alpaca-mcp-server/alpaca_mcp_server.py"
],
"env": {
"ALPACA_API_KEY": "your_alpaca_api_key_for_paper_account",
"ALPACA_SECRET_KEY": "your_alpaca_secret_key_for_paper_account"
}
}
}
}
VS Code 通过 GitHub Copilot 的代理模式支持 MCP 服务器。 官方 VS Code 设置文档可在此处查看:https://code.visualstudio.com/docs/copilot/chat/mcp-servers
建议:使用特定于工作区的配置(.vscode/mcp.json)而非全局用户配置。这允许不同项目使用不同的 API 密钥(多个模拟账户或实盘交易),并使交易工具与其他开发工作隔离。
特定于工作区的设置:
.vscode/mcp.json。{
"alpaca": {
"type": "stdio",
"command": "${workspaceFolder}/venv/bin/python",
"args": ["${workspaceFolder}/alpaca_mcp_server.py"],
"env": {
"ALPACA_API_KEY": "your_alpaca_api_key",
"ALPACA_SECRET_KEY": "your_alpaca_secret_key"
}
}
}
注意:对于 Windows 用户,将 "command" 参数替换为 "${workspaceFolder}\venv\Scripts\python.exe"全局用户设置:
若要为所有工作区配置 MCP 服务器,可将服务器配置添加到用户设置文件 settings.json 中。这允许在多个项目中重用相同的服务器配置。
在 VS Code 用户设置(settings.json)的 mcp 字段中指定服务器,以在所有工作区中启用 MCP 服务器。
{
"mcp": {
"servers": {
"alpaca": {
"type": "stdio",
"command": "${workspaceFolder}/venv/bin/python",
"args": ["${workspaceFolder}/alpaca_mcp_server.py"],
"env": {
"ALPACA_API_KEY": "your_alpaca_api_key",
"ALPACA_SECRET_KEY": "your_alpaca_secret_key"
}
}
}
}
}
前提条件: 系统中必须安装 Docker。
docker run -it --rm \
-e ALPACA_API_KEY=your_alpaca_api_key \
-e ALPACA_SECRET_KEY=your_alpaca_secret_key \
ghcr.io/chand1012/alpaca-mcp-server:latest
此命令将拉取并运行服务器的最新发布版本。将 your_alpaca_api_key 和 your_alpaca_secret_key 替换为实际的密钥。若服务器暴露了端口(例如 8080),可在命令中添加 -p 8080:8080。
docker build -t alpaca-mcp-server .
docker run -it --rm \
-e ALPACA_API_KEY=your_alpaca_api_key \
-e ALPACA_SECRET_KEY=your_alpaca_secret_key \
alpaca-mcp-server
若要运行服务器的修改版本或开发版本,请使用此方法。
{
"mcpServers": {
"alpaca": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "ALPACA_API_KEY",
"-e", "ALPACA_SECRET_KEY",
"ghcr.io/chand1012/alpaca-mcp-server:latest"
],
"env": {
"ALPACA_API_KEY": "your_alpaca_api_key",
"ALPACA_SECRET_KEY": "your_alpaca_secret_key"
}
}
}
}
环境变量可以通过 -e 标志或 "env" 对象设置,但不能同时使用两者。对于 Claude Desktop,请使用 "env" 对象。
安全注意事项: 切勿共享 API 密钥或将其提交到公共仓库。在共享或生产环境中传递机密信息作为环境变量时要格外谨慎。
更多高级 Docker 使用方法: 请参阅 官方 Docker 文档。
此 MCP 服务器默认连接到 Alpaca 的模拟交易 API 以进行安全测试。 若要启用使用真实资金的实盘交易,请更新以下配置文件:
.env 文件ALPACA_API_KEY = "your_alpaca_api_key_for_live_account"
ALPACA_SECRET_KEY = "your_alpaca_secret_key_for_live_account"
PAPER = False
TRADE_API_URL = None
TRDE_API_WSS = None
DATA_API_URL = None
STREAM_DATA_WSS = None
claude_desktop_config.json 中,将实盘账户的密钥作为环境变量提供:{
"mcpServers": {
"alpaca": {
"command": "/venv/bin/python" ,
"args": [
"/path/to/alpaca_mcp_server.py"
],
"env": {
"ALPACA_API_KEY": "your_alpaca_api_key_for_live_account",
"ALPACA_SECRET_KEY": "your_alpaca_secret_key_for_live_account"
}
}
}
}
get_account_info() – 查看余额、保证金和账户状态get_positions() – 列出所有持仓资产get_open_position(symbol) – 获取特定头寸的详细信息close_position(symbol, qty|percentage) – 平仓部分或全部头寸close_all_positions(cancel_orders) – 清算整个投资组合get_stock_quote(symbol) – 实时买卖报价get_stock_bars(symbol, start_date, end_date) – 历史 OHLCV 价格柱get_stock_latest_trade(symbol) – 最新市场交易价格get_stock_latest_bar(symbol) – 最近的 OHLC 价格柱get_stock_trades(symbol, start_time, end_time) – 交易级历史记录get_orders(status, limit) – 获取所有或过滤后的订单place_stock_order(symbol, side, quantity, order_type="market", limit_price=None, stop_price=None, trail_price=None, trail_percent=None, time_in_force="day", extended_hours=False, client_order_id=None) – 下达任何类型的股票订单(市价、限价、止损、止损限价、跟踪止损)cancel_order_by_id(order_id) – 取消特定订单cancel_all_orders() – 取消所有未完成订单get_option_contracts(underlying_symbol, expiration_date) – 获取期权合约get_option_latest_quote(option_symbol) – 合约的最新买卖报价get_option_snapshot(symbol_or_symbols) – 获取希腊值和标的资产信息place_option_market_order(legs, order_class, quantity) – 执行期权策略get_market_clock() – 市场开闭时间表get_market_calendar(start, end) – 节假日和交易日get_corporate_announcements(...) – 收益、股息、拆股公告create_watchlist(name, symbols) – 创建新的观察列表update_watchlist(id, name, symbols) – 修改现有观察列表get_watchlists() – 获取所有保存的观察列表get_asset_info(symbol) – 搜索资产元数据get_all_assets(status) – 列出所有可交易工具以下是 50 个真实的查询示例,涵盖了从交易到企业数据再到期权策略的各个方面。
MCP 服务器为各种交易查询提供详细、格式良好的响应。以下是一些示例:
查询:"TSLA250620P00500000 期权合约的希腊值是多少?"
响应: 期权详情:
希腊值:
关键洞察:
查询:"使用苹果(AAPL)6 月 6 日的期权构建牛市看涨价差策略:一份行权价为 190.00,另一份行权价为 200.00。"
响应: 订单详情:
价差组合腿:
策略总结:
这些示例展示了服务器能够提供:
服务器在所有支持的查询中都保持这种详细程度和格式,便于用户理解和根据提供的信息采取行动。
⚠️ 重要提示
此服务器可以进行真实交易并访问您的投资组合。请将您的 API 密钥视为敏感凭证。仔细审查大语言模型提出的所有操作,特别是对于复杂的期权策略或多腿交易。
本项目采用 MIT 许可证。