NewsIntel MCP Server
io.github.stabem/newsintel
Documentation
NewsIntel MCP Server
MCP server for NewsIntel — personalized news intelligence for AI agents.
Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.
Quick Start
Option 1: npx (zero install)
npx @stabem/newsintel-mcp
Option 2: Clone from repo
cd integrations/newsintel-mcp
npm install && npm start
Authenticate (get your API key from terminal)
npx @stabem/newsintel-mcp auth
This opens an X OAuth link — authorize in your browser, and the API key appears in the terminal.
IDE / Client Setup
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"newsintel": {
"command": "npx",
"args": ["-y", "@stabem/newsintel-mcp"],
"env": {
"NEWSINTEL_API_BASE": "https://newsintelapi.com"
}
}
}
}
Config file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"newsintel": {
"command": "npx",
"args": ["-y", "@stabem/newsintel-mcp"],
"env": {
"NEWSINTEL_API_BASE": "https://newsintelapi.com"
}
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"newsintel": {
"command": "npx",
"args": ["-y", "@stabem/newsintel-mcp"],
"env": {
"NEWSINTEL_API_BASE": "https://newsintelapi.com"
}
}
}
}
Any MCP Client (generic .mcp.json)
{
"mcpServers": {
"newsintel": {
"command": "npx",
"args": ["-y", "@stabem/newsintel-mcp"],
"env": {
"NEWSINTEL_API_BASE": "https://newsintelapi.com"
}
}
}
}
Tools
| Tool | Description | Backend |
|---|---|---|
newsintel_sync_profile | Sync/personalize user profile | POST /v1/profile/sync |
newsintel_get_profile | Get user profile and interests | GET /v1/profile |
newsintel_get_news_briefing | Fetch personalized news with filters | GET /v1/news/search |
newsintel_sync_profile
| Parameter | Type | Required | Description |
|---|---|---|---|
apiToken | string | Yes | User API token (ni_live_...) |
mode | string | No | manual / x-browser / x-api (default: manual) |
topics | string[] | No | Interest topics |
free_text | string | No | Free-text interests description |
x_username | string | No | X username for profile sync |
newsintel_get_profile
| Parameter | Type | Required | Description |
|---|---|---|---|
apiToken | string | Yes | User API token (ni_live_...) |
newsintel_get_news_briefing
| Parameter | Type | Required | Description |
|---|---|---|---|
apiToken | string | Yes | User API token (ni_live_...) |
topics | string[] | No | Topic filters |
country | string | No | ISO country code (e.g. BR, US) |
lang | string[] | No | Languages (e.g. ["pt", "en"]) |
limit | number | No | Results count (5-50, default 20) |
Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
NEWSINTEL_API_BASE | No | https://newsintelapi.com | API base URL |
CLI Commands
npx @stabem/newsintel-mcp # Start MCP server (stdio)
npx @stabem/newsintel-mcp auth # Authenticate and get API key
npx @stabem/newsintel-mcp help # Show help
Error Handling
API errors are returned as:
newsintel_api_error <status>: <payload>
| Status | Meaning | Action |
|---|---|---|
401/403 | Invalid or missing token | Re-authenticate with auth command |
429 | Rate limited | Retry with backoff |
5xx | Temporary unavailability | Retry with backoff |
Security
- Treat
apiTokenas a secret — do not log or expose it. - Prefer injection via environment variables or secrets manager.
- If a token is compromised, rotate immediately via the portal.
FAQ
Do I need one MCP server per user?
No. The same server handles multiple users via apiToken per tool call.
Can I point to a different API (staging/self-hosted)?
Yes, set NEWSINTEL_API_BASE environment variable.
Does this MCP server store state? No. It's fully stateless — all personalization comes from the NewsIntel API.
