Skip to main content
Glama
waqarbytes

India Schemes MCP Server

by waqarbytes

๐Ÿ‡ฎ๐Ÿ‡ณ India Schemes MCP Server (india-schemes-mcp)

๐ŸŒ Product layer over this data: Yojana Dost โ€” live at https://yojana-dost.onrender.com/

Tests MCP TypeScript License: MIT

A production-grade Model Context Protocol (MCP) server providing structured tools for Claude Desktop, Cursor, and any MCP client to search, analyze, compare, and verify eligibility for 120+ Indian Central and State Government Welfare Schemes.


๐Ÿ› ๏ธ MCP Tools Exposed

This server exposes 6 production-grade tools with strict Zod schema validation and structured stderr diagnostic logging:

Tool Name

Parameters

Description

search_schemes

query, category?, state?, limit?

Full-text and keyword search across 120+ schemes with relevance scoring and filter support.

get_scheme

scheme_id

Retrieves complete verified details for a specific scheme (ministry, benefits, eligibility, rules, official URL).

check_eligibility

scheme_id, user_profile (age, gender, state, income, caste, land, occupation, disability)

Deterministic eligibility evaluation against official scheme criteria with detailed pass/fail breakdown.

get_deadline

scheme_id

Returns application deadlines, rolling enrollment cycles, renewal schedules, and official timeline rules.

compare_schemes

scheme_ids (array of 2โ€“5 IDs)

Generates side-by-side comparison matrix across benefits, eligibility thresholds, and required documentation.

get_application_steps

scheme_id

Step-by-step citizen application roadmap, portal URLs, offline submission offices, and document checklist.


Related MCP server: PlainGov-MCP

๐Ÿš€ Quickstart & Installation

Prerequisites

  • Node.js >= 20.0.0

  • npm >= 10.0.0

1. Clone & Build

git clone https://github.com/waqarbytes/india-schemes-mcp.git
cd india-schemes-mcp
npm install
npm run build

2. Test with MCP Inspector

Inspect and interact with all 6 tools using the official Model Context Protocol Inspector UI:

npm run inspect

๐Ÿ’ป Claude Desktop Configuration

To connect this server to Claude Desktop, add the configuration below to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "india-schemes": {
      "command": "node",
      "args": [
        "/ABSOLUTE/PATH/TO/india-schemes-mcp/dist/index.js"
      ],
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

Restart Claude Desktop, and click the ๐Ÿ”จ icon in chat to verify all 6 tools are loaded.


๐Ÿงช Testing

Run the full Vitest suite testing repository lookups, rule evaluation operators, token-bucket rate limiters, and tool schemas:

npm test

๐Ÿ›๏ธ Architecture & Reliability

  • Standard IO Transport: Connects via @modelcontextprotocol/sdk/server/stdio.js for zero-overhead local IPC.

  • Strict Error Handling: Errors return structured MCP text payloads with error codes rather than unhandled process terminations.

  • In-Memory Cache & Concurrency Protection: Scheme records are safely parsed and cached on demand.

  • Process Lifecycle: Clean SIGINT and SIGTERM listeners guarantee graceful shutdown.


๐Ÿ“œ License

MIT License. Copyright (c) 2026 Mohd Waqar.

Available Tools

6 tools
check_eligibilityCheck Scheme EligibilityC

Evaluate whether an applicant qualifies for a government scheme based on their profile (age, income, occupation, state, etc.) using a data-driven rules engine.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheme_idYesThe unique ID of the scheme to evaluate eligibility against
user_profileYesThe applicant's demographic and financial profile attributes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It mentions a data-driven rules engine but does not disclose read-only status, side effects, result format, error handling, or how missing optional profile fields affect evaluation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action and key inputs without padding. Every element contributes to understanding the toolโ€™s core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool accepts a nested profile object and has no output schema, so the description should clarify what eligibility evaluation returns or how results are structured. With no annotations and no return-value context, it is incomplete for a decision-support tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the nested user_profile fields and scheme_id are already fully documented. The description repeats example profile attributes (age, income, occupation, state) but adds no syntax, constraints, or meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pairing: evaluate applicant eligibility for a government scheme. It is clearly distinct from sibling tools like get_scheme, search_schemes, and compare_schemes, though it does not explicitly name alternatives or contrast itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus siblings, nor any prerequisites or exclusions. The description implies usage through its purpose, but an agent receives no explicit routing instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_schemesCompare SchemesB

Perform side-by-side comparative analysis of up to 5 government welfare schemes across benefits, eligibility rules, and deadlines.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheme_idsYesList of scheme IDs to compare (1 to 5 IDs, e.g. ['pm-suraksha-bima', 'pm-jeevan-jyoti', 'atal-pension-yojana'])

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It communicates the comparison dimensions, which is useful, but says nothing about permissions, error behavior for invalid/duplicate IDs, or the shape of the comparison output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It could have added one clause on output or constraints, but every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only comparison tool with one well-documented parameter and no output schema or annotations, the description covers intent and comparison dimensions. It stops short of describing what the comparison returns or any input constraints beyond the schema, leaving a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single scheme_ids parameter already documents the 1-5 range with illustrative IDs, so the schema does the heavy lifting. The description's 'up to 5' merely restates the maxItems constraint without adding new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (compare) and resource (government welfare schemes) and scopes it to up to 5 items across named axes (benefits, eligibility rules, deadlines). This clearly separates it from get_scheme/search_schemes, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'side-by-side comparative analysis of up to 5' implies when the tool is appropriate (multi-scheme comparison), but there is no explicit when-not guidance and no alternative tools named for single-scheme lookups or eligibility checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_application_stepsGet Application StepsB

Retrieve sequential, ordered application instructions and verified official portal links for any government scheme.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheme_idYesThe unique ID of the scheme (e.g., 'pm-kisan', 'pm-svanidhi', 'pm-vishwakarma')

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose two useful traits: steps are sequentially ordered and links are verified official portals. It omits expected behavior for invalid or unknown scheme_id, and says nothing about response shape or completeness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the resource and its key qualifiers, no filler and no repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with full schema coverage and no output schema, the description conveys what the caller gets back (ordered steps and verified links). Only error/not-found behavior is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one parameter, whose schema description already gives format and examples ('pm-kisan'). The description adds no syntax or constraint detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (retrieve) and a well-defined resource: sequential ordered application instructions plus verified official portal links for a government scheme. An agent can distinguish this from get_scheme or get_deadline, though it never names a sibling to sharpen the contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no conditions, and no mention of alternatives among the five sibling tools. The purpose implies a context (after identifying a scheme you need application steps), but the agent must infer it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_deadlineGet Scheme DeadlineB

Check the application deadline, remaining days, and open/closed enrollment status for an Indian government scheme.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheme_idYesThe unique ID of the scheme (e.g., 'pm-svanidhi', 'pm-kisan')

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only operation and lists the information returned (deadline, remaining days, enrollment status), but does not disclose permissions, error behavior, side effects, or any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core action and outputs with no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter retrieval tool with no output schema, the description communicates what will be returned conceptually (deadline, remaining days, enrollment status). It does not specify return format or edge cases, but it is largely sufficient for an agent to understand and call the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter (scheme_id) is fully documented in the schema. The description adds no parameter-specific syntax, format, or constraint details beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Check') and a precise resource set (application deadline, remaining days, open/closed enrollment status) for an Indian government scheme. It is clearly distinct from siblings like get_scheme and check_eligibility, though it does not explicitly name or contrast those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as get_scheme or check_eligibility, nor are there any prerequisites or exclusions. The intended use is only implied by the verb 'Check' and the deadline-focused outputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_schemeGet Scheme DetailsB

Fetch complete details of a specific Indian government scheme by its unique ID, including eligibility rules, benefits, deadlines, and application links.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheme_idYesThe unique identifier of the scheme (e.g., 'pm-kisan', 'atal-pension-yojana', 'pm-jay-ayushman')

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. 'Fetch' correctly conveys a read-only retrieval, and it discloses the shape of the payload (eligibility, benefits, deadlines, application links), but it says nothing about error behavior for an unknown ID or any auth/rate constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource, with the returned-field enumeration trailing as useful detail. No filler, though the field list slightly pads an otherwise tight sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter getter with no output schema and no annotations, the description covers the essentials and usefully previews the return content. It could add a not-found/error note, but nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the sole parameter is thoroughly documented with concrete example IDs. The description's 'by its unique ID' merely restates the schema, adding no format or constraint detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Fetch'), a specific resource ('complete details of a specific Indian government scheme'), and a precise selector ('by its unique ID'), plus an enumeration of the returned content. It implicitly separates itself from search_schemes by being an ID-based lookup, but it never names a sibling explicitly, so it falls short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. The by-ID framing implies it is a follow-up to search_schemes (which would supply the ID), but the agent is left to infer that relationship rather than being told, and no prerequisite or alternative is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_schemesSearch SchemesB

Search Indian government welfare schemes using keywords with relevance scoring. Supports optional filtering by category and state.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (1 to 50, default: 10)
queryYesKeywords to search across scheme name, ministry, description, or benefits (e.g., 'farmer income', 'health insurance', 'pension')
stateNoOptional state filter (e.g., 'Karnataka', 'Maharashtra', 'Delhi', 'All India')
categoryNoOptional category filter (e.g., 'Agriculture', 'Healthcare', 'Social Security', 'Housing', 'Women & Child', 'Financial Inclusion')

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It usefully discloses that results are relevance-scored and that filters are optional, but says nothing about matching semantics, permissions, or result ordering beyond relevance. A read-only search is inherently low-risk, but more behavioral context was available to give.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the core action front-loaded and the filtering capability second. No filler, though it is terse enough that it under-delivers on guidance rather than over-explaining.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter search tool with full schema coverage and no output schema, the definition is minimally adequate. It never hints at the shape of a result (fields returned, ranking detail) despite there being no output schema to cover that, leaving a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (query, state, category, limit) are already documented in the schema, including examples and bounds. The description only restates keyword search and optional category/state filtering, adding no syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (Indian government welfare schemes) plus the mechanism (keywords) and result behavior (relevance scoring). It implicitly distinguishes itself from the id-based sibling get_scheme, but never names it, so the differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mention of optional category/state filters implies when the tool is useful, but there is no explicit guidance on when to prefer search_schemes over get_scheme or compare_schemes, and no prerequisites are stated. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedcheck_eligibility
    • First observedcompare_schemes
    • First observedget_application_steps
    • First observedget_deadline
    • First observedget_scheme
    • First observedsearch_schemes

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have clearly distinct purposes: search, fetch details, eligibility check, deadline check, comparison, and application steps. However, get_scheme already returns deadlines and application links, so it slightly overlaps with get_deadline and get_application_steps, which could cause occasional misselection.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun or verb_noun_phrase pattern: get_scheme, search_schemes, check_eligibility, get_deadline, compare_schemes, get_application_steps. The convention is predictable throughout.

Tool Count5/5

Six tools are well-scoped for a government scheme information server. Each tool covers a distinct user need: discovery, detail lookup, eligibility, deadline tracking, comparison, and application guidance.

Completeness5/5

The tool set covers the full read-only lifecycle for Indian government welfare schemes: search, inspect, evaluate eligibility, check deadlines, compare options, and retrieve application steps. No obvious operation is missing for this domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Retrieves and explains government program information from official Canadian sources using a strict retrieval-first approach, with deterministic eligibility checks and full source attribution.
    6
    4 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to answer questions about Finnish social benefits (Kela) by providing tools for searching, checking eligibility, and getting application steps.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables LLMs to query real-time Indian bank branch details, postal PIN codes, validate GSTIN/PAN structures, check e-commerce serviceability, and compute GST breakdowns using free public APIs and offline verification logic.
    6
    13 npm
    1
    MIT