screener-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@screener-mcpShow me the quarterly results for TCS"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
screener-mcp
An MCP (Model Context Protocol) server that provides financial data for Indian listed companies from screener.in. Use it with Claude Desktop or any MCP-compatible client to query stock fundamentals, financial statements, and peer comparisons directly in your AI conversations.
Features
Search companies by name or ticker symbol
Fetch financial data (P&L, balance sheet, cash flow, ratios, peers, shareholding)
Supports both consolidated and standalone financials
Request only the fields you need to keep responses concise
Results cached for 5 minutes — repeated calls for the same company are instant
No API key required — uses screener.in's public data
Related MCP server: sfinance-mcp-server
Tools
Tool | Description |
| Search for a company by name or ticker |
| Financial data for a company. Use the optional |
get_company_data fields
Pass a fields array to limit the response to only the sections you need:
Field | Description |
| Key financial ratios (Market Cap, P/E, P/B, ROE, ROCE, etc.) |
| Quarterly revenue, profit, and EPS |
| Annual profit & loss statement |
| Annual balance sheet |
| Annual cash flow statement |
| Promoter / FII / DII shareholding pattern |
| Peer comparison table |
Omit fields to fetch all sections at once.
Prerequisites
Node.js 18+
npm
Installation
git clone <repo-url>
cd screener-mcp
npm install
npm run buildUsage with Claude Desktop
Add the following to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"screener": {
"command": "node",
"args": ["/absolute/path/to/screener-mcp/dist/index.js"]
}
}
}Restart Claude Desktop after saving the config.
Usage with Claude Code
Run this command after building (replace the path with where you cloned the repo):
claude mcp add screener -- node "/absolute/path/to/screener-mcp/dist/index.js"Add --scope global to make it available in all projects:
claude mcp add --scope global screener -- node "/absolute/path/to/screener-mcp/dist/index.js"Development
# Run in development mode (no build step needed)
npm run dev
# Build for production
npm run build
# Run production build
npm startTech Stack
TypeScript with ES2022 modules
@modelcontextprotocol/sdk — MCP server framework
cheerio — HTML parsing / web scraping
Native
fetchfor HTTP requests
Example Prompts
Once configured, you can ask Claude things like:
"What are the key financial ratios for Reliance Industries?"
"Show me the quarterly results for TCS"
"Compare HDFC Bank with its peers"
"Get the balance sheet for Infosys for the last 5 years"
"Search for companies with the name 'Tata'"
Notes
Data is scraped from screener.in's public pages — no login required for most data
Results depend on screener.in's availability and HTML structure
Financial data is sourced from BSE/NSE filings as aggregated by screener.in
Available Tools
2 toolsget_company_dataA
Fetch financial data for a company from screener.in. Use the 'fields' parameter to request only what you need and reduce response size. Available fields: ratios, quarterly_results, profit_loss, balance_sheet, cash_flow, shareholding, peers. Omit 'fields' to get all.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Subset of fields to return. Omit for all fields. | |
| symbol | Yes | NSE/BSE ticker symbol (e.g. RELIANCE, TCS, INFY) | |
| consolidated | No | Whether to fetch consolidated financials (default: false for standalone) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states that data is fetched from an external source (screener.in) and hints at large response sizes via the 'fields' guidance, but it does not disclose whether the operation is read-only, potential rate limits, or any other behavioral traits that might surprise an agent. This is a minimal but not full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every sentence earns its place. The second sentence provides actionable guidance without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could do more to explain the return format, but for a simple fetch tool with 3 parameters (1 required) and covered schema, the description is sufficiently complete. It clearly states the source and gives parameter guidance, though it could mention the 'consolidated' parameter explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (baseline 3). The description adds meaning beyond the schema by explicitly noting 'Use the fields parameter to request only what you need and reduce response size' and 'Omit fields to get all', which provides practical, behavioral context for the parameter beyond its enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb+resource: 'Fetch financial data for a company from screener.in.' This clearly distinguishes it from the sibling 'search_company' which presumably searches for companies, while this tool retrieves specific financial data for a given symbol.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for fetching financial data, implying when to use it (when financial data is needed) versus search_company. It also gives explicit usage guidance on the 'fields' parameter to reduce response size. However, it does not explicitly mention alternative tools or exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companyA
Search for Indian listed companies on screener.in by name or ticker symbol. Returns a list of matching companies with their URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Company name or NSE/BSE ticker symbol to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It accurately states the output (list of matching companies with URLs) but does not mention any potential limitations, authorization requirements, or discrepancies like exact-match vs partial-match results. The behavior is straightforward, but the description adds minimal context beyond the basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately states the action, scope, and expected result. There is no redundant information, and every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is mostly complete: it explains what the tool does, what input it takes, and what it returns. It lacks guidance on how this tool fits into a larger workflow (e.g., pairing with get_company_data), but for its standalone functionality, it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameter descriptions, with the 'query' parameter fully documented as 'Company name or NSE/BSE ticker symbol'. The description mirrors this information, adding only the context of 'Indian listed companies on screener.in'. Since schema coverage is high, the baseline is 3, and the description does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: searching for Indian listed companies by name or ticker symbol on screener.in, and returning a list of matches with URLs. The verb 'Search' is specific, and the resource is well-defined, distinguishing it from the sibling tool 'get_company_data' which presumably fetches detailed data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you need to find companies by name or ticker. However, it does not explicitly mention alternatives or exclusions, such as 'use get_company_data for detailed information after searching'. The context is clear but lacks direct guidance on tool selection.
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.
2 tool updates
v1.0.0- First observed
get_company_data - First observed
search_company
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one for searching/locating companies, the other for retrieving detailed financial data for a specific company. There is no overlap in functionality.
Both tool names follow a consistent verb_noun pattern: 'search_company' and 'get_company_data'. The naming is predictable and follows standard conventions.
With only 2 tools, the server feels minimal. While this is borderline, the narrow scope (searching and retrieving data from screener.in) justifies a small set, but it may be slightly thin for a general-purpose financial data server.
The server provides the essential workflow: search for a company then retrieve its data. Gaps include no ability to list top companies or compare multiple companies, but these are not critical for the core purpose of fetching screener.in data.
Maintenance
Related MCP Connectors
Indian NSE/BSE research data and mechanically-computed ratios; read-only market tools.
SEC filing intelligence for AI agents. Financials, screening, peer comparison for 5,000+ companies.
Search SEC EDGAR filings, financial statements, and company data.
Financial statements, metrics, dividends, and price data for public companies.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables real-time and historical Indian stock market data retrieval, including prices, news, recommendations, and top gainers/losers.-
- FlicenseNot gradedqualityDmaintenanceProvides access to Indian stock market data via screener.in, enabling stock analysis, document access, screening, and more through MCP.-
- AlicenseNot gradedqualityBmaintenanceMCP server that provides access to screener.in financial data for Indian stocks, enabling queries for company info, financials, ratios, quarterly results, shareholding, and stock screening.MIT
- AlicenseBqualityBmaintenanceExposes Screener.in data for Indian stocks (NSE/BSE) — fundamentals, financial statements, peers, and price/EPS time-series — as tools any MCP client can call.41644MIT