Archive MCP Server
Archive MCP Server
Ein MCP-Server, der die Datensätze und Aufbewahrungslogik des Enterprise Data Archival & Records Management System jedem MCP-Client zugänglich macht — Claude Code, Claude Desktop, Cursor oder einem eigenen Client — über stdio.
Statt durch das React-Dashboard zu klicken, um "Was können wir im Finanzbereich archivieren?" zu beantworten, fragst du das Modell, und es ruft diese Tools auf.
Tools
Tool | Was es tut |
| Datensätze nach Mitarbeiter, Abteilung oder Dokumenttyp finden |
| Einen Datensatz mit seiner Aufbewahrungsentscheidung abrufen |
| Aktive Datensätze nach Ablauf ihrer Aufbewahrungsfrist, zuerst die am stärksten überfälligen |
| Aktive vs. archivierte Anzahl pro Abteilung |
| Monatliche Prognose, was als Nächstes archivierbar wird |
| Was der geplante Archivierungsjob getan hat und wann |
Related MCP server: EndpointRead-MCP
Ressourcen
URI | Inhalt |
| Aufbewahrungsfrist in Jahren pro Dokumenttyp |
Anforderungen
Python 3.10+ und MCP SDK 2.x. Das v2 SDK hat FastMCP in MCPServer umbenannt und es nach mcp.server.mcpserver verschoben; dieser Code zielt auf v2. Datenzugriff über SQLAlchemy 2.x, mit psycopg2 für PostgreSQL.
Einrichtung
python -m venv .venv
source .venv/bin/activate # macOS/Linux
.venv\Scripts\activate # Windows
python -m pip install -r requirements.txt
python seed_db.py # builds the local demo database
python server.py --selftest # sanity check, no MCP client neededDann verifiziere es über eine echte MCP-Sitzung:
python verify_mcp.pyDatenbank auswählen
Der Server liest DATABASE_URL (aus der Umgebung oder aus einer .env-Datei — siehe .env.example):
| Backend |
nicht gesetzt |
|
gesetzt | die echte Archivdatenbank, z.B. |
archive.db enthält synthetische Datensätze, sodass der Server — und --selftest — für jeden laufen, der dieses Repo ohne Anmeldedaten klont. Es ist keine andere Codebasis: seed_db.py erstellt das gleiche Fünf-Tabellen-Schema, das auch die Produktionsdatenbank verwendet (active_records, archived_records, retention_policy, audit_logs, documents), sodass jede Abfrage in server.py unverändert gegen beide läuft.
Commite niemals eine echte DATABASE_URL. .env ist gitignored; .env.example ist die committete Vorlage.
Verbindung zu Claude Code
Vom Projektverzeichnis aus:
claude mcp add --scope project archive-system -- /absolute/path/to/.venv/bin/python /absolute/path/to/server.py
claude mcp list--scope project schreibt eine committbare .mcp.json in das Projektverzeichnis, sodass jeder, der das Repo klont, den Server erhält. Starte claude, genehmige den Projekt-Server, wenn du dazu aufgefordert wirst, und prüfe /mcp — archive-system sollte Verbunden mit 6 Tools anzeigen. Dann frage:
Welche IT-Abteilungsdatensätze sind zur Archivierung überfällig?
Wenn er nicht startet, führe claude --debug=mcp aus und lies das Log unter ~/.claude/debug/.
Verbindung zu Claude Desktop
Füge dies zu claude_desktop_config.json hinzu:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"archive-system": {
"command": "D:\\Python\\project\\archive-mcp\\.venv\\Scripts\\python.exe",
"args": ["D:\\Python\\project\\archive-mcp\\server.py"]
}
}
}Richte command auf das Python der venv aus, nicht auf nacktes python — der Host erbt nicht den PATH deiner Shell oder deine aktivierte virtuelle Umgebung. Unter Windows müssen beide Pfade doppelte Backslashes enthalten.
Starte über das Tray-Symbol neu — Beenden, nicht den Fenster-Schließen-Button — sonst läuft die App mit der alten Konfiguration weiter.
Hinweis für den Microsoft Store (MSIX)-Build unter Windows: Dessen Konfiguration liegt nicht unter %APPDATA%, sondern im eigenen Verzeichnis des Pakets, %LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\. Es startet lokale stdio-Server normal. Versuche nicht, das über logs\mcp.log zu bestätigen — diese Datei kann leer und unberührt bleiben, während alles funktioniert. Prüfe stattdessen den Prozess; der Server läuft als Kindprozess von Claude Desktop:
Get-CimInstance Win32_Process -Filter "Name like '%python%'" |
Where-Object { $_.CommandLine -like "*archive-mcp*" }Designhinweise
stdio-Transport, weil der Client den Server als Unterprozess auf derselben Maschine startet. Ein HTTP-Transport wäre sinnvoll, wenn der Server remote liefe und mehrere Clients bediente.
Eine Nahtstelle für die Speicherung.
_connect()gibt eine SQLAlchemy-Enginezurück und ist die einzige Stelle, die weiß, was die Datenbank ist. Abfragen verwenden benannte Bindeparameter (:department), die dialektneutral sind, sodass SQLite und PostgreSQL einen gemeinsamen Abfragesatz teilen statt zwei.pool_pre_ping=True, weil ein serverloses PostgreSQL (Neon und ähnliche) die Leerlauf-Compute suspendiert und ein MCP-Server zwischen Fragen im Leerlauf sitzt. Ohne dies schlägt die erste Frage nach einer ruhigen Phase auf einer veralteten gepoolten Verbindung fehl.Die Berechtigung wird in Python berechnet, nicht in SQL. PostgreSQL-
INTERVAL-Arithmetik hat kein SQLite-Äquivalent, und der Vergleich an einer Stelle zu halten, hält die beiden Backends ehrlich. Bei ein paar tausend aktiven Zeilen ist der Aufwand nicht wert, optimiert zu werden.Das Alter wird ab
joining_dategemessen.created_atist der Bulk-Load-Zeitstempel und für jede Zeile identisch, sodass eine darauf basierende Aufbewahrung nie etwas Berechtigtes finden würde.joining_dateist ein Datum auf Mitarbeiterebene, das als Dokumentdatum dient — das Schema enthält kein Dokumentdatum, was eine echte Lücke ist, die es wert ist, upstream geschlossen zu werden.Der Archivierungszustand ist eine Tabelle, kein Flag. Ein Datensatz lebt in
active_recordsoder inarchived_records, und die IDs sind über den Wechsel hinweg stabil, sodassget_recordbeide prüft. Die Spaltestatusist der Beschäftigungsstatus und steht in keinem Zusammenhang.Tools sind als schreibgeschützt annotiert. Jedes trägt
ToolAnnotations(read_only_hint=True, destructive_hint=False), sodass ein Client einen sicheren Aufruf von einem zustandsändernden unterscheiden kann, bevor er ausgeführt wird.Tools sind auch tatsächlich schreibgeschützt. Archivierung ist destruktiv und richtlinienbasiert;
archival_candidatesmeldet bewusst, was archiviert werden könnte, und überlässt die Entscheidung dem bestehenden geplanten Job. Ein destruktives Tool einem Modell auszusetzen, ist eine Entscheidung, die zuerst einen Bestätigungspfad erfordert.Docstrings sind die API. Das Modell wählt Tools anhand des Docstrings und der Typannotationen aus, daher sind die gültigen Abteilungen und Dokumenttypen dort aufgelistet. Eine veraltete Aufzählung ist schlimmer als keine: Das Modell übergibt einen plausibel aussehenden Wert wie
Legal, erhält ein leeres Ergebnis und meldet, dass es nichts zu archivieren gibt.Eine Definition von „berechtigt“, in beide Richtungen verwendet.
_verdictaltert einen Datensatz gegen seine Aufbewahrungsfrist;_eligible_oninvertiert dies, um das Datum zu erhalten, an dem ein Datensatz diese Frist überschreitet, und danach gruppiertretention_forecast. Sie müssen exakt übereinstimmen, sonst kann ein Datensatz am selben Tag als bevorstehend in der Prognose und als überfällig inarchival_candidateserscheinen. Die Inverse auf die naheliegende Weise zu schreiben (joining + timedelta(days=years * 365.25)) bricht dies, weildate + timedeltanur ganze Tage behält und die.75stillschweigend verwirft.Die Ausgabe ist formatierter Text, keine rohen JSON-Dumps, sodass das Modell sie ohne Neuformatierung an einen Benutzer zurückzitieren kann.
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 Connectors
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Read-only MCP access to authorized Vocci sessions, notes, files, and memory search.
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
Related MCP Servers
- AlicenseCqualityBmaintenanceA local MCP server for the LimaCharlie security platform that provides investigation, administration, and content-review workflows via a broad read-only tool surface with explicit organization scoping and audit logging.100MIT
- AlicenseBqualityBmaintenanceA read-only MCP server for Microsoft Intune and Entra ID that enables list, get, search, and reporting operations for tenant visibility, audits, troubleshooting, and health reporting without write actions. It includes authentication helpers, report exports, and metadata discovery tools.361MIT
- AlicenseNot gradedqualityAmaintenanceProvides read-only MCP tools for market snapshots, position risk, order reconciliation, and daily report previews with deterministic financial calculations, evidence chains, and audit trails.MIT
- AlicenseAqualityBmaintenanceProvides governed retrieval over MCP with hybrid search, strict confidence gating, and access control, exposing three read-only tools.3Apache 2.0
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/Surajp1602/archive-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server