ifsc-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| IFSC_MCP_HOST | No | HTTP binding host. | 127.0.0.1 |
| IFSC_MCP_PATH | No | HTTP binding path. | /mcp |
| IFSC_MCP_PORT | No | HTTP binding port. | 8000 |
| IFSC_LOG_LEVEL | No | DEBUG/INFO/WARNING/ERROR. Logs go to stderr. | INFO |
| IFSC_DATASET_TTL | No | Bank-directory cache TTL, seconds. | 3600 |
| IFSC_MAX_RETRIES | No | Retries on timeout/429/5xx. | 2 |
| IFSC_API_BASE_URL | No | Upstream API host. | https://ifsc.razorpay.com |
| IFSC_MCP_TRANSPORT | No | stdio or http. | stdio |
| IFSC_CONNECT_TIMEOUT | No | Connect timeout, seconds. | 5 |
| IFSC_REQUEST_TIMEOUT | No | Read timeout, seconds. | 10 |
| IFSC_DATASET_BASE_URL | No | Bank dataset host. | https://raw.githubusercontent.com/razorpay/ifsc/master/src |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ifsc_lookupA | Retrieve full details for the single bank branch identified by an IFSC code. Use this whenever the user supplies an IFSC. It is the only tool that confirms a branch actually exists, and the only source of the branch's address, MICR, SWIFT/bic code, contact number and per-branch settlement-rail support (RTGS, NEFT, IMPS, UPI). Returns Failure codes: INVALID_INPUT (not 11 chars, or not 4 letters + '0' + 6 alphanumerics), NOT_FOUND (well-formed but no such branch), UPSTREAM_TIMEOUT / UPSTREAM_UNAVAILABLE / UPSTREAM_ERROR (service trouble). Args: ifsc: The 11-character IFSC to resolve, e.g. "SBIN0000001". Returns:
The branch record, or a structured error payload with Example: Ask "what is the MICR of HDFC0000001?" -> call ifsc_lookup("HDFC0000001"). |
| ifsc_validateA | Check whether a string is structurally a valid IFSC, without any network call. Applies the RBI/NEFC layout rules offline: exactly 11 characters, 4 leading letters for the bank code, a literal '0' as the 5th character, and 6 trailing alphanumeric branch characters. Choose this over Returns Args: ifsc: The candidate string to validate. Returns:
A validation report, always with Example:
Ask "is HFDCC00001 a valid IFSC?" -> call ifsc_validate("HFDCC00001") and
read |
| search_branchesA | Find bank branches when you have a bank, city, state or branch name but no IFSC. Filters are ANDed. At least one of Returns Prefer this over Args: bank_code: 4-letter bank code filter. city: City name filter. state: ISO 3166-2 state code filter, e.g. "IN-MH". branch: Exact branch-name filter. limit: Page size, 1-100 (default 10). offset: Row offset, for pagination. Returns: Matching branches with pagination metadata, or a structured error payload. Example: Ask "which Kotak branches are in Gurgaon?" -> call search_branches(bank_code="KKBK", city="GURGAON", limit=5). |
| branch_placesA | Discover the exact district and branch-name spellings that The branch search API matches Returns Call this when a search returned nothing and you need to check spelling - it is cheaper than guessing several more search calls. Args: bank_code: 4-letter bank code; required. state: ISO 3166-2 code to descend to districts, e.g. "IN-MH". district: District name to descend to branches, e.g. "MUMBAI". limit: Cap on returned values, 1-200 (default 200). Returns: The place names valid at the requested level, or a structured error payload. Example: Ask "which states does Kotak serve?" -> call branch_places(bank_code="KKBK"). |
| bank_directoryA | Look up the official 4-letter bank code for a bank, or list banks by name. Every IFSC begins with a 4-letter bank code, and this is the tool that maps
"HDFC Bank" -> "HDFC". Use it before Returns Data comes from the published razorpay/ifsc dataset and is cached, so
repeated calls are cheap. This returns banks, not branches - use
Args: query: Substring filter over code and name; omit for the full list. limit: Max rows, 1-500 (default 50, or 500 with no query). Returns: Matching bank codes and names, or a structured error payload. Example: Ask "what is the code for Kotak Mahindra?" -> call bank_directory(query="kotak") and read banks[0]["code"]. |
| bank_metadataA | Get bank-level facts for a 4-letter bank code: its type, MICR/IIN, and payment-rail support. Distinguishes bank classes that share an IFSC prefix pattern - private / public / foreign / small finance / payments / co-operative - and reports whether the bank as a whole supports UPI, ACH credit/debit, NACH debit and APBS. Choose this over Returns Args: bank_code: The 4-letter bank code, e.g. "KKBK". Returns: Bank metadata, or a structured error payload (INVALID_INPUT for a malformed code, NOT_FOUND for a code absent from the dataset). Example: Ask "is HDFC a private bank and does it support UPI?" -> call bank_metadata(bank_code="HDFC"). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: offline validation vs. online lookup, branch search vs. place-name discovery, bank-name-to-code mapping vs. bank-level capabilities. The descriptions explicitly guide when to prefer one over another, eliminating overlap. No two tools appear to do the same thing.
Names mix conventions: ifsc_lookup and ifsc_validate use entity_action, search_branches uses verb_entity, and branch_places, bank_directory, bank_metadata use entity_noun. While all are snake_case and readable, there is no single predictable pattern. This makes the set feel slightly inconsistent despite clear individual names.
Six tools is well-scoped for an IFSC/bank lookup service. Each tool serves a distinct, non-redundant role, covering validation, lookup, search, discovery, directory, and metadata. No tool feels extraneous or missing at this count.
The surface covers the full read-only lifecycle: offline validation, online branch resolution, filtered search with pagination, place-name discovery to aid search, bank name-to-code mapping, and bank-level capabilities. No obvious dead ends remain for typical IFSC lookups. Minor gaps like reverse MICR lookup are outside the stated domain.