Skip to main content
Glama
artifacts_colector

artifacts_colector

by osJedi

artifacts_colector

팀과 버전 관리되는 skills 및 artifacts를 공유하기 위한 예제 MCP 서버입니다. 기본적으로 최신 버전을 제공하지만, 태그(예: stable) 또는 정확한 버전 번호로 이전 버전을 고정할 수 있습니다.

Python(MCP Python SDK v2)으로 구현되었습니다. 서버는 stdio를 통해 클라이언트(Claude Code)와 통신하며 Docker 이미지로 배포됩니다.

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

각 skill/artifact는 manifest.json(설명 + 선택적 태그)과 versions/ 하위 폴더를 가진 폴더입니다. 각 버전은 semver(1.0.0, 1.1.0, ...)로 이름이 지정된 자체 폴더입니다. "latest" 버전은 기존 폴더 중 가장 높은 semver로 동적으로 계산되므로, 새 버전이 추가될 때 수동으로 업데이트할 필요가 없습니다.

Related MCP server: SkillShare MCP Server

MCP tools

Tool

Description

list_skills

모든 skill 나열: 이름, 설명, latest, 사용 가능한 버전/태그

get_skill

name으로 skill 콘텐츠 가져오기(+ 선택적 version: 태그 또는 semver)

list_artifacts

모든 artifact 나열: 이름, 설명, latest, 버전/태그

get_artifact

name으로 artifact 콘텐츠 가져오기(+ 선택적 version: 태그 또는 semver)

version이 생략되면 최신 버전이 반환됩니다. 태그(예: stable)가 주어지면 manifest.json에서 해당 태그가 가리키는 버전으로 해석됩니다. 정확한 semver가 주어지면 해당 정확한 버전이 반환됩니다.

Local run (venv)

Python 3.10+가 필요합니다.

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

프로세스는 아무것도 출력하지 않고 반환되지 않습니다. MCP 호스트가 먼저 말하기를 stdin에서 기다리고 있기 때문입니다. 이는 정상적인 동작입니다.

Claude Code 없이 MCP Inspector를 통한 로컬 검증(npx 필요):

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

Running in Docker

이미지 빌드:

docker build -t artifacts-collector-mcp .

수동 실행:

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

(위와 동일: 아무것도 출력하지 않고 stdin에서 JSON-RPC 요청을 기다리며 차단됩니다. 실제로 도구를 사용하려면 MCP Inspector를 동일한 docker run -i --rm ... 명령에 연결하세요.)

Connecting from Claude Code

옵션 1 — Docker(팀 배포에 권장)

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

또는 Claude Code가 실행되는 프로젝트 루트의 .mcp.json 파일을 통해:

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

이미지는 팀 레지스트리(예: ghcr.io/<org>/artifacts-collector-mcp)에 게시하고 동일한 .mcp.json을 통해 공유할 수 있으므로, 팀원은 로컬 빌드 대신 docker pull만 하면 됩니다.

옵션 2 — 로컬 venv(서버 자체 개발용)

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

새 skill/artifact 버전 추가

  1. 최신 버전을 새 versions/<new-semver>/ 폴더에 복사하고 변경 사항을 적용합니다.

  2. 선택적으로 manifest.json에서 태그로 안정 버전을 고정합니다("tags": { "stable": "1.0.0" }).

  3. 다른 등록은 필요 없습니다. latest는 자동으로 다시 계산됩니다.

  4. Docker로 배포하는 경우 이미지를 다시 빌드합니다(docker build ...).

Security

MCP 클라이언트에서 오는 name과 version/태그는 파일 시스템 경로에 직접 대체되지 않습니다. content/를 스캔하여 찾은 실제 폴더 이름과 일치하는 경우에만 허용됩니다. 이는 ../../etc와 같은 값을 통한 경로 탐색을 차단합니다. 컨테이너는 또한 비-root 사용자로 실행됩니다(Dockerfile의 USER mcp).

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Self-hosted MCP server for publishing, sharing, and reviewing AI agent artifacts with version history and pinned comments.
    MIT