Skip to main content
Glama
nocitponap

panopticon

by nocitponap

panopticon-mcp

Ein MCP-Server für das Archiv einer Design- und Kreativ-Community: 3.916.116 Antworten in 567.665 Themen, 2.972.803 Notizen und 42.796 Startseiten-Snapshots, aktualisiert alle fünf Minuten. Die Aufzeichnung beginnt im Jahr 2001; die Antworten beginnen im Jahr 2002. Er beantwortet Fragen wie „Welcher Benutzer war in der letzten Woche am aktivsten?“ – die Frage, um die das Ganze herum gebaut wurde.

Dieses Repository wird veröffentlicht, damit der Code gelesen werden kann. Das Lesen ist keine Voraussetzung für die Nutzung des Servers: Die bereitgestellte Instanz nimmt eine Adresse entgegen, die in einen Einstellungsbildschirm eingefügt wird, und genau das steht weiter unten an erster Stelle. Alles nach „Der Code“ dient der Prüfung oder zum Betreiben einer eigenen Kopie.

Die Zählerstände wurden am 2026-08-25 gemessen. Sie ändern sich, wenn Beiträge gelöscht werden; qbn_overview liefert Live-Zahlen.


Die Adresse

https://mcp.nocitponap.com/mcp

Sie müssen nichts installieren und Sie müssen kein Programmierer sein. Öffnen Sie diese Adresse in einem Browser, und der Server liefert eine Installationsseite mit bereits ausgefüllter Adresse und einer Schaltfläche zum Kopieren. Der Pfad /mcp selbst antwortet einem Browser mit Method not allowed, weil er für einen Assistenten geschrieben wurde und nicht für einen Menschen. Das sagt auch die Seite. Es ist nichts kaputt.

Ein Assistent kann die Live-Site bereits durch Stöbern lesen, aber er sieht nur das, was eine Webseite zeigt: die letzten paar Seiten, keine zuverlässigen Datumsangaben, nichts Zählbares. Mit dieser Verbindung liest er das Archiv direkt; so beantwortet er, wer diese Woche am aktivsten war, wie sich ein Thread über zehn Jahre entwickelt hat und wie aktiv die Community im Vergleich zu 2005 heute ist.

Related MCP server: Community Archive MCP Server

Claude Desktop oder Claude im Browser

  1. Öffnen Sie Einstellungen. Desktop: Ctrl+, unter Windows, ⌘, auf dem Mac. Browser: ⌘⇧, auf dem Mac, oder klicken Sie auf das Profilbild und wählen Sie Einstellungen.

  2. Klicken Sie in der Seitenleiste auf Connectors, dann oben rechts auf Add und danach auf Add custom connector.

  3. Fügen Sie die Adresse ein und klicken Sie auf Add. Es gibt keinen Anmeldeschritt; das Archiv ist öffentlich und schreibgeschützt.

  4. Starten Sie einen neuen Chat und fragen Sie: „Bring mich auf den neuesten Stand des Archivs“. Erlauben Sie beim ersten Ausführen eines Tools die Berechtigungsabfrage.

Falls es nicht zu funktionieren scheint, klicken Sie unten links im Nachrichtenfeld auf das /- oder Büroklammer-Symbol und schauen Sie unter Connectors nach. „Panopticon“ sollte dort zusammen mit einer Reihe vorgeschlagener Fragen gelistet sein. Falls nicht, öffnen Sie Einstellungen → Connectors und prüfen Sie, ob es als verbunden angezeigt wird.

Jeder Assistent, der MCP-Connector unterstützt, verwendet dieselbe Adresse. Menü we wird von einem zum anderen verschieden benannt; achten Sie auf Connectors oder individuelle Integrationen.

Claude Code

Ein Befehl:

claude mcp add --transport http panopticon https://mcp.nocitponap.com/mcp

Dann innerhalb Claude Code /mcp eingeben, um die bestätigen.

Fragen zum Fragen

Fünf Starterfragen werden zusammen mit dem Server ausgeliefert. Klicken Sie im Nachnfeld auf /, dann auf Connectors.

Prompt

Was das tut

Bring mich auf den neuesten Stand des Archivs

Aktivität, wer postet, die starken Threads, die Startseite

Wer ist am aktivsten?

Rangliste, über einen Zeitraum Ihres Wahl

Erzähl mir von einem Benutzer

Seine Historie und das, worüber er/sie postet

Dass einen Thread zusammen

Worum es geht und wie es sich entwickelt hat

Wie hat sich die Community verändert?

Der gesamte Verlauf seit 2001

Oder fragen Sie mit eigenen Worten:

  • Wer hat in der letzten Woche am meisten gepostet?

  • Was sind die größten Threads im Archiv?

  • Wann ist [username] beigetreten, und worüber schreibt er/sie?

  • Wie aktiv ist die Community heute im Vergleich zu 2005?

  • Was war heute Morgen auf der Startseite?

  • Zeige mir den neuen Profile vom letzten Tagen. Nützlich, um Spam zu erkennen.

  • Wie lange blieb diese Antwort auf der Startseite?

Datenschutz

Das Archiv enthält, was auf der Live-Site bereits öffentlich war. Es ist schreibgeschützt: Weder Sie noch ein Assistent können durch es etwas postieren, verändern oder löschen. Kein Konto ist nötig, und nichts über Sie wird gespeichert.


Der Code

Lesen Sie diesen Teil, um den Server zu prüfen oder eine eigene Kopie zu betreiben.

Hier lebt das SQL

Nicht hier. Jede Abfrage liegt in panopticon-core, das auch mit panopticon-api Service wird. Tools in src/tools.js formen Argumente und delegieren. Validierung, Begrenzung und SQL liegen alle in panopticon-core, damit der MCP-Server und die HTTP-API dieselbe Frage nicht unterschiedlich beantworten.

Die frühere Version hielt dieselben Abfragen an drei Stellen vor: einer Node-API, einem PHP-Port und den MCP-Tools. Sie drifteten auseinander, und jede Korrektur musste dreimal angewandt werden. Der PHP-Port wurde eingestellt.

Kernabhängigkeit

package.json deklariert panopticon-core als file:../panopticon-core, das npm als Symlink statt als Kopie auflöst. Vorausgesetzt wird, dass die Repositories als Seiten (siblings) unter einem gemeinsames Parentverzeichnis liegen – so sind sie auf der Maschine angeordnet, auf der dieses läuft. Eine Änderung am Core wirkt sofort, ohne Neuinstallation, und das ist die Eigenschaft, die diese Anordnung erhalten soll.

Core ist unter nocitponap/panopticon-core veröffentlicht, sodass das SQL neben diesem Code lesbar ist. Ein alleiniger Klon dieses Repositorys hat nichts zu linken, und npm install scheitert an genau diesem Pfad. Zum Lesen des Codes ist keine Installation nötig; das Betreiben des Servers erfordert einen Core-Klon an derStelle.

Serveranweisungen und Prompts

Zwei Dinge gibt es für das Publikum, nicht für das Protokoll:

  • src/instructions.js wird während initialize gesendet und landet im Kontext des Modells, bevor ein Tool läuft. Es erklärt das Archiv, seine Begriffe (Antwort, Notiz, Newsthread) sowie welche Zahlen hier echter Messungen sind und welche nicht – so berichtet das Modell über das Notiz, nicht um eine Note.

  • src/prompts.js registriert die fünf weiter oben zu sehenden Starterfragen. Clients zeigen diese in einem Menü an, und genau das macht den Unterschied zwischen einer Person, die 18 Tools sieht, und einer, die vier Dinge sieht, die sie fragen könnte.

Tools

17 though, benannt nach Fragen statt nach Namen. Die frühere Version verfügte über 17 Tools, die die REST-Endpunkte 1:1 spiegelten (list_replies, get_reply, topics_by_post_count), und die Auswahl dazu erfordert das Wissen über das Schema.

Anfangen

  • qbn_overview – der Zustand des Archivs in bietet einen clever an Aufruf: heutige, 7-Tage- und 30-Tage-Aktivität, die aktivsten Benutzer dieser Messe, die starksten Threads und die aktuelle Startseite.

Benutzer

  • most_active_users – Rangfolge nach Antworten, begonnenen Themen, Notizen oder dem „Score“ über ein beliebiges Fenster. Das ist der Kern der Anforderung.

  • user_profile – ein einzelner Benutzer: Profil, Gesamtsummen, aktive ritu.

  • find_user – Suche per Handle oder Namen. Sie unterscheiden sich: defineipr ist „Define IPR“.

  • user_activity_over_time – die Vorgeschichte eines Benutzers nach Tag, Monat oder Jahr.

  • user_replies, user_notes.

Inhalte

  • search_replies, get_reply – Antworten inklusive der angehängten Notizen.

  • busiest_topics, search_topics, read_thread.

  • list_notes, list_profiles, list_newsthread.

Startseite

  • front_page – aktuell oder wie sie an einem vergangenen Datum aussah.

  • front_page_history – Schnappschüsse über einen Zeitraum oder die Karriere einer Antwort: wann sie erschien, ihre beste Position, wie lange sie blieb.

Webseite

  • site_activity_over_time – Antworten, aktive Benutzer, neue Threads und Profile, Tag, Monat oder Jahr über das gesamte Archiv hinweg.

qbn_overview behält seinen Namen, weil er eine Protokolloberfläche ist, auf die Clients bereits eingerichtet sind. Eine Umbenennung würde diese brechen.

Projektaufbau

src/
  index.js            entry point; picks transport
  server.js           builds the McpServer
  tools.js            every tool definition
  instructions.js     the initialize-time briefing
  prompts.js          five starter questions
  landing.js          the install page, generated from the live registries
  guard.js            Host allowlist
  lib.js              result helpers and shared zod fragments
  transports/
    stdio.js          stdio transport
    http.js           Express and Streamable HTTP transport

Die Seite Installiert zählt ihre vorhandenen Befehle und Tools, indem sie der Registry einen Stub zur Verfügung stellt, der aufzeichnet statt registriert. So kann sie kein Tool bewerben, das der Server nicht anbietet. Eine manuell hergestellte Tabelle tat genau das und beanspruchte 22 Tools gegenüber 18 echten Kampagnen; sie wurde am 22.08.2026 gelöscht statt repariert.


Voraussetzungen

  • Node.js 20 oder später

  • panopticon-core als Seitenverzeichnis geklont

  • Zugriff auf einen lokalen Spiegel des Archivs, nicht auf die entfernte Quelle der Wahrheit

Konfiguration

cp .env.example .env

Variable

Zweck

Standard

DB_HOST

MySQL-Host

keine

DB_USER

MySQL-Benutzer

keine

DB_PASSWORD

MySQL-Passwort

keine

DB_DATABASE

MySQL-Datenbankname

keine

MCP_TRANSPORT

stdio oder http

stdio

PORT

HTTP-Port, nur für HTTP-Transport

3002

PUBLIC_ORIGIN

Adresse, die die install page ausgibt, und ein akzeptierter Host,

keine

Transporte

stdio, der Standard

npm start

Spricht MCP über stdin und stdout. Das ist es, was heimische MCP-Clients direkt starten.

HTTP

npm run start:http        # or MCP_TRANSPORT=http npm start

Lauscht auf http://127.0.0.1:3002/mcp auf POST. Jede Anfrage ist Zustand: Der Server nutzt pro Anfrage eine frische MCP-Instanz, was für die hier exponierte readonly-Tools sinnvoll ist. Er bindet an die Loopback-Adresse, und öffentlicher Zugriff soll über einen Tunnel oder Reverse-Proxy erfolgen, nicht der weiterlaufen Prozess auf jedem Netzwerk-Interface.

Der Host-Parameter ist, was Server validiert, daher müssen PUBLIC_OBGIN und ALLOWED_HOSTS jede Adresse nennen, die Clients tatsächlich verwenden.

npm run dev               # node --watch

Smoke-Test

curl -s -X POST http://127.0.0.1:3002/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
event: message
data: {"result":{"tools":[{"name":"qbn_overview","title":"Archive overview",
"description":"The current state of the community in one call: reply/user/topic
counts for today, the last 7 days and the last 30 days, ...

Ein lokaler Client über stdio

{
  "mcpServers": {
    "panopticon": {
      "command": "node",
      "args": ["/absolute/path/to/panopticon-mcp/src/index.js"],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_USER": "your_database_user",
        "DB_PASSWORD": "your_database_password",
        "DB_DATABASE": "your_database_name"
      }
    }
  }
}

Wenn .env befüllt ist, kann der env-Block weggelassen werden; der Server lädt .env beim Start. npm link installiert die panopticon-mcp-Bin, danach lautet der Client-Eintrag "command": "panopticon-mcp", "args": [].


Was es nicht beantworten kann

Der Server lehnt Fragen ab, die das Archiv nicht ehrlich beantworten kann, anstatt eine plausiblogmente Zahl zu liefern. Die Ablehnungen sind korrekt und keine Fehler, die man anders versuchen müsste. Ein Assistent sagt das auch so, und das kann wie eine Fehlfunktion wirken.

  • Notizen haben keinen eigenen Zeitstempel. Die Quelle hat nie offengelegt, wann eine Notiz geschrieben wurde. Die einzige Zeitangabe, die eine Notiz trägt, ist observed_at, also der Zeitpunkt, zu dem der Scraper sie gesehen hat. 2,809,581 von 2,972,803 Notizen haben keine solche Zeitangabe: Sie wurden aus einer alten Spalte zurückgewonnen, die die Notiz erfasst, ohne den Erfassungszeitpunkt zu notieren. Die Notiz-Abdeckung umfasst also das gesamte Archiv, die Notiz-Aktivität über die Zeit dagegen nicht. Eine Zählung von Notizen zu einem Thread oder einem Nutzer ist für die gesamte Laufzeit belastbar. Eine Zählung von Notizen pro Tag ist erst ab der Notizen-Epoche vom 2024-04-24 aussagekräftig; sie erfasst die 163,344 Notizen, deren Eintreffen beobachtet wurde, und 83,958 davon entfallen auf einen einzigen Bulk-Import-Zeitpunkt vom 2024-04-23. Zeitfensterbasierte Notiz-Rankings vor dieser Epoche werden verworfen. Daran führt kein Weg vorbei; die Zeitstempel wurden nie aufgezeichnet.

    Revidiert am 2026-08-25. Zuvor stand dort: „Notiz-Zeitstempel sind Scrape-Te und decken 163,268 Notizen ab 2024 ab“. Der Blob-Backfill vom 2026-08-22 hat die Notizabdeckung bis 2002 zurückgeführt und teil die alte Einzelaussage in die obige Abdeckungs- und Aktivitätshälfte.

  • Notiz-Markup wurde für den Altbestand nicht erfasst. 2,874,005 Notizen enthalten Text und kein HTML, und html_comment meldet für sie null. Das Markup existiert nur auf der Live-Site.

  • Die Position einer Notiz ist der Stand, an dem sie bei der ersten Sichtung war, nicht der Stand, den sie heute hat. Notizen, die von der Live-Site gelöscht wurden, werden aufbewahrt, weil they sonst nirgendwo existieren. Die zu einer Antwort gespeicherten Notizen können also zahlreicher sein als das, was die Live-Site anzeigt.

  • Gelöschter Inhalt ist unsichtbar. 251,126 Antworten und 145,414 Themen sind Grabsteine: Die ID existiert, der Text ist leer, der Inhalt ist weg. Sie sind überall ausgeschlossen. IDs haben deshalb Lücken. Eine fehlende ID bedeutet gelöscht, nicht fehlende Daten. Die Beitragstexte wurden nie erfasst; es gibt also keinen Weg daran vorbei.

  • Zeitstempel von Themen vor 2024 können bis zu einer Stunde nachgehen. Die Quelle hat jedes Thema bis 2024 unabhängig von der Sommerzeit mit -0800 gestempelt. Antwortzeiten im selben Thread sind nicht betroffen und sind das feinere Signal; nutzen Sie diese.

  • Antworttexte sind nicht durchsuchbar. Thread-Titel sind durchsuchbar. search_replies filtert nach Benutzer, Thema, Datum und Score, nicht nach dem Text eines Beitrags.

  • Score ist einzige Nettozahl. Up- und Downvotes werden nicht getrennt D e в getrennt gespeichert; so stehen eine Antwort bei null und eine Antwort bei plus vierzig minus vierzig in derselben Zeile.

Alles andere ist ab 2001 vollständig: Antworten, Threads, Notizen, Stirnprofile und der Verlauf der Startseite.


Lizenz

MIT. Copyright (c) 2026 Anthony Lazaro. Siehe LICENSE.

Die Lizenz covers diesen Code, nicht das Achiv. Diese Beiträge wurden von Mitgliedern einer Community geschrieben, die nie eine Lizenz für sie gewählt hat, und this Repository beansprucht nichts an ihnen.

Der Grund für MIT statt etwas mit mehr Biss ist: Diese Veröffentlichung soll gelesen, kopiert und diskutiert werden. Sollte sie Sie dazu inspirieren, ein eigenes Instrument für Ihre eigene Ecke des Webs zu bauen, nehmen Sie mit, was hier nützlich ist, und tun Sie das. Keine Erlaubnis nötig.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with read-only access to Reddit's API for browsing subreddits, reading posts and comments, searching Reddit, and retrieving user/subreddit information. Enables safe exploration of Reddit content without posting capabilities through natural language interactions.
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI assistants with access to Reddit data for searching, browsing subreddits, and retrieving post details or user activity without requiring API keys. It enables tools to fetch content, nested comment trees, and public user feeds directly through the Model Context Protocol.
    6
    146
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A read-only Reddit research server that exposes search, subreddit top posts, post details, and comment retrieval as typed tools with polite rate-limiting and citation lineage.
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nocitponap/panopticon-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server