Nova MFI – Mifos System Doctor MCP Server
Provides 50+ tools for audit, repair, notifications, GL posting, reporting, and complete Fineract administration — all accessible from any MCP-compatible AI client.
README
Nova MFI – Mifos System Doctor MCP Server
A fully independent, deployable Model Context Protocol (MCP) server built for Nova Microfinance Uganda's Helaplus / Mifos X platform. Provides 50+ tools for audit, repair, notifications, GL posting, reporting, and complete Fineract administration — all accessible from any MCP-compatible AI client (Claude Desktop, Cursor, etc.) and from the bundled Next.js control dashboard.
Contents
Mifos-MCP-Server/
├── src/
│ ├── index.ts # MCP server – 50+ tools over stdio
│ ├── types/index.ts # Shared TypeScript types
│ ├── utils/
│ │ ├── fineract-client.ts # Fineract REST client (paginated)
│ │ └── formatter.ts # Table + date helpers
│ ├── tools/
│ │ ├── deposit-breakdown.ts # Deposit fee calculator + GL posting
│ │ ├── notification-engine.ts # Africa's Talking SMS/WhatsApp + Twilio
│ │ ├── action-queue.ts # Officer action queue + bulk notify
│ │ ├── customer-journey.ts # Full loan lifecycle reconstruction
│ │ ├── fineract-admin.ts # Full CRUD for all Fineract entities
│ │ ├── portfolio-snapshot.ts # PAR, aging, collection efficiency
│ │ ├── audit-gl-mapping.ts # GL mapping audit
│ │ ├── validate-topup.ts # Top-up loan validator
│ │ └── issue-tracker.ts # Issues register tracker
│ ├── webhook-server/
│ │ └── index.ts # Express webhook receiver + REST API bridge
│ └── config/
│ ├── product-fee-schedules.json # Fee schedules: HAOJUE, SIMBA BOSS, SIMBA RAPTOR, TVS, HONDA
│ └── issues-register.json # 17 tracked system issues
├── dashboard/ # Next.js 14 control panel
│ ├── app/
│ │ ├── page.tsx # Portfolio overview + KPIs
│ │ ├── deposit-calculator/ # Deposit breakdown UI + GL post
│ │ ├── notifications/ # Manual/bulk SMS+WhatsApp
│ │ ├── workflow/ # Officer action queue
│ │ ├── reports/ # Report runner (CSV export)
│ │ ├── issues/ # Issue tracker
│ │ ├── admin/ # Fineract entity management
│ │ └── api/ # Next.js API routes (breakdown, post-gl)
│ └── ...
├── Dockerfile # MCP + webhook server image
├── docker-compose.yml # 3-service stack
├── .env.example # All environment variables documented
└── package.json
Quick Start
1. Clone and configure
git clone https://github.com/Chrl3y/Mifos-MCP-Server.git
cd Mifos-MCP-Server
cp .env.example .env
# Edit .env with your Fineract URL, tenant, and Africa's Talking credentials
2. Install and build
npm install
npm run build
3. Run with Docker Compose (recommended)
docker-compose up -d
Services started:
| Service | Port | Description |
|---|---|---|
mifos-system-doctor |
stdio | MCP server (connect from Claude Desktop) |
mifos-webhook-server |
4000 | Fineract event receiver + REST API bridge |
mifos-dashboard |
3001 | Next.js control panel |
Open the dashboard: http://localhost:3001
4. Connect to Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"nova-mfis": {
"command": "node",
"args": ["/path/to/Mifos-MCP-Server/dist/index.js"],
"env": {
"FINERACT_BASE_URL": "https://your-helaplus.com/fineract-provider/api/v1",
"FINERACT_TENANT_ID": "default",
"FINERACT_USERNAME": "mifos",
"FINERACT_PASSWORD": "your-password",
"AT_API_KEY": "your-africas-talking-api-key",
"AT_USERNAME": "your-at-username",
"AT_SENDER_ID": "NovaLoan"
}
}
}
}
Environment Variables
| Variable | Required | Description |
|---|---|---|
FINERACT_BASE_URL |
Yes | Base URL e.g. https://helaplus.novamfi.co.ug/fineract-provider/api/v1 |
FINERACT_TENANT_ID |
Yes | Tenant ID (usually default) |
FINERACT_USERNAME |
Yes | Mifos admin username |
FINERACT_PASSWORD |
Yes | Mifos admin password |
AT_API_KEY |
Yes* | Africa's Talking API key |
AT_USERNAME |
Yes* | Africa's Talking username |
AT_SENDER_ID |
No | SMS sender ID (default: NovaLoan) |
AT_WHATSAPP_NUMBER |
No | AT WhatsApp business number |
TWILIO_ACCOUNT_SID |
No | Twilio SID (WhatsApp fallback) |
TWILIO_AUTH_TOKEN |
No | Twilio auth token |
DEFAULT_NOTIFICATION_CHANNEL |
No | sms or whatsapp (default: whatsapp) |
WEBHOOK_PORT |
No | Webhook server port (default: 4000) |
DASHBOARD_PORT |
No | Dashboard port (default: 3001) |
*Required for notification features.
MCP Tools Reference
Deposit & GL
| Tool | Description |
|---|---|
calculate_deposit_breakdown |
Compute DR/CR lines for a client deposit by product |
post_deposit_to_gl |
Post a calculated breakdown as a Fineract journal entry |
Notifications
| Tool | Description |
|---|---|
send_notification |
Send SMS or WhatsApp to one or more phone numbers |
get_action_queue |
Scan loan notes for pending officer actions |
notify_officers_of_pending_actions |
Bulk-notify all officers with outstanding actions |
get_checker_queue |
List loans waiting for checker approval |
Customer Journey
| Tool | Description |
|---|---|
get_customer_journey |
Full lifecycle reconstruction for a loan ID |
get_nova_sop |
Return Nova Microfinance standard operating procedure document |
Portfolio Health
| Tool | Description |
|---|---|
get_portfolio_snapshot |
PAR, aging, collection efficiency |
get_par_aging |
PAR bucketed by overdue day ranges |
Audit & Validation
| Tool | Description |
|---|---|
audit_gl_mapping |
Check GL account assignments on all loan products |
validate_topup_loan |
Validate top-up using principalOutstanding only |
scan_standing_instructions |
Check for standing instructions firing on book balance |
check_reconciliation |
Reconcile Fineract vs external payment records |
Issue Tracker
| Tool | Description |
|---|---|
list_issues |
List all tracked issues with optional filters |
get_issue |
Get full details for one issue by ID |
update_issue_status |
Update status / assignee for an issue |
Fineract Admin
| Tool | Description |
|---|---|
list_loan_products / get_loan_product / create_loan_product / update_loan_product |
Loan product CRUD |
list_gl_accounts / create_gl_account / update_gl_account |
GL account management |
list_users / create_user / update_user |
User management |
list_staff / create_staff |
Staff management |
list_charges / create_charge |
Charge configuration |
list_offices / create_office |
Office management |
list_payment_types / create_payment_type |
Payment type configuration |
list_reports / run_report / create_report / update_report |
Reporting |
list_webhooks / create_webhook / delete_webhook |
Webhook management |
get_audit_log |
Fineract audit trail |
approve_loan / disburse_loan / reject_loan |
Loan lifecycle actions |
add_loan_note |
Add note + auto-notify assigned officer via WhatsApp |
get_loan_notes |
Retrieve all notes for a loan |
Deposit Breakdown – Product Fee Schedules
Pre-configured products in src/config/product-fee-schedules.json:
| Product Key | Label | Example Loan | Down Payment % |
|---|---|---|---|
HAOJUE |
Haojue Motorcycle | 630,000 UGX | varies |
SIMBA_BOSS_110 |
Simba Boss 110cc | 450,000 UGX | varies |
SIMBA_RAPTOR |
Simba Raptor | 510,000 UGX | varies |
TVS |
TVS Motorcycle | configurable | varies |
HONDA |
Honda Motorcycle | configurable | varies |
Fee components per product: Tracking (fixed), Insurance (% loan), Processing Fee (% loan), Arrangement Fee (% loan), App Fee (fixed), Form Fee (fixed), CRB (fixed), Loan Repayment Wallet (remainder).
To add a new product, edit src/config/product-fee-schedules.json — no code changes needed.
Issues Register
17 tracked issues covering:
- ISS-001 – Top-up loan deducts principal + future interest (CRITICAL)
- ISS-004 – GL misalignment: wallet vs revenue vs liability accounts
- ISS-006 – Standing instructions firing on book balance not confirmed deposits
- ISS-010 – Frozen/stuck loans with no lifecycle transition path
- ISS-011 – Data migration mismatches (legacy → Fineract)
- ISS-013 – Repayment date misalignment after restructure
- ISS-HUB-001 through ISS-HUB-006 – Pipeline feedback loops, uncaptured payments
- MF-001, MF-002 – GL account structure issues
- RPT-001 through RPT-008 – Reporting gaps and inaccuracies
Development
# Run MCP server in dev mode
npm run dev
# Run webhook server
npm run webhook
# Run dashboard
cd dashboard && npm install && npm run dev
Architecture
Claude Desktop / AI Client
│
│ stdio (MCP protocol)
▼
MCP Server (src/index.ts)
│
├─── Fineract REST API (your Helaplus instance)
├─── Africa's Talking (SMS / WhatsApp)
└─── Twilio (WhatsApp fallback)
Fineract Webhooks ──► Webhook Server (port 4000)
│
├─── Notification Engine (auto-notify officers)
└─── REST API bridge (dashboard ↔ MCP tools)
Next.js Dashboard (port 3001)
├── Portfolio Overview
├── Deposit Calculator
├── Notifications
├── Action Queue
├── Reports
├── Issue Tracker
└── Fineract Admin
License
Internal use — Nova Microfinance Uganda. Not for public distribution.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。