OpenEtradeMcp
 
暴露E的MCP(模型上下文协议)服务器*将API操作作为人工智能代理的工具。这允许像Claude和GitHub Copilot这样的人工智能助手与E进行交互*TRADE的交易平台。
NuGet包
| 软件包 | 版本 | 下载 |
|---|---|---|
| OpenEtradeMcp |  | ](https://www.nuget.org/packages/OpenEtradeMcp) |
| OpenEtradeMcp。服务器 |  | ](https://www.nuget.org/packages/OpenEtradeMcp.Server) |
特性
- OAuth 1.0a身份验证:旨在与AI代理无缝协作的交互式OAuth流
- **E\*贸易API工具**:根据E\*TRADE的OpenAPI规范自动生成的工具
- 订单确认安全门:可选的基于MCP启发的订单下达、取消和修改确认——通过LLM无法绕过的本地客户端对话框要求明确的用户批准来防止意外交易
- 沙盒支持:使用E\*TRADE的沙盒环境进行安全测试
- 全球工具:作为安装。NET全局工具,便于访问
先决条件
- .NET 8.0/9.0/10.0标准立方英尺
- 具有API访问权限的E\*TRADE开发人员帐户
- 消费者密钥和消费者秘密 E\*TRADE开发者门户
安装
作为一个。NET全局工具
dotnet tool install --global OpenEtradeMcp.Server来源
git clone https://github.com/kerryjiang/OpenEtradeMcp.git
cd OpenEtradeMcp
dotnet build配置
环境变量
export ETRADE_ConsumerKey="your-consumer-key"
export ETRADE_ConsumerSecret="your-consumer-secret"
export ETRADE_UseSandbox="true" # Optional: use sandbox environment命令行参数
etrade-mcp --ConsumerKey=your-key --ConsumerSecret=your-secret --UseSandbox=true运行服务器
使用全局工具
etrade-mcp来源
cd src/OpenEtradeMcp.Server
dotnet runMCP客户端配置
克劳德桌面版
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"etrade": {
"command": "/Users/{YourUserName}/.dotnet/tools/etrade-mcp",
"env": {
"ETRADE_ConsumerKey": "your-consumer-key",
"ETRADE_ConsumerSecret": "your-consumer-secret",
"ETRADE_UseSandbox": "true"
}
}
}
}视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"etrade": {
"command": "C:\\\\Users\\{YourUserName}\\.dotnet\\tools\\etrade-mcp",
"env": {
"ETRADE_ConsumerKey": "your-consumer-key",
"ETRADE_ConsumerSecret": "your-consumer-secret",
"ETRADE_UseSandbox": "true"
}
}
}
}VS代码与GitHub Copilot
在VS Code MCP设置中配置以使用 etrade-mcp 带有适当环境变量的命令。
OAuth身份验证流程
服务器提供交互式OAuth工具,允许AI代理引导用户进行身份验证:
1.启动OAuth(etrade_oauth_start)
开始身份验证过程并返回授权URL。
Agent: "I'll start the E*TRADE authentication process."
[Calls etrade_oauth_start]
Agent: "Please click this link to authorize: https://us.etrade.com/e/t/etws/authorize?..."2.完成OAuth(etrade_oauth_complete)
用户授权并收到验证码后:
User: "I got the code: ABC123"
Agent: "Great, let me complete the authentication."
[Calls etrade_oauth_complete with verifierCode="ABC123"]
Agent: "Authentication successful! You can now use E*TRADE API tools."3.其他OAuth工具
etrade_oauth_status-检查身份验证状态etrade_oauth_renew-续订访问令牌(令牌在东部午夜到期)etrade_oauth_revoke-注销并撤销访问令牌
可用工具
OAuth工具
| 工具 | 说明 |
|---|---|
etrade_oauth_start | 启动OAuth身份验证流程 |
etrade_oauth_complete | 使用验证器代码完成OAuth |
etrade_oauth_status | 检查身份验证状态 |
etrade_oauth_renew | 续订访问令牌 |
etrade_oauth_revoke | 撤销访问令牌 |
E\*贸易API工具
工具是根据E\*TRADE OpenAPI规范自动生成的,包括:
- 账户管理 -列出帐户,查看帐户详细信息
- 投资组合 -查看头寸和持股
- 订单 -下单、预览和管理订单
- 市场数据 -获取报价、期权链和市场信息
- 警报 -管理价格和交易警报
项目结构
OpenEtradeMcp/
├── src/
│ ├── OpenEtradeMcp/ # Core library with E*TRADE API definitions
│ │ └── etrade-api.yaml # E*TRADE OpenAPI specification
│ └── OpenEtradeMcp.Server/ # MCP server executable
├── Directory.Build.props # Shared build properties
├── Directory.Packages.props # Centralized package management
└── OpenEtradeMcp.sln # Solution file订单确认安全门
当人工智能代理与经纪账户交互时,一个关键的安全问题是防止意外的订单执行。该服务器包括一个可选的订单确认功能,可以在明确的用户确认后阻止危险操作。
启用订单确认
export ETRADE_EnableOrderConfirmation="true"或者在MCP客户端配置中:
{
"mcpServers": {
"etrade": {
"command": "etrade-mcp",
"env": {
"ETRADE_ConsumerKey": "your-key",
"ETRADE_ConsumerSecret": "your-secret",
"ETRADE_EnableOrderConfirmation": "true"
}
}
}
}运作原理
启用后,以下工具在执行前需要明确的用户确认:
placeOrder-新订单下达cancelOrder-订单取消placeChangeOrder-订单修改
支持MCP启发 (Claude Code 2.1.76+和其他支持 elicitation/create):
服务器直接向客户端发送本地确认对话框。用户看到一个包含完整订单详细信息(符号、操作、数量、价格、账户)的表单,必须在订单执行前勾选确认框。这是一个 机械闸门 --LLM无法绕过、拦截或自动确认它。
对于 cancelOrder,服务器会自动从E\*TRADE获取订单详细信息,以便用户可以准确地看到他们正在取消的内容(符号、操作、数量、状态)。
帐户标识符被解析为人性化的显示格式(掩码帐号+描述)。
无MCP启发支持 (回退):
对于不支持MCP启发的客户端,服务器使用基于令牌的回退。该工具返回订单详细信息和确认令牌。指示AI代理向用户呈现详细信息,如果确认,则使用令牌重新调用工具。注意:这种回退依赖于AI代理来提供确认,这比原生启发的保证要弱。
配置选项
| 环境变量 | 默认值 | 描述 |
|---|---|---|
ETRADE_EnableOrderConfirmation | false | 启用订单确认门。当 false,所有工具在未经确认的情况下执行(现有行为)。 |
ETRADE_GuardedTools | placeOrder,cancelOrder,placeChangeOrder | 需要确认的工具名称列表,以逗号分隔。 |
ETRADE_ConfirmationTimeoutSeconds | 300 | 回退确认令牌保持有效的时间(秒)。 |
示例对话框
══════════════════════════════════════════
ORDER PLACEMENT — CONFIRMATION REQUIRED
══════════════════════════════════════════
account: ****1234 - Individual - (My Trading Acct) - [MARGIN]
orderType: EQ
order:
priceType: MARKET
orderTerm: GOOD_FOR_DAY
instrument:
orderAction: SELL_SHORT
quantity: 50
symbol: CPT
══════════════════════════════════════════
Review details above. Check confirm box.
══════════════════════════════════════════
> confirm: [ ]
I have reviewed the order details and approve execution
Accept Decline安全说明
- 从不提交凭据 -为您的消费者密钥/秘密使用环境变量
- 仅内存令牌 -访问令牌存储在内存中,而不是持久化到磁盘
- 先使用沙盒 -在使用生产凭据之前使用沙盒环境进行测试
- 启用订单确认 -设置
ETRADE_EnableOrderConfirmation=true以防止AI代理意外执行订单。这是 强烈推荐 用于生产用途。
故障排除
“未找到OpenAPI规范文件”
确保 etrade-api.yaml 文件位于输出目录中。重建项目。
“未提供E\*TRADE API凭据”
设置 ConsumerKey 和 ConsumerSecret 环境变量。
身份验证失败
- 验证您的凭据是否正确
- 确保沙盒凭据与
UseSandbox=true - 检查验证码是否输入正确(无多余空格)
许可证
此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!请随时提交拉取请求。
作者
江 -
