equity-research-mcp
v1.0.0
Published
MCP server for Indian equity research — Screener.in + Google Workspace + 8 analytical personas
Maintainers
Readme
equity-research-mcp
MCP server for Indian equity research. 34 tools — Screener.in + Google Workspace + 8 analytical personas.
What It Does
- Fetch financials, shareholding, peers, announcements, transcripts for 50,000+ Indian-listed companies (Screener.in)
- Analyze through structured frameworks — business quality, moat, governance, valuation, scenarios
- Apply 8 investor persona lenses (Buffett, Munger, Lynch, Dalio, Yartseva, Marks, Smith/Train, Sell-Side)
- Generate one-pagers, IC memos, earnings reviews, peer comparison tables
- Integrate Gmail, Calendar, Drive, Docs, Contacts — search emails, find documents, check events
- Research in one shot —
full_researchcombines Screener.in + Gmail + Drive + Calendar → executive summary → detailed memo
Install
Linux / macOS
Prerequisites: Node.js 18+
curl -fsSL https://raw.githubusercontent.com/roroRathod/equity-analyst-mcp/main/quick-install.sh | bashWindows (PowerShell)
Prerequisites: Node.js 18+
irm https://raw.githubusercontent.com/roroRathod/equity-analyst-mcp/main/quick-install.ps1 | iexManual MCP config
If you manage your own MCP config, add directly:
{
"equity-research": {
"type": "local",
"command": ["npx", "-y", "equity-research-mcp"]
}
}Option 3 — Clone + build
git clone https://github.com/roroRathod/equity-analyst-mcp.git
cd equity-research-mcp
bash install.shThe interactive installer builds TypeScript, sets up Google Workspace OAuth, and registers with opencode.
Config: ~/.config/equity-research/config.json (permissions: chmod 600)
Google Workspace Setup (once per device)
The OAuth flow lives entirely in this MCP — no separate google-workspace server needed.
Step 1 — Create OAuth credentials (one-time)
- Go to Google Cloud Console
- Create a new project (or select existing)
- Enable APIs — Go to APIs & Services → Library, enable:
- Gmail API
- Google Calendar API
- Google Drive API
- Google Docs API
- People API (for Contacts)
- Configure OAuth consent screen — Go to APIs & Services → OAuth consent screen:
- User type: External
- App name: anything (e.g. "Equity Research MCP")
- User support email: your email
- Developer contact email: your email
- Save and continue through Scopes and Data Use screens
- Add test users — On the OAuth consent screen → Audience tab:
- Click Add users
- Add every Gmail address you want to connect
- Only added users can authorize until the app is published
- Create credentials — Go to Credentials → Create Credentials → OAuth client ID:
- Application type: Desktop app
- Name: anything
- Click Create
- Copy the Client ID and Client Secret (or download JSON)
Step 2 — Connect your account
Run in opencode:
equity-research setup_workspace # → get instructions
equity-research setup_workspace_auth step=generate_url # → get auth URL
# Open URL in browser → sign in → authorize → paste code:
equity-research setup_workspace_auth step=exchange_code # → tokens storedOr use the interactive installer: bash install.sh and answer y when asked.
Credentials stored at ~/.config/equity-research/config.json (chmod 600).
Tools
Screener.in (7 tools)
search_stock get_company_data get_shareholding get_announcements get_concall get_peers get_price_history
Analysis (4 tools)
business_quality_check moat_assessment governance_check apply_lens
Reports (5 tools)
one_pager ic_memo earnings_review peer_comparison full_research
Gmail (5 tools)
search_emails read_email send_email list_labels list_drafts
Calendar (3 tools)
list_events create_event find_free_time
Drive (3 tools)
search_drive list_folder read_drive_file
Docs (3 tools)
create_doc read_doc append_to_doc
Contacts (2 tools)
search_contacts list_contacts
Setup (2 tools)
setup_workspace setup_workspace_auth
Multi-Source Research
// full_research:
{ "ticker": "TCS", "with_email": true, "with_drive": true, "with_calendar": true }Produces: Executive Summary → One-pager → Peer Comparison → Email/Drive/Calendar sections → IC Memo
Project Structure
src/
├── index.ts # MCP server — 34 tool definitions + handlers
├── config.ts # Config persistence, old→new migration, chmod 600
├── types.ts # Domain types
├── screener.ts # Screener.in scraper
├── frameworks/ # Business quality, moat, valuation, scenarios
├── personas/ # 8 investor lenses
├── governance/ # India governance checks
├── templates/ # Report formatters
└── workspace/ # Google Workspace sub-system (Gmail, Calendar, Drive, Docs, Contacts)
├── auth.ts # OAuth2 client factory, scope constants
├── gmail.ts # search, read, send, labels, drafts
├── calendar.ts # list, create with Meet, find free time
├── drive.ts # search, list folder, read (content-type-aware)
├── docs.ts # create, read, append
├── contacts.ts # search, list
└── index.ts # barrel exports + setup guideTests
npm test # 49 tests — config, auth, gmail queryDesign
- Single OAuth2 flow per account with all 8 scopes — authenticate once
- Centralized
getAuth()inauth.ts— all 5 service modules import from it - Single
config.ts— old email config auto-migrated to workspace format - Workspace modules individually try/caught — failures show "unavailable"
chmod 600on config file, env vars instead of bash expansion in install.sh
