Skip to main content
Glama
osJedi

artifacts_colector

by osJedi

artifacts_colector

Ein Beispiel-MCP-Server zum Teilen versionierter Skills und Artifacts mit einem Team: Standardmäßig wird die neueste Version ausgeliefert, aber jede ältere kann per Tag (z. B. stable) oder über eine exakte Versionsnummer festgelegt werden.

Implementiert in Python (MCP Python SDK v2). Der Server kommuniziert über stdio mit seinem Client (Claude Code) und wird als Docker-Image verteilt.

Layout

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

Jeder Skill/jedes Artifact ist ein Ordner mit einer manifest.json (Beschreibung + optionale Tags) und einem versions/-Unterordner, in dem jede Version ein eigener Ordner ist, der nach ihrem Semver benannt ist (1.0.0, 1.1.0, ...). Die „latest“-Version wird dynamisch als höchstes Semver unter den vorhandenen Ordnern berechnet, sodass beim Hinzufügen einer neuen Version nichts von Hand aktualisiert werden muss.

Related MCP server: SkillShare MCP Server

MCP-Tools

Tool

Beschreibung

list_skills

Alle Skills auflisten: Name, Beschreibung, latest, verfügbare Versionen/Tags

get_skill

Inhalt eines Skills per name abrufen (+ optional version: Tag oder Semver)

list_artifacts

Alle Artifacts auflisten: Name, Beschreibung, latest, Versionen/Tags

get_artifact

Inhalt eines Artifacts per name abrufen (+ optional version: Tag oder Semver)

Wenn version weggelassen wird, wird die neueste Version zurückgegeben. Wenn ein Tag (z. B. stable) angegeben wird, wird die Version aufgelöst, auf die das Tag in manifest.json verweist. Wenn ein exaktes Semver angegeben wird, wird genau diese Version zurückgegeben.

Lokaler Lauf (venv)

Erfordert Python 3.10+.

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

Der Prozess gibt nichts aus und kehrt nie zurück – er wartet auf stdin darauf, dass ein MCP-Host zuerst spricht. Das ist erwartet.

Lokaler Sanity-Check ohne Claude Code über MCP Inspector (erfordert npx):

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

Ausführen in Docker

Image bauen:

docker build -t artifacts-collector-mcp .

Manuell ausführen:

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

(wie oben: Es gibt nichts aus und blockiert, während es auf JSON-RPC-Anfragen auf stdin wartet; um die Tools tatsächlich zu testen, richten Sie MCP Inspector auf denselben docker run -i --rm ...-Befehl).

Verbinden von Claude Code

Option 1 – Docker (empfohlen für Team-Verteilung)

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

Oder über eine .mcp.json-Datei im Stammverzeichnis des Projekts, in dem Claude Code ausgeführt wird:

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

Das Image kann in eine Team-Registry veröffentlicht (z. B. ghcr.io/<org>/artifacts-collector-mcp) und über dieselbe .mcp.json geteilt werden, sodass Teammitglieder nur docker pull benötigen, statt lokal zu bauen.

Option 2 – lokales venv (zum Entwickeln des Servers selbst)

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

Hinzufügen einer neuen Skill-/Artifact-Version

  1. Kopieren Sie die neueste Version in einen neuen versions/<new-semver>/-Ordner und nehmen Sie Ihre Änderungen vor.

  2. Optional eine stabile Version mit einem Tag in manifest.json festlegen ("tags": { "stable": "1.0.0" }).

  3. Sonst muss nichts registriert werden – latest wird automatisch neu berechnet.

  4. Bei Verteilung über Docker das Image neu bauen (docker build ...).

Sicherheit

Ein name und eine version/ein Tag von einem MCP-Client werden nie direkt in einen Dateisystempfad eingesetzt: Sie werden nur akzeptiert, wenn sie mit einem echten Ordnernamen übereinstimmen, der durch Scannen von content/ gefunden wurde. Das schließt Path Traversal über Werte wie ../../etc aus. Der Container läuft außerdem als Nicht-Root-Benutzer (USER mcp im 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