PA MCP Server
PA MCP Server
MCP-Server, der die Portfolio Advisor (PA)-Engine als Tool für KI-Agenten bereitstellt.
Die quantitative Engine ist in pa_engine/src enthalten, sodass das Projekt
eigenständig ist und nicht von Ordnern oder Daten außerhalb der Distribution abhängt.
Produktdokumentation und Einschränkungen: PRODUCT_OVERVIEW.md.
Datenschutzvorlage, die einer professionellen Prüfung unterzogen werden muss:
PRIVACY_NOTICE_TEMPLATE.md.
Ergebnis des Pre-Release-Audits: AUDIT_REPORT.md.
Was es bereitstellt
Tool | Ausgabe |
| Einstiegspunkt für allgemeine Anfragen zu Kapital, Risiken und Szenarien |
| Zweck, Methode, Grenzen, Datenschutz und korrekter Ablauf |
| Illustrative, kommentierte Shortlist nach Währung, zu bestätigen |
| Prüfung von Ticker, Historie und Währung mit Ablehnungsgründen |
| Vollständiges JSON-Schema mit required, default, Einheiten, enum und Minimalbeispiel |
| Offline-Validierung: missing, errors, warnings und normalisierte Konfiguration |
| MCP-App-Panel zur Prüfung und Bestätigung der vorausgefüllten Parameter |
| Interaktiver Bericht, der nur mit gültiger expliziter Genehmigung ausgeführt wird |
Der Agent ruft zunächst schema_input_pa auf, erfasst die Daten und übergibt die
Konfiguration an valida_input_pa. Wenn valid=true ist, ruft er
prepara_simulazione auf: Der Client zeigt ein Panel mit den ausgefüllten
Parametern, und die Simulation bleibt angehalten. Der Benutzer kann die Werte
ändern und muss explizit bestätigen. Das Widget friert die Konfiguration ein und
sendet dem Agenten eine interne Genehmigungskennung; der Agent ruft dann direkt
analisi_completa auf, das Optimierung, erwartete Renditen, Monte Carlo,
Stresstests und Benchmark-Vergleich umfasst. Die Genehmigung läuft nach 2 Stunden
ab und wird verbraucht, sobald der vollständige Bericht erfolgreich abgeschlossen
wird.
Wenn der Benutzer eine Liste von Instrumenten bereitstellt, übergibt der Agent sie
an verifica_strumenti und erklärt jede Ablehnung im Einzelnen. Wenn er keine
Liste hat und Vorschläge anfragt, verwendet der Agent proponi_strumenti,
präsentiert Ticker, Name, Börse, geschätzte Kosten und Kommentar und wartet dann
auf eine explizite Bestätigung, bevor er die Prüfung und Konfiguration durchführt.
Es findet kein automatischer Ersatz statt.
cost_annual_pct wird in Prozentpunkten ausgedrückt: 0.50 bedeutet 0,50%
pro Jahr. Clients ohne MCP-Apps-Unterstützung können den Entwurf validieren und
anzeigen, aber den interaktiven Genehmigungsablauf nicht abschließen.
Einrichtung
python3.13 -m venv .venv
./.venv/bin/python -m pip install .Zum Ändern und Neuerstellen der Widgets werden außerdem Node.js 20+ und npm ci
benötigt.
Die Engine Portfolio Advisor ist im Projekt unter pa_engine/src enthalten,
daher ist der Server eigenständig. Für die Entwicklung kann auf eine alternative
Engine verwiesen werden:
export PA_ENGINE_DIR="/percorso/del/motore" # opzionale, solo sviluppoStart
Lokal (stdio):
./.venv/bin/python -m pa_mcp.serverStreamable HTTP, für Remote-Connector und MCP-Apps-Tests:
PA_MCP_TRANSPORT=http PA_MCP_PORT=3000 \
./.venv/bin/python -m pa_mcp.serverMCP-Endpunkt: http://127.0.0.1:3000/mcp. Für Web-Clients muss er vorübergehend
über HTTPS bereitgestellt oder auf einem Remote-Host gehostet werden. Der lokale
HTTP-Start aktiviert keine Authentifizierung und darf nicht direkt in Produktion
veröffentlicht werden.
Genehmigungen, Überprüfungen und Cache sind persistent und teilbar (sie überleben einen Neustart), wenn ein beschreibbarer Statuspfad aktiviert wird:
PA_STATE_PATH=/var/lib/pa_mcp/state.db PA_MCP_TRANSPORT=http PA_MCP_PORT=3000 \
./.venv/bin/python -m pa_mcp.serverOhne PA_STATE_PATH bleibt der Status im Speicher (übliches Verhalten für
lokale Entwicklung und Tests).
OAuth (HTTP, vor dem Freigeben des Endpunkts)
OAuth 2.1 (Scope pa.read) ist über FastMCP OAuthProvider verfügbar:
PA_OAUTH=1 PA_PUBLIC_BASE_URL=https://pa.example.com \
PA_MCP_TRANSPORT=http PA_MCP_PORT=3000 ./.venv/bin/python -m pa_mcp.serverWenn PA_OAUTH nicht gesetzt ist, bleibt der HTTP-Server ohne Authentifizierung
(geeignet für Entwicklung und Test). In Produktion sollten die OAuth-Tokens im
gemeinsamen Store persistiert und eine mandantenbezogene Autorisierung konfiguriert
werden.
Schutz der Infrastruktur (HTTP)
PA_RATE_LIMIT_PER_MIN— Token-Bucket pro IP (HTTP 429).PA_MAX_BODY_BYTES— Begrenzung des Anfrage-Bodys (HTTP 413).PA_ANALYSIS_TIMEOUT_SECONDS— Harte Deadline für Analysen (Standard: 60 s; gibt Slot und Genehmigung frei).PA_ANALYSIS_QUOTA_PER_HOUR— Stündliches Analyse-Kontingent pro Mandant (0 = unbegrenzt); Mandantenschlüssel überPA_TENANT(Standard:anonymous).
Observability (HTTP)
GET /health/live— Liveness.GET /health/ready— Readiness (503, wenn nicht bereit; Status des Stores).GET /metrics— Betriebskennzahlen (ohne personenbezogene Daten).
Deployment und Dokumente
Zum Veröffentlichen des Connectors wird ein stabiler Endpunkt benötigt (nicht der
Tunnel): folge DEPLOY_GUIDE.md (enthält Dockerfile). Entwürfe der
Datenschutzerklärung und der Nutzungsbedingungen in PRIVACY_NOTICE_DRAFT.md und
TERMS_OF_USE_DRAFT.md (zu prüfen).
Für Clients sind die neuen Module pa_mcp/auth.py, pa_mcp/limits.py,
pa_mcp/state.py, pa_mcp/oauth_provider.py, pa_mcp/quotas.py in der Wheel
enthalten.
Der Server kommuniziert über stdio: Jeder MCP-Client kann ihn anbinden. Beispielkonfiguration für einen generischen Client:
{
"mcpServers": {
"pa-engine": {
"command": "/percorso/pa-mcp-server/.venv/bin/python",
"args": ["/percorso/pa-mcp-server/server_script.py"],
"cwd": "/percorso/pa-mcp-server"
}
}
}Test der Tools
Offline-Test des Vertrags und des Genehmigungsablaufs:
./.venv/bin/python -m unittest discover -s tests -p 'test_*.py'
node scripts/test_config_widget_render.js
node scripts/test_widget_render.jsVollständiger Selbsttest mit Marktdaten:
./.venv/bin/python -m pa_mcp.selfcheckFührt alle Tools gegen eine Testkonfiguration mit echten Daten aus (erfordert Netzwerkzugriff auf Yahoo Finance) und gibt die Schlüssel jeder Ausgabe aus.
Hinweis zur Engine
Der Wrapper verwendet pa/src der PA-Engine wieder. Er berechnet nichts neu:
Er delegiert die gesamte Pipeline an die Engine und serialisiert den von
export_report_json erzeugten JSON-Bericht. Wenn die Engine ihre Schnittstelle
ändert, pa_mcp/engine.py aktualisieren.
Auf die Engine angewandter Bugfix (numpy 2.x)
pa/src/core/stress_test.py: weights.to_numpy(dtype=float) liefert mit numpy 2.x
ein schreibgeschütztes Array zurück, und target /= target.sum() schlug mit
ValueError: output array is read-only fehl. Behoben mit
np.array(weights.to_numpy(dtype=float)). Der Fix wird in der Engine in den
Upstream übernommen.
Roadmap
Professionelle Prüfung von Finanzen, Steuern, Datenschutz und Datenlizenzen.
Remote-Deployment mit OAuth 2.1, Mandantenisolierung, Kontingenten und Observability.
Veröffentlichung in den unterstützten Registries nach unabhängiger Security-Review.
Die blockierende Checkliste befindet sich in GO_LIVE_CHECKLIST.md.
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
Portfolio risk analytics — VaR, Monte Carlo, optimization, options Greeks, stress testing.
Deterministic what-if & scenario simulation for AI agents: projections, sensitivity & break-even.
Build, backtest, and deploy quantitative trading strategies from your AI agent.
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/Manuciao88/pa-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server