Local Stock Analyst MCP (stdio)
Local TypeScript MCP server for Claude Desktop that exposes stock-analysis tools using:
- Finnhub as the primary provider
- Alpha Vantage as fallback
- local indicator calculation fallback for RSI and MACD
The server supports:
stdiomode for local Claude Desktop integration (default)HTTPmode for cloud hosting (for example, Render)
Tools
get_stock_priceget_quoteget_company_profileget_candlesget_stock_newsget_rsiget_macdget_key_financials
Each tool validates input with zod, formats output consistently, and includes an informational disclaimer.
Requirements
- Node.js 20.x (recommended for Render stability)
- npm
- API key for at least one provider:
- Finnhub:
FINNHUB_API_KEY - Alpha Vantage:
ALPHAVANTAGE_API_KEY
- Finnhub:
Setup
- Install dependencies:
npm install
- Create env file from template:
copy .env.example .env
- Add your API keys to
.env.
Build and Run
Build:
npm run build
Start locally (stdio MCP mode):
npm start
Start in HTTP mode (Render-style):
set MCP_TRANSPORT=http
set PORT=3000
npm start
HTTP endpoints:
- MCP endpoint:
/mcp - health check:
/healthz
Claude Desktop (Windows) Configuration
Open your Claude Desktop config file:
%APPDATA%\Claude\claude_desktop_config.json
Add/update:
{
"mcpServers": {
"local-stock-analyst": {
"command": "node",
"args": ["D:/mcpserverdemo/mcplocalstock/build/index.js"],
"env": {
"FINNHUB_API_KEY": "YOUR_FINNHUB_KEY",
"ALPHAVANTAGE_API_KEY": "YOUR_ALPHA_VANTAGE_KEY"
}
}
}
}
Notes:
- Use absolute paths in
args. - Forward slashes are safe on Windows JSON paths.
- Restart Claude Desktop after saving config.
Deploy on Render
Use a Web Service deployment.
- Push this project to GitHub.
- In Render, create a new Web Service from your repo.
- Configure:
- Build Command:
npm install && npm run build - Start Command:
npm start
- Build Command:
- Add environment variables:
MCP_TRANSPORT=httpFINNHUB_API_KEY=...(optional but recommended)ALPHAVANTAGE_API_KEY=...(optional fallback)PORTis auto-provided by Render.
- Deploy.
After deploy, verify:
https://<your-service>.onrender.com/healthzreturns{"status":"ok"}- MCP server endpoint is
https://<your-service>.onrender.com/mcp
Quick Test Prompts in Claude
- "Call
get_stock_priceforMSFT." - "Call
get_candlesforMSFT, intervalD, from1704067200, to1735689600, limit5." - "Call
get_rsiforMSFT, intervalD, from1704067200, to1735689600."
Troubleshooting
- No tools visible in Claude
- Check JSON validity of
claude_desktop_config.json. - Confirm
build/index.jsexists (npm run build). - Fully restart Claude Desktop.
- Check JSON validity of
- Auth errors
- Verify API keys in config
envor local.env.
- Verify API keys in config
- Rate-limit errors
- Retry later, reduce call frequency, or use higher-tier keys.
- The server automatically attempts Alpha Vantage fallback after Finnhub failures.
Logs
- Claude Desktop logs are usually in
%APPDATA%\Claude\logs. - Server startup/errors are written to stderr by the MCP process.