Hacker News MCP and Debug View

evlute1 pts1 comments

GitHub - coolvegan/go-hackernews: hackernews mcp & http server · GitHub

/" data-turbo-transient="true" />

Skip to content

Type / to search

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

coolvegan

go-hackernews

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>2 Commits<br>2 Commits

images

images

internal

internal

README.md

README.md

go.mod

go.mod

go.sum

go.sum

index.html

index.html

main.go

main.go

View all files

Repository files navigation

go-news

Ein Go-Service, der Artikel von Hacker News fetcht, im Speicher vorhält und über eine HTTP-API sowie einen MCP-Server bereitstellt.

Funktionsweise

Beim Start wird die aktuellste Artikel-ID (Watermark) von Hacker News ermittelt.

Anschließend werden ältere Artikel (default 2000) nachgeladen.

Ein Ticker pollt sekündlich nach neuen Artikeln und fügt diese hinzu.

Alle HALVEMEMORYDURATION Minuten (default 30) wird die In-Memory-Datenstruktur halbiert, um den Speicherverbrauch zu begrenzen (mindestens MINARTICLE Artikel bleiben erhalten).

Die Artikel werden über Worker (WORKERCOUNT, default 10) parallel gefetcht.

Konfiguration (Umgebungsvariablen)

Variable<br>Default<br>Beschreibung

SERVER<br>localhost:7777<br>Adresse des HTTP-Debug-Servers

WORKERCOUNT<br>10<br>Anzahl paralleler Fetch-Worker

HALFTIME<br>1800 (Sekunden → 30 Min)<br>Intervall (Minuten) zum Halbieren des Speichers

PRELOADITEMS<br>2000<br>Anzahl der initial zu ladenden älteren Artikel

HTTP-Endpunkte

Route<br>Methode<br>Beschreibung

GET<br>Debug-View (index.html)

/api/items<br>GET<br>Alle Artikel als JSON

/api/watermark<br>GET<br>Aktuelle Watermark-ID als JSON (für Polling)

MCP-Server

Neben der HTTP-API startet der Service einen MCP-Server, über den die geladenen Hacker-News-Artikel ebenfalls abgefragt werden können. Der MCP-Server läuft über HTTP auf Port 13333.

Start

go run main.go

Optional mit eigenen Werten:

SERVER=localhost:8080 WORKERCOUNT=20 go run main.go

systemd-Service

Binary bauen und z.B. nach /usr/local/bin legen:

go build -o go-news main.go<br>sudo install -m 0755 go-news /usr/local/bin/go-news

Unit-Datei /etc/systemd/system/go-news.service:

[Unit]<br>Description=go-news Hacker News Fetcher & MCP-Server<br>After=network-online.target<br>Wants=network-online.target

[Service]<br>Type=simple<br>User=marco<br>Group=marco<br>WorkingDirectory=/home/marco/go/src/gittea.kittel.dev/marco/go-news<br>ExecStart=/usr/local/bin/go-news<br>Restart=on-failure<br>RestartSec=5

# Umgebungsvariablen (optional, Defaults siehe oben)<br>Environment=SERVER=localhost:7777<br>Environment=WORKERCOUNT=10<br>Environment=HALFTIME=1800<br>Environment=PRELOADITEMS=2000

# Ressourcen / Sicherheit<br>NoNewPrivileges=true<br>ProtectSystem=strict<br>ProtectHome=true<br>PrivateTmp=true<br>ReadWritePaths=/var/log

# Logging nach journald<br>StandardOutput=journal<br>StandardError=journal<br>SyslogIdentifier=go-news

[Install]<br>WantedBy=multi-user.target

Service aktivieren und starten:

sudo systemctl daemon-reload<br>sudo systemctl enable --now go-news

Status und Logs:

systemctl status go-news<br>journalctl -u go-news -f

About<br>hackernews mcp & http server<br>Resources<br>Readme<br>Activity<br>Stars<br>0 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository

Releases

Packages

Contributors

Languages

You can’t perform that action at this time.

news server artikel http main service

Related Articles