credit-risk-intelligence-mcp
MCP server that exposes the credit scoring model's deterministic tools (probability of default, SHAP explanations, typicality check, financial ratios) to AI agents, enabling natural language credit risk assessment.
README
π³ Credit Risk Intelligence System
Un sistema di credit scoring che valuta il rischio di un cliente e spiega la sua decisione in linguaggio naturale β un modello statistico interpretabile e verificato fa i calcoli, 4 agenti AI (Claude) li orchestrano e li raccontano.
In azione
Un utente compila i dati di un cliente in un form web (nessun terminale richiesto), e il sistema restituisce in pochi secondi: probabilitΓ di default, spiegazione dei fattori che l'hanno determinata, verifica di quanto ci si puΓ² fidare della previsione, e rapporti finanziari β il tutto scritto come un vero credit memo.
streamlit run src/agents/app.py
Esempio di output (cliente con storico di pagamento regolare ma limite di credito e rimborsi contenuti): PD: 44.72% β rischio medio-alto Β· AffidabilitΓ : alta (cliente tipico, 99.91Β° percentile) Β· Fattore protettivo principale: pagamento puntuale (PAY_0) Β· Fattore di rischio principale: rimborsi storicamente bassi rispetto al limite concesso
Come funziona, in breve
βββββββββββββββββββββββ
β SUPERVISOR AGENT β
β (sintetizza tutto) β
ββββββββββββ¬ββββββββββββ
β
βββββββββββββββββ¬βββββββββββΌβββββββββββ¬ββββββββββββββββ
β β β β
βΌ βΌ βΌ βΌ
βββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββ
β Risk Modeling β βExplainabilityβ β Critic β β Rapporti β
β Agent β β Agent β β Agent β β finanziari β
β β β β β β β β
β "Quanto rischiaβ β "PerchΓ©?" β β"Posso fidarmi di β β"Come si β
β questo β β (SHAP) β β questa previsione?"β β comporta il β
β cliente?" β β β β (Mahalanobis) β β cliente?" β
βββββββββ¬βββββββββ ββββββββ¬ββββββββ βββββββββββ¬βββββββββββ ββββββββ¬ββββββββ
β β β β
βββββββββββββββββββ΄βββββββββββ¬βββββββββββ΄ββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββ
β MODELLO STATISTICO (Logistic β
β Regression, AUC-ROC 0.7629) β
β L'UNICA fonte di ogni numero. β
β Nessun agente inventa mai una β
β probabilitΓ o un contributo. β
ββββββββββββββββββββββββββββββββββββ
Ogni agente chiama uno strumento Python deterministico (mai una stima "a mente" della LLM) e traduce il risultato in linguaggio naturale. Lo stesso modello Γ¨ raggiungibile anche via server MCP standard, verificato con l'MCP Inspector ufficiale.
Risultati
| Metrica | Valore |
|---|---|
| AUC-ROC (test set / 5-fold CV) | 0.7629 / 0.7717 Β± 0.0087 |
| Recall @ soglia ottimizzata | 0.8117 |
| Variabile piΓΉ predittiva | PAY_0 (storico pagamento recente), IV = 0.898 |
| Test automatici | 21, tutti superati |
| Costo medio per credit memo | β $0.03 (misurato) |

PerchΓ© Γ¨ piΓΉ di un modello
Molti progetti di data science si fermano al modello. Questo va oltre, con scelte metodologiche esplicite e verificate:
- Nessun data leakage: ogni calcolo statistico (WOE, binning, PSI) usa solo il train set, mai il test.
- Due modelli confrontati onestamente: Logistic Regression scelta sopra Gradient Boosting nonostante quest'ultimo ottenga metriche leggermente superiori β il guadagno non giustificava la perdita di interpretabilitΓ in un contesto normato come il credito.
- Explainability verificata matematicamente: i contributi SHAP di ogni cliente ricostruiscono esattamente, cifra per cifra, la probabilitΓ del modello.
- Robustezza: limite di iterazioni sugli agenti, gestione degli errori di rete e di input malformato, validazione dei dati in ingresso, guardrail espliciti sullo scopo β non solo "il caso felice".
- Limiti dichiarati, non nascosti: l'Expected Loss usa stime di settore per LGD/EAD (non presenti nel dataset), documentato esplicitamente nel codice.
Come lanciare il progetto
# Ambiente
python -m venv venv && .\venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
# Pipeline dati -> modello (necessaria prima di usare gli agenti)
python src\data\run_pipeline.py
# Interfaccia web
streamlit run src\agents\app.py
# Oppure un singolo agente da terminale
python src\agents\supervisor_agent.py
# Test automatici
python -m pytest tests\ -v
# Server MCP (richiede Node.js per l'Inspector)
npx @modelcontextprotocol/inspector python src\agents\mcp_server.py
Richiede una ANTHROPIC_API_KEY in un file .env nella root del progetto.
Il dataset
"Default of Credit Card Clients", UCI Machine Learning Repository (Yeh & Lien, 2009). 30.000 clienti reali di carte di credito a Taiwan, 23 variabili esplicative, licenza CC BY 4.0.
Approfondimenti tecnici
<details> <summary><strong>Sistema multi-agente, in dettaglio</strong></summary>
- Risk Modeling Agent β chiama
score_new_client, mai genera il numero da solo. - Explainability Agent β chiama
explain_client_shap(SHAP conLinearExplainer, esatto per modelli lineari). - Critic Agent β chiama
check_client_typicality(distanza di Mahalanobis), usa Claude Haiku per contenere i costi su un compito semplice. - Supervisor Agent β orchestra tutti gli strumenti sopra piΓΉ
calculate_financial_ratios, dΓ prioritΓ esplicita agli avvisi di atipicitΓ o dati implausibili nella sintesi finale.
Verificato concretamente: lo stesso cliente valutato tramite script diretto, tre agenti diversi, e il server MCP produce sempre lo stesso identico risultato (0.4472).
</details>
<details> <summary><strong>Metodologia del modello, in dettaglio</strong></summary>
- Data Quality Assessment: 345 anomalie corrette in
EDUCATION, 54 inMARRIAGE; un caso analogo inPAY_0...PAY_6(valori-2/0non documentati ma strutturali) identificato e volutamente non "corretto", perchΓ© parte reale del dataset. - Selezione delle feature su Information Value e matrice di correlazione: escluse
MARRIAGE(IV troppo basso) e le 6BILL_AMT(IV bassissimo e correlate tra loro). - Soglia di decisione ottimizzata su un criterio di business esplicito (Recall β₯ 0.80), con il trade-off in Precision quantificato, non ignorato.
</details>
<details> <summary><strong>Struttura del progetto</strong></summary>
βββ data/raw/ # dataset grezzo
βββ models/ # modello, trasformazioni, grafici
βββ src/
β βββ data/ # pipeline: caricamento, pulizia, feature engineering, training
β βββ agents/ # 4 agenti Claude, server MCP, interfaccia Streamlit
βββ tests/ # 21 test automatici
</details>
Progetto di Alessandro Donnini β MSc Marketing Management, Bocconi. Costruito come pezzo di portfolio per una transizione verso ruoli di Data Science / Corporate Finance.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.