Skip to main content
Glama
Aarya-Mhatre69

india-markets-mcp

india-markets-mcp

An MCP server that lets AI agents (Claude, Cursor, any MCP client) look up Indian equities and get simple, transparent technical signals. Built on public data via yfinance — no API keys.

Not investment advice. Data comes from Yahoo Finance and can be delayed or wrong.

Tools

Tool

What it does

get_quote(symbol)

Latest close, daily change, 52-week range, volume

get_signals(symbol)

RSI(14), 30-day volatility, max drawdown, 12-1 momentum, and a rule-based trend regime

compare_symbols(symbols, period)

Rank 2-10 symbols by return, with volatility and drawdown

Symbols: RELIANCE → RELIANCE.NS; TCS.BO and ^NSEI pass through; NIFTY, BANKNIFTY, SENSEX map to indices.

The regime label is deliberately a plain rule (close vs 50/200-day averages) and the output includes the rule text, so an agent can explain why a label was chosen.

Related MCP server: MCP YFinance Stock Server

Install and run

pip install -e .
india-markets-mcp          # starts the server over stdio

Claude Desktop / Claude Code config:

{
  "mcpServers": {
    "india-markets": { "command": "india-markets-mcp" }
  }
}

Develop

pip install -e ".[dev]"
pytest

Indicator and tool logic is pure pandas (indicators.py, core.py) and tested offline; only data.py touches the network.

Roadmap

  • Fundamentals (P/E, P/B) and sector comparison

  • Optional alternative data sources behind the same interface

  • Caching to be kinder to the upstream API

License

MIT

Available Tools

3 tools
compare_symbolsCompare SymbolsA

Rank 2-10 symbols by return over a period (1mo, 6mo, 1y, 2y, 5y), with volatility and drawdown.

NameRequiredDescriptionDefault
periodNo1y
symbolsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden. It usefully discloses the exact set of valid periods and the symbol-count bound, which are behavioral constraints, but it says nothing about auth, rate limits, or handling of invalid periods. The presence of an output schema lowers the need to explain return values.

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 sentence with no filler, and the scope constraint and metrics are front-loaded rather than buried.

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?

An output schema exists, so return values need no explanation, and both input parameters are covered with meaningful constraints. What remains unstated is error behavior for out-of-range periods or symbol counts, a minor gap for a read-only comparison tool.

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

Parameters4/5

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

Schema coverage is 0%, so the description has to compensate, and it does: it enumerates the accepted period values (1mo through 5y) that the schema leaves as a free string, and it states the 2-10 cardinality constraint on the symbols array. It does not clarify the default of 1y or symbol format (ticker casing/styles).

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?

Specific verb (rank) plus resource (2-10 symbols) plus the metrics returned (return, volatility, drawdown), so the agent knows exactly what the tool produces. It doesn't name the siblings get_quote or get_signals, so the differentiation from those is only implicit, which keeps it below a 5.

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 '2-10 symbols' bound and the period framing imply the multi-symbol comparison use case, which distinguishes it from a single-quote tool. However, there is no explicit when-to-use/when-not-to-use guidance and no mention of alternatives.

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

get_quoteGet QuoteB

Latest close, daily change and 52-week range for an NSE symbol (e.g. RELIANCE, TCS, NIFTY).

NameRequiredDescriptionDefault
symbolYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden, yet it says nothing about whether prices are delayed or real-time, auth requirements, rate limits, or what happens for an invalid/unknown symbol. Only the returned field names are disclosed, which is the bare minimum for a market-data read.

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?

One sentence that front-loads the payload contents and ends with the scoping constraint and examples. Nothing is wasted, though leading with the verb would make the action even more immediate.

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?

An output schema exists, so return structure needn't be explained, and the single parameter is illustrated. However, for a zero-annotation tool the description leaves out data freshness and failure behavior, which materially affect how an agent should present and retry the result.

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?

The schema coverage is 0%, but the description compensates partially with concrete examples (RELIANCE, TCS, NIFTY), showing that index names are valid and implying NSE ticker format. It still omits casing rules, exchange prefixes, or series suffixes, so an agent could still pass malformed symbols.

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 the exact fields returned (latest close, daily change, 52-week range) scoped to one NSE symbol, which is far more specific than a restatement of the name. It implies single-symbol scope, distinguishing it from compare_symbols, but never names the siblings 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?

Usage is only implied: 'symbol' plus the field list tells an agent this is a single-symbol snapshot tool. There is no explicit when-to-use, when-not-to-use, or alternative such as compare_symbols for multi-symbol work or get_signals for other data.

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

get_signalsGet SignalsC

RSI, volatility, drawdown, 12-1 momentum and a rule-based trend regime for a symbol.

NameRequiredDescriptionDefault
symbolYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: no statement that it is a read-only computation, no data-window or history requirement (relevant for 12-1 momentum), no freshness/latency notes, and no hint about what happens for an invalid or untradeable symbol. Naming the metrics and calling the regime 'rule-based' is the only behavioral signal.

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?

One tight sentence with no filler, and the metric inventory is front-loaded so an agent can judge relevance immediately. Nothing to trim.

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?

An output schema exists, so return values need not be explained. However, for a computation with a historical window (12-1 momentum) and an untyped symbol identifier, the description should at least cover symbol format and any lookback/data assumptions; those gaps keep it merely adequate.

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

Parameters2/5

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

Schema coverage is 0% for the single required 'symbol' parameter, and the description only echoes it as 'for a symbol'. It adds no format guidance (ticker vs. exchange-suffixed, case sensitivity, supported universes), so the one input the agent must supply remains underspecified.

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 enumerates exactly what is computed for a symbol (RSI, volatility, drawdown, 12-1 momentum, rule-based trend regime), which is far more concrete than 'Get Signals'. It never names the siblings get_quote or compare_symbols, so the boundary between a single-symbol signal panel and a price quote or multi-symbol comparison 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 Guidelines2/5

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

There is no when-to-use guidance at all: nothing says to call this instead of get_quote for a raw price, or instead of compare_symbols when evaluating multiple names. The agent must infer the selection rule from the metric list alone.

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. 3 tool updatesv0.1.0
    • First observedcompare_symbols
    • First observedget_quote
    • First observedget_signals

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: single-symbol quote data, technical/statistical signals, and multi-symbol comparison. An agent can easily select the right tool based on whether it needs current pricing, derived indicators, or cross-symbol ranking.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: get_quote, get_signals, compare_symbols. The verbs are appropriate and predictable for their actions.

Tool Count4/5

Three tools is on the lean side but appropriate for a focused market-data analytics server. Each tool earns its place, though additional utility tools may be expected for broader workflows.

Completeness4/5

The surface covers core quote retrieval, signal analysis, and relative comparison well. Minor gaps exist around symbol discovery, historical time-series access, or broader market/index coverage, but the stated analytics purpose is largely served.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides access to real-time and historical Indian stock data via Yahoo Finance API, enabling local LLMs to retrieve stock information through MCP-compatible agents like Claude Desktop and Cursor.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to retrieve real-time stock data, manage watchlists, and perform comprehensive technical analysis using Yahoo Finance API. Provides 18+ tools for stock price tracking, trend analysis, volatility assessment, and financial indicators through MCP integration.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables real-time and historical Indian stock market data retrieval, including prices, news, recommendations, and top gainers/losers.
    11
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables LLM clients to perform fundamental analysis of NSE/BSE-listed Indian stocks, covering financial statements, ratios, valuation, screening, and investment memos using Yahoo Finance data.
    28
    1
    MIT