Skip to main content
Glama
MSrikar7

findata-mcp

by MSrikar7
README.md
# 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

A3.8/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues