Skip to main content
Glama
osJedi

artifacts_colector

by osJedi

artifacts_colector

Un servidor MCP de ejemplo para compartir habilidades y artefactos versionados con un equipo: por defecto sirve la última versión, pero cualquier versión anterior se puede fijar mediante una etiqueta (p. ej. stable) o un número de versión exacto.

Implementado en Python (MCP Python SDK v2). El servidor se comunica con su cliente (Claude Code) a través de stdio y se distribuye como una imagen de Docker.

Estructura

content/
  skills/<name>/manifest.json          # description + tags (alias -> version)
  skills/<name>/versions/<semver>/...  # files for one skill version
  artifacts/<name>/manifest.json
  artifacts/<name>/versions/<semver>/...
server/
  models.py    # Pydantic response models (LibraryItemSummary, ResolvedItem)
  library.py   # scans content/, resolves versions/tags, reads files safely
  app.py       # MCP server: registers tools and serves them over stdio
Dockerfile
requirements.txt

Cada habilidad/artefacto es una carpeta con un manifest.json (descripción + etiquetas opcionales) y una subcarpeta versions/, donde cada versión es su propia carpeta con el nombre de su semver (1.0.0, 1.1.0, ...). La versión "última" se calcula dinámicamente como el semver más alto entre las carpetas existentes, por lo que no hay nada que actualizar manualmente cuando se añade una nueva versión.

Related MCP server: SkillShare MCP Server

Herramientas MCP

Tool

Description

list_skills

Lista cada habilidad: nombre, descripción, latest, versiones/etiquetas disponibles

get_skill

Obtiene el contenido de una habilidad por name (+ version opcional: etiqueta o semver)

list_artifacts

Lista cada artefacto: nombre, descripción, latest, versiones/etiquetas

get_artifact

Obtiene el contenido de un artefacto por name (+ version opcional: etiqueta o semver)

Si se omite version, se devuelve la última versión. Si se proporciona una etiqueta (p. ej. stable), se resuelve a la versión a la que apunta esa etiqueta en manifest.json. Si se proporciona un semver exacto, se devuelve esa versión exacta.

Ejecución local (venv)

Requiere Python 3.10+.

python3 -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python -m server.app

El proceso no imprime nada y nunca retorna: está esperando en stdin a que un host MCP hable primero. Eso es lo esperado.

Comprobación local sin Claude Code, mediante MCP Inspector (requiere npx):

npx @modelcontextprotocol/inspector --cli python -m server.app --method tools/list

Ejecución en Docker

Construye la imagen:

docker build -t artifacts-collector-mcp .

Ejecútalo manualmente:

docker run -i --rm artifacts-collector-mcp

(igual que arriba: no imprime nada y se bloquea, esperando peticiones JSON-RPC en stdin; para ejercitar realmente las herramientas, apunta MCP Inspector al mismo comando docker run -i --rm ...).

Conexión desde Claude Code

Opción 1 — Docker (recomendado para distribución en equipo)

docker build -t artifacts-collector-mcp .
claude mcp add artifacts-collector -- docker run -i --rm artifacts-collector-mcp

O mediante un archivo .mcp.json en la raíz del proyecto donde se ejecuta Claude Code:

{
  "mcpServers": {
    "artifacts-collector": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "artifacts-collector-mcp"]
    }
  }
}

La imagen se puede publicar en un registro del equipo (p. ej. ghcr.io/<org>/artifacts-collector-mcp) y compartirse mediante ese mismo .mcp.json, de modo que los compañeros solo necesiten docker pull en lugar de una compilación local.

Opción 2 — venv local (para desarrollar el propio servidor)

claude mcp add artifacts-collector -- /absolute/path/to/artifacts_colector/.venv/bin/python -m server.app

Añadir una nueva versión de habilidad/artefacto

  1. Copia la última versión en una nueva carpeta versions/<new-semver>/ y haz tus cambios.

  2. Opcionalmente, fija una versión estable con una etiqueta en manifest.json ("tags": { "stable": "1.0.0" }).

  3. No hay nada más que registrar: latest se recalcula automáticamente.

  4. Si se distribuye mediante Docker, reconstruye la imagen (docker build ...).

Seguridad

Un name y version/etiqueta provenientes de un cliente MCP nunca se sustituyen directamente en una ruta del sistema de archivos: solo se aceptan si coinciden con un nombre de carpeta real encontrado al escanear content/. Esto descarta el path traversal mediante valores como ../../etc. El contenedor también se ejecuta como un usuario no root (USER mcp en el Dockerfile).

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

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/osJedi/artifacts_colector'

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