mcp-saham-news
v1.0.2
Published
MCP server for scraping Indonesian stock market news
Downloads
44
Maintainers
Readme
MCP Server - Indonesian Stock News Scraper
MCP (Model Context Protocol) server for scraping Indonesian stock market news from multiple sources.
Features
Multiple Sources: Scrapes from 4 major Indonesian financial news websites:
- EmitenNews.com
- CNBC Indonesia
- Kontan
- Bisnis Indonesia
MCP Compatible: Built with the official MCP SDK
Headless Chrome: Uses Puppeteer for reliable scraping
Type-Safe: Written in TypeScript with Zod validation
Keyword Filtering: Filter articles by keywords
Structured Logging: Pino logger for debugging
Installation
npm install -g mcp-saham-newsConfiguration
The server requires Chrome/Chromium and uses environment variables:
# Required: Path to Chrome executable
export PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome
# Optional: Log level (debug, info, warn, error)
export LOG_LEVEL=infoInstall Chrome (if not already installed)
# Ubuntu/Debian
sudo apt-get install chromium-browser
# macOS
brew install chromiumMCP Client Setup
KiloCode / Cline (VS Code)
Add to your MCP settings (global or workspace):
{
"mcpServers": {
"saham-news": {
"command": "npx",
"args": ["mcp-saham-news"],
"env": {
"PUPPETEER_EXECUTABLE_PATH": "/usr/bin/google-chrome",
"LOG_LEVEL": "info"
},
"disabled": false,
"alwaysAllow": ["scrape_stock_news"]
}
}
}Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"saham-news": {
"command": "npx",
"args": ["mcp-saham-news"],
"env": {
"PUPPETEER_EXECUTABLE_PATH": "/usr/bin/google-chrome"
}
}
}
}Alternatively, use the globally installed command:
{
"mcpServers": {
"saham-news": {
"command": "mcp-saham-news",
"env": {
"PUPPETEER_EXECUTABLE_PATH": "/usr/bin/google-chrome"
}
}
}
}Restart Client
Restart Claude Desktop or VS Code to load the MCP server.
MCP Tool
scrape_stock_news
Scrape latest Indonesian stock market news.
Parameters:
source(required): News source -cnbc,kontan,bisnis,emitennews, oralllimit(optional): Number of articles to return (1-50, default: 10)keywords(optional): Array of keywords to filter articlesincludeContent(optional): Fetch full article body (default: false)
Example:
{
"source": "emitennews",
"limit": 5,
"keywords": ["BBRI", "BBCA"]
}Response:
[
{
"title": "Article title",
"url": "https://...",
"source": "EmitenNews.com",
"publishedAt": "2026-02-14T02:00:00.000Z",
"summary": "Optional summary",
"imageUrl": "https://...",
"relativeDateText": "4 jam yang lalu"
}
]Development
Build the Project
npm run buildRun in Development Mode
npm run devTest Individual Scrapers
# Test EmitenNews scraper
npx tsx src/scrapers/emitennews.ts
# Test CNBC scraper
npx tsx src/scrapers/cnbc-indonesia.tsProject Structure
src/
├── index.ts # MCP server entry point
├── types/index.ts # TypeScript type definitions
├── browser-manager.ts # Puppeteer browser manager
├── scrapers/
│ ├── base.ts # Abstract base scraper
│ ├── emiteanews.ts
│ ├── cnbc-indonesia.ts
│ ├── kontan.ts
│ └── bisnis-indonesia.ts
└── tools/
└── scrape-news.ts # MCP tool implementationLicense
ISC
