panopticon
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/mcpSie 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
Ö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.Klicken Sie in der Seitenleiste auf Connectors, dann oben rechts auf Add und danach auf Add custom connector.
Fügen Sie die Adresse ein und klicken Sie auf Add. Es gibt keinen Anmeldeschritt; das Archiv ist öffentlich und schreibgeschützt.
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/mcpDann 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.jswird währendinitializegesendet 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.jsregistriert 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:defineiprist „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 transportDie 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-coreals Seitenverzeichnis geklontZugriff auf einen lokalen Spiegel des Archivs, nicht auf die entfernte Quelle der Wahrheit
Konfiguration
cp .env.example .envVariable | Zweck | Standard |
| MySQL-Host | keine |
| MySQL-Benutzer | keine |
| MySQL-Passwort | keine |
| MySQL-Datenbankname | keine |
|
|
|
| HTTP-Port, nur für HTTP-Transport |
|
| Adresse, die die install page ausgibt, und ein akzeptierter Host, | keine |
Transporte
stdio, der Standard
npm startSpricht MCP über stdin und stdout. Das ist es, was heimische MCP-Clients direkt starten.
HTTP
npm run start:http # or MCP_TRANSPORT=http npm startLauscht 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 --watchSmoke-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_commentmeldet für sienull. 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
-0800gestempelt. Antwortzeiten im selben Thread sind nicht betroffen und sind das feinere Signal; nutzen Sie diese.Antworttexte sind nicht durchsuchbar. Thread-Titel sind durchsuchbar.
search_repliesfiltert 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.
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityDmaintenanceProvides 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.
- FlicenseNot gradedqualityDmaintenanceEnables searching and retrieving preserved Twitter data from the Community Archive, including user profiles, tweets, and keyword searches across archived content.
- AlicenseAqualityCmaintenanceProvides 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.6146MIT
- AlicenseNot gradedqualityBmaintenanceA 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
Related MCP Connectors
Public social-data API and live docs for AI coding agents.
Browse and manage Reddit posts, comments, and threads. Fetch user activity, explore hot/new/rising…
Reddit & X data for AI agents over MCP. Semantic search, hosted, no Reddit API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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