{"_id":"@spideriq/mcp-media","_rev":"2-11d868392df1b385c0b50aba914498f4","name":"@spideriq/mcp-media","dist-tags":{"latest":"1.3.0"},"versions":{"1.1.0":{"name":"@spideriq/mcp-media","version":"1.1.0","keywords":["spideriq","spidermedia","mcp","model-context-protocol","media","dam","video","catalog","claude","ai-assistant"],"author":{"name":"SpiderIQ"},"license":"MIT","_id":"@spideriq/mcp-media@1.1.0","maintainers":[{"name":"martinshein","email":"martin@di-atomic.com"}],"homepage":"https://github.com/SpiderIQ/SpiderIQ#readme","bugs":{"url":"https://github.com/SpiderIQ/SpiderIQ/issues"},"bin":{"spideriq-mcp-media":"dist/server.js"},"dist":{"shasum":"b67599abaf44b1d05566d5b35722f3d65d548a22","tarball":"https://registry.npmjs.org/@spideriq/mcp-media/-/mcp-media-1.1.0.tgz","fileCount":3,"integrity":"sha512-KWE1zSVhaW/5FBgtWDvligLeXAXaAHhFTgQpWswdv+Mpwi9ogENQxb+TILVkdK3YuPaVS76CSS82ySaIVEw34A==","signatures":[{"sig":"MEYCIQDMwpwmBrHuFSvbKWcODo4y8uWjBciNcIQwVsZNJvEamwIhAJIxxZ3rsvk/KZD/Sq2hbLTFk2xAwp2UyXK0ELIMB599","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23799},"main":"dist/server.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"d5d1825200b9b1c0e47d5cf8ef44c6816a8eaceb","mcpName":"ai.spideriq/media","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","start":"node dist/server.js","typecheck":"tsc --noEmit","prepublishOnly":"echo 'ERROR: Use packages/scripts/publish-package.sh, not raw npm publish. See docs/services/SpiderCLI/LEARNINGS.md' && exit 1"},"_npmUser":{"name":"martinshein","email":"martin@di-atomic.com"},"repository":{"url":"git+https://github.com/SpiderIQ/SpiderIQ.git","type":"git","directory":"packages/mcp-media"},"_npmVersion":"10.9.7","description":"SpiderIQ Media MCP Server — SpiderMedia files, videos, and the per-tenant media catalog (read) for AI assistants","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.22.4","yaml":"^2.3.4","@spideriq/core":"^1.31.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.3.3","@types/node":"^20.11.0","@spideriq/mcp-tools":"^1.34.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-media_1.1.0_1781911977541_0.7614638964276357","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"_id":"@spideriq/mcp-media@1.3.0","bin":{"spideriq-mcp-media":"dist/server.js"},"bugs":{"url":"https://github.com/SpiderIQ/SpiderIQ/issues"},"dist":{"shasum":"c143e677613a0ebe7f56e412a8af89fc2b329cfa","tarball":"https://registry.npmjs.org/@spideriq/mcp-media/-/mcp-media-1.3.0.tgz","fileCount":3,"integrity":"sha512-7sdwlodFDj/wjsbRntPcFKnQa5H7PL63t1bS1fZHbGJux9Yif36orLZiZkX00wek5mOHpSBWnOAXXhocVzCh1A==","signatures":[{"sig":"MEYCIQDWsHIoOASBXVA1EklHnLHnxFpDkLbpbanoEWktf1UPyAIhAO15FDFIZh1f7I/gHonna2o0gpIU7Y4ptCKrX/RNUZ2g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHVMGs5/e8rIx7a2dxbh+T9gZ3w16q3GJRronfvdZrjIAiB+rVNg4idM05JFh2iHjAMucpEzWr0Ud75itTie+EhDtg=="}],"unpackedSize":33625},"main":"dist/server.js","name":"@spideriq/mcp-media","type":"module","author":{"name":"SpiderIQ"},"engines":{"node":">=18.0.0"},"gitHead":"f909117cc1b0406d8f58ad755c2d40e393518e4b","license":"MIT","mcpName":"ai.spideriq/media","scripts":{"dev":"tsup --watch","build":"tsup","clean":"rm -rf dist","start":"node dist/server.js","typecheck":"tsc --noEmit","prepublishOnly":"echo 'ERROR: Use packages/scripts/publish-package.sh, not raw npm publish. See docs/services/SpiderCLI/LEARNINGS.md' && exit 1"},"version":"1.3.0","_npmUser":{"name":"martinshein","email":"martin@di-atomic.com"},"homepage":"https://github.com/SpiderIQ/SpiderIQ#readme","keywords":["spideriq","spidermedia","mcp","model-context-protocol","media","dam","video","catalog","claude","ai-assistant"],"repository":{"url":"git+https://github.com/SpiderIQ/SpiderIQ.git","type":"git","directory":"packages/mcp-media"},"_npmVersion":"10.9.7","description":"SpiderIQ Media MCP Server — SpiderMedia files, videos, and the per-tenant media catalog (read) for AI assistants","directories":{},"maintainers":[{"name":"martinshein","email":"martin@di-atomic.com"}],"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.22.4","yaml":"^2.3.4","@spideriq/core":"^1.76.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.3.3","@types/node":"^20.11.0","@spideriq/mcp-tools":"^1.85.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-media_1.3.0_1788524882094_0.5983724996362454"}}},"time":{"created":"2026-06-19T23:32:57.414Z","modified":"2026-09-04T12:28:02.387Z","1.1.0":"2026-06-19T23:32:57.680Z","1.3.0":"2026-09-04T12:28:02.171Z"},"bugs":{"url":"https://github.com/SpiderIQ/SpiderIQ/issues"},"author":{"name":"SpiderIQ"},"license":"MIT","homepage":"https://github.com/SpiderIQ/SpiderIQ#readme","keywords":["spideriq","spidermedia","mcp","model-context-protocol","media","dam","video","catalog","claude","ai-assistant"],"repository":{"url":"git+https://github.com/SpiderIQ/SpiderIQ.git","type":"git","directory":"packages/mcp-media"},"description":"SpiderIQ Media MCP Server — SpiderMedia files, videos, and the per-tenant media catalog (read) for AI assistants","maintainers":[{"name":"martinshein","email":"martin@di-atomic.com"}],"readme":"# @spideriq/mcp-media\n\n> Atomic MCP server for **SpiderMedia** — file/video management plus the read-only per-tenant media catalog. 17 tools (8 shared + 6 file/video + 3 catalog).\n\nPart of the SpiderIQ MCP catalog. See [@spideriq/mcp](https://npm.spideriq.ai/-/web/detail/@spideriq/mcp) for the kitchen-sink variant that includes every slice and [@spideriq/cli](https://npm.spideriq.ai/-/web/detail/@spideriq/cli) for the command-line variant.\n\n\n## Which tenant will this write to?\n\nResolution order — first hit wins. Every response reports which rung won as `_tenancy.via`.\n\n| # | Source | How |\n|---|--------|-----|\n| 1 | explicit | `workspace: \"cli_…\"` argument on the call — **always wins, works per-call** |\n| 2 | environment | `SPIDERIQ_WORKSPACE=cli_…` |\n| 3 | binding | a `spideriq.json` in cwd or an ancestor (`SPIDERIQ_WORKSPACE_CWD` overrides where we look) |\n| 4 | sole credential | automatic when exactly one is stored — reported as `via: \"sole-credential\"`, never silent |\n| 5 | — | **REFUSED.** With several tenants and no binding we do not guess. The error carries `retry_with` — merge it into your retry. |\n\n**Running an agency / multiple clients?** Pass `workspace` on every call. `cwd` is a\nper-process fact; tenancy is a per-call fact, so one session can drive many tenants\nwith no `cd`, restart, or reconfiguration.\n\n```js\ncontent_list_pages({ workspace: \"cli_clientA\" })\ncontent_create_page({ workspace: \"cli_clientB\", title: \"…\" })\n```\n\n> ⚠️ **Some IDEs spawn MCP servers with `cwd=/`** (Antigravity does). Nothing\n> cwd-derived is reachable from there, so set `SPIDERIQ_WORKSPACE` or\n> `SPIDERIQ_WORKSPACE_CWD` in the server's `env` block, or pass `workspace` per call.\n\nLost? Call `get_auth_status({topic:\"tenancy\"})` — it returns the active tenant, why it\nwas chosen, every workspace you can reach, and how to switch.\n\n## Why this package\n\n- **Focused toolset.** Only SpiderMedia tools — well under the ~128-tool ceiling some IDEs impose (Antigravity, some OpenAI Responses deployments).\n- **Less context noise.** Fewer tool schemas injected into the LLM context means more room for actual work.\n- **Product-aligned.** Media-only agents don't load content, lead-gen, email, or gateway tools.\n\n## Install\n\n```json\n{\n  \"mcpServers\": {\n    \"spideriq-media\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@spideriq/mcp-media\"],\n      \"env\": {\n        \"SPIDERIQ_FORMAT\": \"yaml\",\n        \"npm_config_registry\": \"https://npm.spideriq.ai\"\n      }\n    }\n  }\n}\n```\n\nThen restart your IDE (Claude Code, Cursor, Antigravity, Windsurf).\n\n## Authenticate\n\nFirst time only — the server exposes the standard SpiderIQ PAT flow:\n\n1. Ask the agent to call `request_access` with your admin email\n2. Admin approves via email link\n3. Token is saved to `~/.spideriq/credentials.json` and every subsequent call uses it\n\nSee [SpiderCLI authentication docs](../../docs/services/SpiderCLI/CLAUDE.md#pat-authentication-flow) for the full flow diagram.\n\n## Tools included\n\n**Shared (8):** `request_access`, `check_access_status`, `get_auth_status`, `logout`, `list_workspaces`, `health_check`, `get_queue_stats`, `get_api_info`.\n\n**File / video (6):** `import_from_url`, `list_files`, `delete_file`, `list_videos`, `get_video_status`, `get_media_stats`. These operate on a provisioned media bucket (carried 1:1 from `@spideriq/mcp-publish`, where they still work unchanged).\n\n**Catalog — read-only (3):** `catalog_list_assets`, `catalog_get_asset`, `catalog_search_assets`. These read the per-tenant `media_assets` DAM catalog, which spans **every** storage tier (SeaweedFS / R2 / PeerTube) and asset kind (image / video / doc) — broader than `list_files`/`list_videos`, which only see one provisioned bucket. Each accepts `format: json|yaml|md`.\n\n> **Safety (Mux pattern):** the catalog tools are read-only. The only destructive media tool is `delete_file` (bucket-scoped, carried for back-compat). There is no catalog delete/purge tool.\n\n## See also\n\n- [@spideriq/mcp](https://npm.spideriq.ai/-/web/detail/@spideriq/mcp) — kitchen-sink MCP (all slices)\n- [@spideriq/cli](https://npm.spideriq.ai/-/web/detail/@spideriq/cli) — `spideriq media list|get|search|upload` for humans\n- [SpiderCLI docs](../../docs/services/SpiderCLI/CLAUDE.md)\n","readmeFilename":"README.md"}