Archive MCP Server
Archive MCP Server
Un servidor MCP que expone los registros y la lógica de retención del Enterprise Data Archival & Records Management System a cualquier cliente MCP — Claude Code, Claude Desktop, Cursor, o tu propio cliente — a través de stdio.
En lugar de hacer clic en el panel de React para responder "¿qué podemos archivar en Finance?", le preguntas al modelo, y este llama a estas herramientas.
Herramientas
Herramienta | Qué hace |
| Encuentra registros por empleado, departamento o tipo de documento |
| Obtiene un registro con su veredicto de retención |
| Registros activos que han superado su período de retención, primero los más vencidos |
| Recuentos de activos frente a archivados por departamento |
| Proyección mes a mes de lo que pasa a ser archivable |
| Qué hizo el trabajo de archivado programado y cuándo |
Related MCP server: EndpointRead-MCP
Recursos
URI | Contenido |
| Período de retención, en años, por tipo de documento |
Requisitos
Python 3.10+ y MCP SDK 2.x. El SDK v2 renombró FastMCP a MCPServer y lo movió a mcp.server.mcpserver; este código apunta a la v2. El acceso a datos es SQLAlchemy 2.x, con psycopg2 para PostgreSQL.
Configuración
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 neededLuego verifícalo en una sesión MCP real:
python verify_mcp.pyElegir una base de datos
El servidor lee DATABASE_URL (del entorno, o de un archivo .env — consulta .env.example):
| Backend |
sin definir |
|
definida | la base de datos de archivo real, p. ej. |
archive.db contiene registros sintéticos, de modo que el servidor — y --selftest — funcionan para cualquiera que clone este repositorio sin credenciales. No es un código distinto: seed_db.py construye el mismo esquema de cinco tablas que usa la base de datos de producción (active_records, archived_records, retention_policy, audit_logs, documents), de modo que todas las consultas de server.py se ejecutan sin cambios contra cualquiera de las dos.
Nunca hagas commit de un DATABASE_URL real. .env está en gitignore; .env.example es la plantilla versionada.
Conexión con Claude Code
Desde el directorio del proyecto:
claude mcp add --scope project archive-system -- /absolute/path/to/.venv/bin/python /absolute/path/to/server.py
claude mcp list--scope project escribe un .mcp.json listo para commit en la raíz del proyecto, de modo que cualquiera que clone el repositorio obtiene el servidor. Inicia claude, aprueba el servidor del proyecto cuando se te pida, y comprueba /mcp — archive-system debería mostrar Connected con 6 herramientas. Luego pregunta:
¿Qué registros del departamento de TI están vencidos para su archivado?
Si falla al iniciar, ejecuta claude --debug=mcp y lee el log en ~/.claude/debug/.
Conexión con Claude Desktop
Añade esto a claude_desktop_config.json:
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"]
}
}
}Apunta command al Python del venv, no al python a secas — el host no hereda el PATH de tu shell ni tu virtualenv activado. En Windows, ambas rutas necesitan barras invertidas dobles.
Reinícialo desde el icono de la bandeja del sistema — Quit, no el botón de cerrar la ventana — o la aplicación seguirá ejecutándose con la configuración anterior.
Nota para la compilación de Microsoft Store (MSIX) en Windows: su configuración no está en %APPDATA%, sino en el directorio propio del paquete, %LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\. Lanza los servidores stdio locales con normalidad. No intentes confirmarlo desde logs\mcp.log — ese archivo puede permanecer vacío e intacto mientras todo funciona. Comprueba en su lugar el proceso; el servidor se ejecuta como un proceso hijo de Claude Desktop:
Get-CimInstance Win32_Process -Filter "Name like '%python%'" |
Where-Object { $_.CommandLine -like "*archive-mcp*" }Notas de diseño
Transporte stdio, porque el cliente lanza el servidor como un subproceso en la misma máquina. Un transporte HTTP tendría sentido si el servidor se ejecutara de forma remota y atendiera a varios clientes.
Una única costura para el almacenamiento.
_connect()devuelve unEnginede SQLAlchemy y es el único lugar que sabe qué base de datos es. Las consultas usan parámetros de enlace con nombre (:department), que son neutrales al dialecto, de modo que SQLite y PostgreSQL comparten un único conjunto de consultas en lugar de dos.pool_pre_ping=True, porque un PostgreSQL serverless (Neon y compañía) suspende el cómputo inactivo y un servidor MCP permanece ocioso entre pregunta y pregunta. Sin esto, la primera pregunta tras un período de inactividad falla por una conexión obsoleta del pool.La elegibilidad se calcula en Python, no en SQL. La aritmética de
INTERVALde PostgreSQL no tiene equivalente en SQLite, y mantener la comparación en un solo lugar mantiene honestos a los dos backends. Con unos pocos miles de filas activas, el coste no merece la pena optimizarlo.La antigüedad se mide desde
joining_date.created_ates la marca de tiempo de la carga masiva y es idéntica para todas las filas, de modo que la retención calculada a partir de ella no encontraría nada elegible, nunca.joining_datees una fecha a nivel de empleado que hace las veces de fecha del documento — el esquema no incluye ninguna fecha del documento, lo cual es una laguna real que merece la pena cerrar en el origen.El estado de archivado es una tabla, no una bandera. Un registro vive en
active_recordso enarchived_records, y los ids son estables a lo largo del movimiento, de modo queget_recordcomprueba ambas. La columnastatuses el estado de empleo y no está relacionada.Las herramientas están anotadas como de solo lectura. Cada una lleva
ToolAnnotations(read_only_hint=True, destructive_hint=False), de modo que un cliente puede distinguir una llamada segura de una que cambia el estado antes de ejecutarla.Las herramientas también son de solo lectura en la práctica. El archivado es destructivo y está sujeto a políticas;
archival_candidatesinforma deliberadamente de lo que podría archivarse y deja la decisión al trabajo programado existente. Exponer una herramienta destructiva a un modelo es una decisión que requiere antes un flujo de confirmación.Los docstrings son la API. El modelo elige las herramientas a partir del docstring y de las type hints, así que los departamentos y tipos de documento válidos están enumerados allí. Un enum obsoleto es peor que ninguno: el modelo pasa un valor de apariencia plausible como
Legal, obtiene un resultado vacío y reporta que no hay nada que archivar.Una única definición de "eligible", usada en ambas direcciones.
_verdictcalcula la antigüedad de un registro frente a su período de retención;_eligible_onla invierte para dar la fecha en que un registro cruza ese período, que es el criterio por el que agruparetention_forecast. Deben coincidir exactamente, o un registro puede aparecer como próximo en la previsión y como vencido enarchival_candidatesel mismo día. Escribir la inversa de la manera obvia (joining + timedelta(days=years * 365.25)) lo rompe, porquedate + timedeltaconserva solo los días completos y descarta silenciosamente el.75.La salida es texto formateado, no volcados JSON en bruto, de modo que el modelo pueda citarlo de vuelta al usuario sin reformatearlo.
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