MifosX Self Service MCP

March 4, 2026 · View on GitHub

MifosX Self Service MCP is a Model Context Protocol (MCP) server built using FastMCP (Python). It exposes a set of AI-callable tools that allow MCP-compatible clients (such as Claude Desktop or DeepChat) to securely interact with the Apache Fineract / MifosX Self-Service APIs.

This project enables AI-driven banking workflows such as authentication, account access, beneficiary management, loans, savings, and transfers — while keeping all sensitive logic on the server side.

Features

  • Register new self-service users.
  • Confirm user registration.
  • User login and authentication.
  • Manage client information.
  • Manage beneficiaries (add, list, update, delete).
  • View client accounts and transactions.
  • Manage loans (view products, applications, transactions, charges).
  • Manage savings accounts (products, applications, transactions, charges).
  • Manage guarantors for loans.
  • Manage share accounts and products.
  • Register for push notifications.
  • Perform third-party account transfers.

Architecture

The MCP server acts as a secure bridge between your AI client and the Mifos/Fineract backend.

graph LR
    A[AI Client] -- MCP Protocol --> B[FastMCP Server]
    B -- REST API --> C[MifosX / Fineract]
    C -- Data --> B
    B -- Context --> A

Project Structure

The codebase is organized into a modular, maintainable structure:

mcp-mifosx-self-service/

├── main.py              # MCP server entry point
├── mcp_app.py           # FastMCP app initialization

├── config/
│   └── config.py        # Environment-based configuration

├── routers/             # MCP tools grouped by domain
│   ├── auth_tools.py        # User registration & authentication
│   ├── client_tools.py      # Client information & accounts
│   ├── beneficiary_tools.py # Beneficiary management
│   ├── transfer_tools.py   # Third-party transfers
│   ├── loan_tools.py        # Loan products & accounts
│   ├── savings_tools.py     # Savings accounts & products
│   ├── guarantor_tools.py  # Loan guarantor management
│   ├── shares_tools.py     # Share accounts & products
│   └── notification_tools.py # Push notification registration

├── schemas/             # Pydantic request/response models
│   ├── registration.py
│   ├── authentication.py
│   ├── confirm.py
│   ├── beneficiary.py
│   └── transfer.py

├── utils/               # Shared helpers
│   ├── http.py          # Centralized HTTP client
│   └── auth.py          # Auth helpers (Basic Auth)

├── resources/           # MCP resources (context & docs)
│   ├── overview.py
│   ├── endpoints.py
│   └── workflows.py

├── requirements.txt
├── Dockerfile
├── docker-compose.yml
└── README.md

Installation

  1. Clone the repository:

    git clone https://github.com/openMF/mcp-mifosx-self-service.git
    cd mcp-mifosx-self-service
    
  2. Create and activate a virtual environment (recommended):

    python3 -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. Install the required dependencies:

    pip install -r requirements.txt
    

Configuration

The application connects to a Fineract API. Use environment variables (or a .env file) for customization:

VariableDescriptionDefault
MIFOS_BASE_URLBase URL of Fineract instancehttps://tt.mifos.community
MIFOS_TENANTTenant identifierdefault

For authentication, the application uses default credentials (maria/password), but these can be overridden using environment variables for better security and flexibility.

Running with Docker

The project includes Docker support for easy deployment:

# Build and run with docker-compose
docker-compose up --build

Using with Claude Desktop (MCP)

  • In Claude Desktop → Settings → Developer → Local MCP servers → Edit Config, add:
{
  "mcpServers": {
    "mifos-banking": {
      "command": "/ABSOLUTE/PATH/TO/venv/bin/python",
      "args": [
        "/ABSOLUTE/PATH/TO/main.py"
      ],
      "env": {
        "MIFOS_BASE_URL": "https://tt.mifos.community",
        "MIFOS_TENANT": "default"
      }
    }
  }
}

Restart Claude Desktop after saving.

Running the Server

To run the MCP server, execute the following command from the project's root directory:

python3 main.py

Example Usage (Natural Language) on Claude

Once the MCP server is connected, Claude can invoke the available tools automatically. You can paste the following prompts in Claude Desktop to verify that your configuration is working correctly:

  • Login using username maria and password password
  • Get my client information
  • Show my client accounts
  • List my beneficiaries
  • Get my loan accounts
  • Show my savings accounts

If these commands return valid responses, your MCP server is successfully connected and operational.

Available MCP Tools

The MCP server exposes the following AI-callable tools. Each tool internally maps to a Fineract self-service API call. These tools are invoked by MCP-compatible AI clients, not directly via HTTP.

Authentication

MethodMCP Tool NameDescription
POSTregister_self_serviceRegister a new self-service user
POSTconfirm_registrationConfirm user registration with token
POSTlogin_self_serviceAuthenticate a self-service user

Client & Accounts

MethodMCP Tool NameDescription
GETget_client_infoRetrieve client information
GETget_client_accountsRetrieve client accounts
GETget_client_chargesRetrieve client charges
GETget_client_transactionsRetrieve client transactions

Beneficiaries

MethodMCP Tool NameDescription
GETget_beneficiariesList all beneficiaries
GETget_beneficiary_templateGet beneficiary template for an account
POSTadd_beneficiaryAdd a new beneficiary
PUTupdate_beneficiaryUpdate an existing beneficiary
DELETEdelete_beneficiaryDelete a beneficiary

Loans

MethodMCP Tool NameDescription
GETget_loan_productsRetrieve available loan products
GETget_loan_product_detailsRetrieve loan product details
GETget_loan_account_detailsRetrieve loan account details
GETget_loan_transaction_detailRetrieve loan transaction detail
GETget_loan_account_chargesRetrieve loan charges
GETget_loan_templateRetrieve loan application template
POSTcalculate_loan_repayment_calendarCalculate loan repayment schedule
POSTsubmit_loan_applicationSubmit loan application
PUTupdate_loan_applicationUpdate loan application
POSTwithdraw_loan_applicationWithdraw loan application

Savings

MethodMCP Tool NameDescription
GETget_savings_productsGet list of savings products
GETget_savings_product_detailsGet savings product details
GETget_savings_account_detailsGet savings account details
GETget_savings_account_transactionsGet savings account transactions
GETget_savings_account_transaction_detailsGet transaction details
GETget_savings_account_chargesGet savings account charges
GETget_savings_account_template_rawGet savings account template
POSTsubmit_savings_applicationSubmit savings account application
PUTupdate_savings_account_applicationUpdate savings account application

Guarantors

MethodMCP Tool NameDescription
GETget_guarantor_templateGet template for creating guarantors
GETget_guarantor_listGet list of guarantors for a loan
POSTcreate_guarantorAdd a new guarantor for a loan
PUTupdate_guarantorUpdate an existing guarantor
DELETEdelete_guarantorDelete a loan guarantor

Shares

MethodMCP Tool NameDescription
GETget_share_product_listGet list of share products
GETget_share_product_detailsGet share product details

Notifications

MethodMCP Tool NameDescription
GETget_user_notification_detailsGet notification registration details
POSTregister_for_notificationsRegister device for push notifications
PUTupdate_notification_registrationUpdate notification registration

Transfers

MethodMCP Tool NameDescription
GETget_transfer_templateRetrieve transfer options
POSTmake_third_party_transferPerform a third-party account transfer

License

This project is licensed under the terms included in the LICENSE file.