Consorsbank MCP
用于Consorsbank Trading API的Java 21模型上下文协议(MCP)服务器。
该存储库旨在提供一个干净的Java MCP服务器,向MCP兼容客户端公开Consorsbank交易、账户、市场和会话工作流。该实现是围绕官方Java MCP SDK和Consorsbank Trading API设计的,而不是生成的OpenAPI镜像。
状态
该项目现在包括一个可用的Java 21 MCP服务器脚手架,其中包含用于身份验证/会话、帐户、市场数据和订单工作流的分组工具。
当前MVP覆盖范围:
- Java 21构建通过Maven强制执行
stdio传输优先,可流式传输HTTP作为后续- 默认情况下,生产目标配置,沙箱作为显式覆盖可用
- 共享Consorsbank HTTP客户端,带有标准化的API错误映射
- 龙目为当前支持的端点曲面提供DTO支持
- 用于账户、头寸、绩效、报价、交易场所、订单、事前成本和交易状态轮询的分组MCP工具
为什么这个项目存在
Consorsbank已经提供了大量的交易API,但Java中没有MCP服务器将最有用的交易和投资组合工作流打包为面向人工智能客户端和本地自动化的工具界面。
此存储库旨在:
- 提供Java原生MCP实现
- 将Consorsbank的异步交易流程映射到符合人体工程学的MCP工具中
- 使账户和交易操作更容易从MCP感知环境中进行编排
- 明确安全敏感操作,如订单下达和会话TAN处理
范围
目前的MVP关注的是交易核心,而不是整个API表面。
已实施的工具组:
- 身份验证和会话
- 认证数据 - 会话级别 - 会话级别提升 - 会话TAN激活和停用 - 配置文件事务状态轮询
- 账户和投资组合
- 证券账户 - 清算账户 - 职位 - 位置历史 - 演出
- 市场和参考数据
- 交易场所 - 引号 - 事前成本
- 订单和工作流程
- 订单列表和订单详细信息 - 创建和更新订单条目 - 使用交易身份验证下订单条目 - 创建和更新订单更改 - 下订单更改 - 创建、更新和接受报价单条目 - 取消订单 - 轮询订单事务状态,直到终端或超时
超出第一个里程碑的范围:
- 完整的OpenAPI覆盖范围
- 储蓄计划工作流程
- MCP进程内的生产级OAuth回调托管
- 高级部署打包
建筑方向
目前的设计集中在几个清晰的层次上:
config:环境解析、运行时配置、基本URL选择http:键入Consorsbank客户端、共享标头、HAL/JSON处理、规范化错误映射model:支持的API曲面的请求和响应DTOtools:按域分组的MCP工具注册workflow:多步骤交易和投票工作流程- 根引导:MCP服务器启动和
stdio运输线路Main
这使代码库保持明确和可维护,而不是依赖于大量生成的代码。
Consorsbank工作流模型
API的一些特性决定了服务器的设计:
- 交易是基于工作流程的,而不是基于单次通话的。
- 下单通常如下
create draft -> place -> poll transaction state. - 事务身份验证取决于用户配置的方法,例如
tan,session,或secureMessage. - 会话TAN对自动化很重要,但并非所有帐户设置都允许相同程度的无人值守执行。
- 一些操作异步完成,并使用事务状态资源,而不是立即获得最终订单结果。
MCP服务器将把这些作为显式工具和工作流助手公开,而不是将它们隐藏在模棱两可的“什么都做”操作后面。
运行时和依赖关系
当前基线:
- Java 21
- 梅文
- 官方Java MCP SDK
- Java开发工具包
HttpClient - Jackson用于JSON处理
- 龙目岛用于减少DTO和辅助样板
该项目在Maven构建中有意强制执行到Java 21。
计划配置
预期的环境变量将包括以下值:
CONSORS_SANDBOX=false
CONSORS_BASE_URL=https://api.consorsbank.de/trading
CONSORS_CLIENT_ID=your-client-id
CONSORS_CLIENT_SECRET=your-client-secret
CONSORS_REDIRECT_URI=http://localhost:8787/callback
CONSORS_ACCESS_TOKEN=
CONSORS_REFRESH_TOKEN=
CONSORS_REQUEST_TIMEOUT_SECONDS=30
CONSORS_POLL_INTERVAL_MILLIS=1500
CONSORS_MAX_POLL_ATTEMPTS=10在实施过程中,确切的名称可能会略有变化,但服务器仍将由环境驱动。生产是默认目标;集 CONSORS_SANDBOX=true 仅当您明确需要沙箱API时。
启动器配置模板包含在 .env.example.
工具目录
当前的MCP工具包括:
get_server_infoping_consorsbank_apiget_authentication_dataget_session_levelelevate_session_levelactivate_session_tandeactivate_session_tanget_profile_transaction_stateget_securities_accountsget_clearing_accountsget_positionsget_positions_historyget_performanceget_trading_venuesget_quoteget_ex_ante_costget_ordersget_ordercreate_order_entryupdate_order_entryplace_order_entrycreate_and_place_order_entrycreate_order_changeupdate_order_changeplace_order_changecancel_ordercreate_quote_order_entryupdate_quote_order_entryaccept_quote_order_entrypoll_order_transaction_stateget_order_transaction_state
本地跑
使用Java 21在本地运行服务器:
export JAVA_HOME="$HOME/.sdkman/candidates/java/21.0.7-graal"
export MAVEN_HOME="$HOME/.sdkman/candidates/maven/current"
export PATH="$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH"
cp .env.example .env
mvn test
mvn exec:java对于沙盒验证,请在启动服务器之前设置这些值:
export CONSORS_SANDBOX=true
export CONSORS_BASE_URL=https://api.consorsbank.de/sandbox/trading
export CONSORS_ACCESS_TOKEN=your-sandbox-access-token看 docs/sandbox-validation.md 以获取最低烟雾测试清单。
安全和合规说明
- 该项目是非官方的,不隶属于Consorsbank或得到Consorsbank的认可。
- 您有责任遵守Consorsbank的API条款、交易规则和所有适用法规。
- 自动交易是有风险的。此软件不是财务建议。
- 订单下达和会话TAN流可以产生真正的财务影响。在使用真实凭证或真钱之前,仔细审查所有配置和工作流程假设。
许可证
此存储库是公开的,源代码可用,但未经存储库所有者明确许可,不得在商业或公司产品中使用。
看 LICENSE 确切的术语。
重要摘要:
- 允许个人、教育、研究和评估使用
- 许可条款允许修改和非商业性再分发
- 商业、企业、SaaS、客户交付或产品化使用需要事先获得书面许可
存储库文件
此处包含的标准存储库文件:
README.md用于项目概述和入职培训LICENSE有关使用权限和限制CONTRIBUTING.md对贡献的期望SECURITY.md负责任的披露指导CODE_OF_CONDUCT.md满足社区期望.gitignoreJava/Maven/编辑器卫生.env.example用于计划的本地配置.editorconfig用于基线格式一致性
贡献
欢迎捐款,特别是在以下方面:
- Consorsbank端点建模
- MCP工具人机工程学
- 安全交易工作流程抽象
- 文档改进
- 测试覆盖率
请阅读 CONTRIBUTING.md 在打开pull请求之前。
安全
如果您发现安全问题,请按照中的指导进行操作 SECURITY.md 避免在公开问题上公布敏感细节。
参考文献
下一个里程碑
当前MVP之后可能采取的下一步措施:
- 在交易核心之外增加更深层次的端点覆盖
- 添加具体的MCP客户端配置示例
- 引入流式HTTP传输
- 围绕工具输入和HTTP错误处理扩展自动化测试
