broker-mcp-demo
Broker MCP Demo
Ein Demo-MCP-Server für Broker (Python-Version) basierend auf FastMCP, mit zwei Vereinfachungen:
Authentifizierung über statischen API-Key (
Authorization: Bearer <api-key>), ohne OAuth;Keine echten Service-Adressen eingebaut: Die Adresse des nachgelagerten Broker-Backends wird vom Nutzer über Umgebungsvariablen selbst konfiguriert. Wenn nicht konfiguriert, geben die Tools integrierte Beispieldaten zurück (die Antwort trägt die Markierung
"mock": true), sofort einsatzbereit.
Architektur
┌─────────────┐ Bearer <api-key> ┌────────────────────┐ HTTP ┌──────────────┐
│ MCP Client │───────────────────▶│ Broker MCP Demo │─────────▶│ 券商后端服务 │
│ (Claude…) │◀───────────────────│ (API key 校验) │◀─────────│ (自行配置) │
└─────────────┘ └────────────────────┘ └──────────────┘Anfrageablauf:
Der Client sendet eine Anfrage an
POST /mcpmitAuthorization: Bearer <api-key>.Der Server vergleicht den Key nacheinander mit den in
BROKER_MCP_API_KEYSkonfigurierten Werten; bei Übereinstimmung wird die Anfrage durchgelassen, andernfalls wird401zurückgegeben.Tool-Aufrufe werden an das Broker-Backend unter
BROKER_MCP_BACKEND_BASE_URLweitergeleitet; wenn nicht konfiguriert, werden integrierte Beispieldaten zurückgegeben.
Tools
Insgesamt 10 Beispiel-Tools, die vier Kategorien abdecken: Marktdaten, Positionen/Bestellungen, Handel und Wissensdatenbank. Die Pfade der nachgelagerten Schnittstellen sind nur schematisch; beim Anschluss an ein echtes Backend muss lediglich der path in tools/ entsprechend angepasst werden.
Marktdaten (market.py)
Tool | Parameter | Beschreibung |
|
| Sucht Instrumente nach Firmenname/Code und ermittelt |
|
| Fragt die aktuellen Marktdaten eines Instruments ab |
|
| Historische Kerzen; |
Positionen / Vermögen / Bestellungen (portfolio.py)
Tool | Parameter | Beschreibung |
| — | Aktuelle Positionsliste (inkl. Gewinn/Verlust) |
| — | Kontovermögen (Bargeld, Marktwert, Gesamtvermögen usw.) |
|
| Bestellliste; |
|
| Details einer einzelnen Bestellung |
|
| Storniert eine nicht ausgeführte Bestellung |
Handel (trade.py)
Tool | Parameter | Beschreibung |
|
| Erstellt (übermittelt) eine Handelsbestellung |
order_type:MARKET_ORDER(Marktpreis) /LIMIT_ORDER(Limit, erfordertprice).side:BUY/SELL;validity:GOOD_FOR_DAY/GOOD_TILL_CANCELLED.
Wissensdatenbank (knowledge.py)
Tool | Parameter | Beschreibung |
|
| Durchsucht die Plattform-Wissensdatenbank (QA zu Kontoeröffnung, Ein-/Auszahlungen, Handelsregeln usw.) |
language:zh-Hans/zh-Hant/en;topBereich 3~20.In echten Projekten übernimmt das Backend in der Regel Vektorsuche + semantisches Ranking (z. B. Azure Cognitive Search, Elasticsearch, Milvus usw.); diese Demo ist an keine konkrete Implementierung gebunden.
Jedes Tool ist mit dem
log_tool-Dekorator aus decorators.py versehen, der einheitlich den Aufrufer (die dem API-Key entsprechende client_id), die Eingabeparameter und die Dauer protokolliert. Beim Hinzufügen neuer Tools werden diese im entsprechenden Modul innerhalb vonregister(mcp)mit@mcp.tool+@log_tooldeklariert und inregister_tools()in tools/__init__.py registriert.
Ausführung
pip install -r requirements.txt
cp .env.example .env # 按需修改 API key、后端地址
python -m broker_mcp_demoStandardmäßig lauscht der Server auf 0.0.0.0:8000, der MCP-Endpunkt ist /mcp, der Health-Check unter /health.
Konfiguration
Alles wird über Umgebungsvariablen (Präfix BROKER_MCP_) oder .env injiziert, siehe .env.example:
Variable | Beschreibung |
| Erforderlich (außer Authentifizierung ist deaktiviert). Kommagetrennt, jeder Eintrag als |
| Basis-URL des nachgelagerten Broker-Backends (die Demo enthält keine echten Adressen, selbst konfigurieren); bei leerem Wert geben die Tools Beispieldaten zurück |
| Lauschadresse / Port, Standard |
|
|
|
|
| Timeout in Sekunden für nachgelagerte Anfragen, Standard |
Client-Anbindung
Am Beispiel von Claude Code (HTTP-Modus + API-Key):
claude mcp add --transport http broker-demo http://localhost:8000/mcp \
--header "Authorization: Bearer demo-key-1"Oder in der JSON-Konfiguration des MCP-Clients:
{
"mcpServers": {
"broker-demo": {
"type": "http",
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer demo-key-1"
}
}
}
}stdio-Modus
Für lokales Debugging, über stdin/stdout und ohne Authentifizierung:
BROKER_MCP_TRANSPORT=stdio python -m broker_mcp_demoVerzeichnisstruktur
src/broker_mcp_demo/
├── __main__.py 入口(python -m broker_mcp_demo)
├── config.py 环境变量 / .env 配置读取
├── auth.py API key 鉴权(ApiKeyVerifier)
├── identity.py 从鉴权上下文解析 client_id
├── backend.py 下游后端 HTTP 调用封装(未配置地址时回退示例数据)
├── server.py FastMCP 实例装配
└── tools/ MCP 工具
├── __init__.py register_tools() 注册入口
├── decorators.py log_tool 计时日志装饰器
├── market.py 行情
├── portfolio.py 持仓 / 资产 / 订单
├── trade.py 下单
└── knowledge.py 平台知识库搜索License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
Hosted MCP for stocks, options, Greeks, brokers, order previews, alerts, and workflows.
Open-source MCP server for Zerodha Kite Connect. Portfolio, market data, backtesting, alerts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RockFlow-AI/broker-mcp-demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server