findata-mcp
# findata-mcp
**Financial Data Quality & AI Inference Evaluation MCP Server**
A Model Context Protocol (MCP) server that exposes six production-grade tools for AI agents working with financial datasets — covering data quality auditing, bias detection, model inference evaluation, outlier scoring, A/B testing, and KPI reporting.
Built to mirror the core responsibilities of Citi's Data Services & AI platform.
---
## Tools
| Tool | Description |
|---|---|
| `audit_data_quality` | Audits completeness, consistency, and machine-readability of financial records. Returns a quality score and remediation actions. |
| `detect_bias` | Detects demographic/categorical bias by comparing approval rates or amounts across cohort groups. Returns disparity ratios and a bias risk label (LOW / MEDIUM / HIGH). |
| `evaluate_model_inference` | Computes precision, recall, F1, AUC, and a PASS/FAIL verdict against configurable enterprise thresholds. |
| `score_outliers` | Flags anomalous records using Z-score and IQR methods across numeric fields. |
| `run_ab_comparison` | Compares two model variants on the same dataset and recommends a winner based on F1. |
| `generate_kpi_report` | Generates a structured KPI report — latency (avg/p95), throughput (rps), error rate, and SLA adherence — formatted for senior stakeholder delivery. |
---
## Installation
```bash
git clone https://github.com/srikarmanikonda/findata-mcp.git
cd findata-mcp
npm install
```
## Run
```bash
node src/index.js
```
The server communicates over **stdio** using the MCP protocol — connect it to any MCP-compatible client (Claude Desktop, ADK agent, etc.).
## Test
```bash
npm test
```
All 13 tests pass across all 6 tools.
---
## Claude Desktop / MCP Client Config
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"findata-mcp": {
"command": "node",
"args": ["/path/to/findata-mcp/src/index.js"]
}
}
}
```
---
## Example Usage (via MCP client)
**Audit data quality:**
```json
{
"tool": "audit_data_quality",
"records": [
{ "id": "R001", "loan_amount": 15000, "region": "Northeast", "approved": 1 },
{ "id": "R002", "loan_amount": null, "region": "Southeast", "approved": 0 }
],
"required_fields": ["id", "loan_amount", "region", "approved"],
"numeric_fields": ["loan_amount"]
}
```
**Detect bias:**
```json
{
"tool": "detect_bias",
"records": [...],
"group_field": "region",
"outcome_field": "approved",
"outcome_type": "binary"
}
```
**Evaluate model inference:**
```json
{
"tool": "evaluate_model_inference",
"predictions": [
{ "id": "R001", "predicted": 0.91, "actual": 1 },
{ "id": "R002", "predicted": 0.22, "actual": 0 }
],
"threshold": 0.5,
"min_precision": 0.75,
"min_recall": 0.70
}
```
---
## Stack
- **Runtime:** Node.js (ESM)
- **MCP SDK:** `@modelcontextprotocol/sdk`
- **Validation:** `zod`
- **Transport:** stdio (MCP standard)
---
## Author
Srikar Manikonda — [srikarmanikonda9@gmail.com](mailto:srikarmanikonda9@gmail.com)
TDQS
Scored across 6 tools
Each tool targets a distinct aspect of financial data analysis: data quality, bias detection, model evaluation, KPI reporting, A/B comparison, and outlier scoring. No two tools have overlapping purposes.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., audit_data_quality, detect_bias), making naming predictable and easy to understand.
With 6 tools, the server is well-scoped for its domain of financial data evaluation and reporting. Each tool serves a clear purpose without unnecessary redundancy.
The tool set covers core evaluation and analysis tasks comprehensively. Minor gaps exist (e.g., no data ingestion or visualization tools), but these are likely out of scope for the server's intended function.