superhuman-newsletter-mcp
v1.0.0
Published
MCP server that fetches full post content from Superhuman AI and The Code newsletters for Claude digest generation. Supports local stdio and remote HTTP deployment.
Downloads
8
Maintainers
Readme
superhuman-newsletter-mcp
An MCP (Model Context Protocol) server that fetches full post content from two AI newsletters — Superhuman AI and The Code — and returns it to Claude for weekly digest generation.
No API keys required. No browser automation. Just plain HTTP scraping of two public Beehiiv newsletters.
Tools
fetch_superhuman_newsletters
Fetches recent posts from Superhuman AI (superhuman.ai).
| Parameter | Type | Default | Range | Description |
|-----------|------|---------|-------|-------------|
| count | number | 7 | 1–30 | Number of recent posts to fetch |
Returns a single markdown document with every post's full content: title, date, author, source URL, body, images, and all external links.
fetch_code_newsletter
Fetches recent posts from The Code (codenewsletter.ai).
| Parameter | Type | Default | Range | Description |
|-----------|------|---------|-------|-------------|
| count | number | 5 | 1–9 | Number of recent posts to fetch (archive serves up to 9) |
Same output format as above.
Usage with Claude
Option A — Local (stdio)
Connect directly to Claude Desktop or any MCP client that supports stdio.
Install and build:
git clone https://github.com/alialfredji/superhuman-newsletter-mcp.git
cd superhuman-newsletter-mcp
npm install
npm run buildConfigure Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"superhuman-newsletter": {
"command": "node",
"args": ["/absolute/path/to/superhuman-newsletter-mcp/dist/index.js"]
}
}
}Restart Claude Desktop after saving.
Option B — Remote (HTTP)
Use the hosted instance (once deployed to Render) — no local install needed.
Configure Claude Desktop or OpenCode:
{
"mcpServers": {
"superhuman-newsletter": {
"url": "https://your-service.onrender.com/mcp"
}
}
}Option C — npx (no install)
Run directly without cloning or installing anything. npm downloads and runs the latest version on demand.
Configure Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"superhuman-newsletter": {
"command": "npx",
"args": ["superhuman-newsletter-mcp"]
}
}
}Restart Claude Desktop after saving.
What to ask Claude
Once connected (either mode):
"Fetch the last 7 Superhuman newsletters and write me a weekly digest"
"Get the last 5 posts from The Code newsletter and summarize the key developer stories and tools"
"Pull both newsletters and give me a combined weekly AI + dev digest with must-read links"
Claude receives the full post content directly — no URLs to open, no extra steps.
Deploy to Render
The repo ships with a render.yaml and Dockerfile — no configuration needed beyond connecting your GitHub account.
Step 1 — Push to GitHub
Make sure your repo is pushed to GitHub (it already is at github.com/alialfredji/superhuman-newsletter-mcp). Render will pull from there.
Step 2 — Create a Render account
Go to render.com and sign up or log in. The free plan is sufficient.
Step 3 — Connect GitHub
In the Render dashboard, click your avatar (top right) → Account Settings → Connected Accounts → connect GitHub. Grant access to the superhuman-newsletter-mcp repo (or all repos).
Step 4 — Deploy via Blueprint
- In the Render dashboard click New + → Blueprint
- Find and select the
superhuman-newsletter-mcprepository - Render reads
render.yamlautomatically — you'll see a service namedsuperhuman-newsletter-mcplisted - Click Apply — Render starts building the Docker image
The first build takes ~2–3 minutes (installing deps + compiling TypeScript). Subsequent deploys on every git push take ~1 minute.
Step 5 — Confirm the service is live
Once the build finishes, Render assigns a URL like:
https://superhuman-newsletter-mcp.onrender.comVerify it's running:
curl https://superhuman-newsletter-mcp.onrender.com/health
# → {"status":"ok"}Note: Free-tier services spin down after 15 minutes of inactivity. The first request after sleep takes ~30 seconds to wake up. Paid plans (
starterand above) stay always-on.
Step 6 — Connect Claude to the remote server
Add the deployed URL to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"superhuman-newsletter": {
"url": "https://superhuman-newsletter-mcp.onrender.com/mcp"
}
}
}Restart Claude Desktop — the tools are now available from any machine via the cloud.
What gets deployed
| Endpoint | Method | Description |
|----------|--------|-------------|
| /mcp | POST / GET / DELETE | MCP Streamable HTTP transport |
| /health | GET | Returns {"status":"ok"} for Render health checks |
Updating the deployment
Every git push to main triggers an automatic redeploy on Render — no manual steps needed.
Development
# Install dependencies
npm install
# Run in dev mode — stdio (no build step)
npm run dev
# Run in dev mode — HTTP on port 3000
npm run dev:http
# Build
npm run build
# Run built server — stdio
npm start
# Run built server — HTTP
npm run start:httpHTTP mode auto-activates when the PORT environment variable is set (as Render does), or when the --http flag is passed.
Project structure
src/
index.ts # All logic — scrapers, MCP tools, transport modes
Dockerfile # Docker build for Render
render.yaml # Render deployment config
tsconfig.json # TypeScript configHow it works
- Tool call received — Claude requests N posts
- Listing scrape — fetches the newsletter homepage/archive to collect post URLs
- Post scrape — visits each URL, strips noise (nav, ads, sponsor blocks), converts HTML → Markdown via Turndown
- JSON-LD extraction — pulls structured metadata (title, date, author, description, featured image) from each post
- Return — single formatted markdown document handed back to Claude
Sponsor/ad sections (PRESENTED BY, SPONSORED BY) are automatically stripped. A 300ms polite delay is added between post fetches.
Tech stack
@modelcontextprotocol/sdk— MCP server + Streamable HTTP transportexpress— HTTP server for remote modenode-html-parser— HTML parsingturndown— HTML → Markdown conversionzod— Input schema validation
