jellyfin-kg-ingestion

jellyfin-kg-ingestion is a skill for Claude Code, Codex from Knuckles-Team/jellyfin-mcp. It costs 158 tokens per session (1,071 once invoked), scanned A, original, MIT.

A skill for importing a Jellyfin media library into an epistemic-graph knowledge graph, a system that connects information as searchable entities and relationships. It stores media items, descriptions, genres, contributors, and posters when the required services are available.

In plain words
What is it for?
Use it to import or refresh Jellyfin library items, make descriptions searchable, and save deduplicated poster artwork.
Why use it?
It turns a Jellyfin catalog into connected, searchable knowledge instead of leaving it only inside the media server. It also avoids making changes when the knowledge-graph engine is unavailable.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to import or refresh Jellyfin library items, make descriptions searchable, and save deduplicated poster artwork.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/knuckles-team/jellyfin-mcp/jellyfin-kg-ingestion
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add Knuckles-Team/jellyfin-mcp --skill jellyfin-kg-ingestion
Clone the repo
git clone --depth 1 https://github.com/Knuckles-Team/jellyfin-mcp

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for jellyfin-kg-ingestion

README.md
[![agentmods](https://agentmods.dev/badge/skills/knuckles-team/jellyfin-mcp/jellyfin-kg-ingestion/github.svg)](https://agentmods.dev/skills/knuckles-team/jellyfin-mcp/jellyfin-kg-ingestion)
Your own site
<a href="https://agentmods.dev/skills/knuckles-team/jellyfin-mcp/jellyfin-kg-ingestion"><img src="https://agentmods.dev/badge/skills/knuckles-team/jellyfin-mcp/jellyfin-kg-ingestion/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for jellyfin-kg-ingestion

Your own site · 80×15
<a href="https://agentmods.dev/skills/knuckles-team/jellyfin-mcp/jellyfin-kg-ingestion"><img src="https://agentmods.dev/badge/skills/knuckles-team/jellyfin-mcp/jellyfin-kg-ingestion.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 158 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,071 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00158 $0.01071
Opus 5 $0.00079 $0.00535
Sonnet 5 $0.00032 $0.00214
Haiku 4.5 $0.00016 $0.00107

Measured 12d ago against content hash 755d9dd763c5, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

jellyfin-kg-ingestion scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

jellyfin_mcp/skills/jellyfin-kg-ingestion/SKILL.md · 89 lines

How it starts

The opening of the file, as written. The whole thing — 89 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Jellyfin Knowledge-Graph Ingestion

Native "maximum ingestion" of a Jellyfin library into the ONE epistemic-graph knowledge graph. Library items become typed OWL nodes; overviews become semantic-search documents; posters become deduped blobs — all best-effort and engine-guarded (no engine reachable ⇒ clean no-op).

When to use

  • Make a Jellyfin catalog queryable in the KG (jellyfin_ingest_library).
  • Refresh media nodes after library changes (re-run; ids are stable).
  • Persist item artwork as durable blobs (jellyfin_ingest_posters).

When NOT to use

  • Interactive catalog browse/search → jellyfin-library-catalog.
  • Streaming / playback control → jellyfin-media-playback.
  • Server administration → the jellyfin_system tool.

Prerequisites & environment

Connect via the mcp-client skill against the jellyfin-mcp MCP server. Ingestion additionally requires a reachable epistemic-graph engine (an agent_utilities KG stack); with none present the tools return {"ingested": null} and do nothing else.

Variable Required Notes
JELLYFIN_URL Base server URL
JELLYFIN_API_KEY / JELLYFIN_TOKEN X-Emby-Token API key
JELLYFIN_USER_ID optional Default user_id for item reads

Tools & actions

Tool Purpose
jellyfin_ingest_library List items (get_items filters via params_json) → typed nodes + documents
jellyfin_ingest_posters For given item_ids, fetch the primary image → :Blob + :MediaAsset

KG mapping

  • Item → media:MediaAsset:<Id> (:Book when the item Type is a book/audiobook), carrying itemKind, overview, productionYear, communityRating, …
  • Genres[]media:Genre:<slug> + :hasGenre edge.
  • Artists[]media:Artist:<slug> + :performedBy (or :Author + :authoredBy for books).
  • Item Overviewmedia:Document:<Id> (:Document, embedded hub-side).
  • Node ids follow media:<class>:<externalId>; provenance source=jellyfin-mcp, domain=media.

Read the full file on GitHub · 89 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 89 lines · 158 tokens per session scan A 755d9dd763c5

Subscribe to this mod's changes

jellyfin-kg-ingestion is a skill published in the GitHub repository Knuckles-Team/jellyfin-mcp (3 stars, last pushed 14d ago), licensed MIT. It adds 158 tokens to every session and 1,071 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

archivebox-kg-ingestion

Natively ingest an ArchiveBox archive into the epistemic-graph knowledge graph via the archivebox-api MCP server — push snapshots as typed :Snapshot nodes (with :Tag + :hasTag links and per-snapshot :Document page-text) and archive results as :ArchiveResult nodes, best-effort, with the Wire-First ingest tools. Use…

Knuckles-Team/archivebox-api · 141 tokens

audio-transcriber-knowledge-graph

Native knowledge-graph ingestion of Whisper transcripts on the audio-transcriber MCP server — transcribe an audio/video file and push it into the epistemic-graph in one call: the raw audio as a shared :MediaAsset blob, the transcript text as a :Document, and each Whisper segment as a :TranscriptSegment node linked…

Knuckles-Team/audio-transcriber · 121 tokens

searxng-kg-ingestion

Persist SearXNG search results into the epistemic-graph knowledge graph via the searxng-mcp MCP server. Use when the agent must turn a web search into durable, semantically-searchable KG memory — each result becomes a :Document (plus :SearchQuery and :SearchEngine typed nodes with :resultOf / :fromEngine links) so…

Knuckles-Team/searxng-mcp · 126 tokens

nextcloud-ingest

Natively ingest Nextcloud files into the epistemic-graph knowledge graph via the nextcloud-agent MCP server — fetch a file over WebDAV and store its raw bytes as a content-addressed :Blob/:AssetOccurrence plus its extracted text (pdf/office/txt or image OCR) as a linked :Document. Use when the agent must make a…

Knuckles-Team/nextcloud-agent · 122 tokens

documentdb-collection-admin

Database, collection, and user administration on a DocumentDB (MongoDB-compatible, PostgreSQL-backed) server via the documentdb-mcp MCP server — list/create/drop/rename databases and collections, and manage database users and their roles. Use when the agent must provision or tear down namespaces, enumerate the…

Knuckles-Team/documentdb-mcp · 106 tokens

documentdb-document-crud

Document create/read/update/delete operations on a DocumentDB (MongoDB-compatible, PostgreSQL-backed) collection via the documentdb-mcp MCP server — insert one/many, find with filter/sort/skip/limit, update/replace one/many, delete, count, and the atomic find-and-modify variants. Use when the agent must read or mutate…

Knuckles-Team/documentdb-mcp · 126 tokens