Skip to main content
Glama
ronyv89

screener-mcp

by ronyv89
README.md
# screener-mcp

An MCP (Model Context Protocol) server that provides financial data for Indian listed companies from [screener.in](https://www.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

## Tools

| Tool | Description |
|------|-------------|
| `search_company` | Search for a company by name or ticker |
| `get_company_data` | Financial data for a company. Use the optional `fields` parameter to fetch only what you need |

### `get_company_data` fields

Pass a `fields` array to limit the response to only the sections you need:

| Field | Description |
|-------|-------------|
| `ratios` | Key financial ratios (Market Cap, P/E, P/B, ROE, ROCE, etc.) |
| `quarterly_results` | Quarterly revenue, profit, and EPS |
| `profit_loss` | Annual profit & loss statement |
| `balance_sheet` | Annual balance sheet |
| `cash_flow` | Annual cash flow statement |
| `shareholding` | Promoter / FII / DII shareholding pattern |
| `peers` | Peer comparison table |

Omit `fields` to fetch all sections at once.

## Prerequisites

- Node.js 18+
- npm

## Installation

```bash
git clone <repo-url>
cd screener-mcp
npm install
npm run build
```

## Usage 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`

```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):

```bash
claude mcp add screener -- node "/absolute/path/to/screener-mcp/dist/index.js"
```

Add `--scope global` to make it available in all projects:

```bash
claude mcp add --scope global screener -- node "/absolute/path/to/screener-mcp/dist/index.js"
```

## Development

```bash
# Run in development mode (no build step needed)
npm run dev

# Build for production
npm run build

# Run production build
npm start
```

## Tech Stack

- **TypeScript** with ES2022 modules
- **[@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk)** — MCP server framework
- **[cheerio](https://cheerio.js.org/)** — HTML parsing / web scraping
- Native `fetch` for 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

TDQS

A4.2/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern: 'search_company' and 'get_company_data'. The naming is predictable and follows standard conventions.

Tool Count3/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues