npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@getnarro/mcp-server

v0.6.1

Published

MCP (Model Context Protocol) server for AI-assisted Narro presentation creation

Downloads

1,041

Readme

@getnarro/mcp-server

MCP (Model Context Protocol) server for AI-assisted Narro presentation creation

npm version npm downloads license CI

getnarro.com · Documentation · Ecosystem

The tools act on the filesystem: they scaffold projects, rewrite deck files, and run builds. Point the server at a directory you are willing to have written to.

Already using a coding agent with a terminal? You probably do not need this. Claude Code, Cursor's agent, and anything else with shell access can use the narro CLI directly — what they need is the documentation, and https://getnarro.com/llms.txt (or npm i -D @getnarro/docs) gives them that. This server is for assistants that cannot run commands themselves.

Setup

Claude Code

claude mcp add narro -- npx -y @getnarro/mcp-server

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "narro": {
      "command": "npx",
      "args": ["-y", "@getnarro/mcp-server"]
    }
  }
}

Cursor, Cline, Continue

The same object, under whatever key the client uses for MCP servers — for Cline that is cline.mcpServers in VS Code settings.

Then ask: "Create a Narro deck about our Q3 results and make sure it builds."

Tools

| Tool | What it does | | --- | --- | | create_presentation | Scaffolds a project, returns the path to the deck file | | list_slides | Structured slide list: index, id, title, layout, preview | | add_slide | Inserts a slide and writes the file | | update_slide | Rewrites one slide, preserving frontmatter it was not asked to change | | delete_slide | Removes a slide, returning its content so it can be restored | | apply_theme | Sets the deck's theme | | check_presentation | Validates layout, slot, and theme names without building — fast enough to run after each edit | | build_presentation | Builds, and returns the compiler output on failure | | export_presentation | PPTX, PDF, Google Slides, or a static site | | bundle_presentation | One self-contained HTML file | | import_presentation | From PowerPoint or Google Slides | | get_presentation_info | Documentation, and per-component prop types | | manage_comments | Slide comments |

Video

The same loop for @getnarro/video, whose timeline is derived from the narration rather than authored — so every step below is an edit to sentences, and an assistant can run all of it. Each tool is narro-video <command> in a project directory, and each returns the command's output and the files it wrote.

| Tool | Does | | --- | --- | | video_script | The brief a model answers with the first draft of the narration, then that answer as script.ts | | video_render | The masters, reusing every scene whose inputs have not changed | | video_check | Text that leaves the frame, every citation against its source, the script against the brand policy | | video_review | The director's pass: frozen holds, dead air, pace, legibility, safe zones, late entrances, an empty poster | | video_apply | A feedback export — the studio's, or a review — as a patch to script.ts | | video_brief | The brief for a translation or a channel cut | | video_cover | The brief for a cover image, and the image from the answer | | video_retention | A platform's retention export mapped onto the sentences that cost the most audience | | video_record | Scripted product footage, captured on virtual time; check says whether the product changed | | video_stale | Which cited sources have moved since the last render | | video_approve | The one document a person approves |

Terminal demos

@getnarro/terminal holds a terminal session as text. These five are narro-terminal <command> against a playbook file, and each returns the command's output.

| Tool | Does | | --- | --- | | terminal_render | The playbook as an animated GIF, or an SVG with svg | | terminal_still | One frame as a PNG — at a mark, a second or a frame | | terminal_check | What will be wrong before anything renders: unimplemented sequences, lines wider than the grid, a mask that matches nothing, timing that will read badly | | terminal_import | An asciicast, a VHS .tape or a ttyrec, read into a playbook | | terminal_export | A playbook written back out as an asciicast |

There is no terminal_record tool, deliberately. Every tool above draws text; record runs the playbook's commands in a real shell, and the CLI guards it by printing the commands and asking a person. A tool would route around exactly that gate, so an assistant authors, renders and checks a demo — and a person runs it. Nor is there a terminal_tape: narro-terminal tape opens a shell for a person to perform the demo in, and there is no person at the other end of a tool call. What it writes — a tape, a playbook and a capture — every tool above reads.

Recordings

@getnarro/replay records a web app as real DOM. Recording is a person's job — it drives a browser through a flow — so there is one tool, and it reads.

| Tool | Does | | --- | --- | | replay_info | A cast's viewport, duration, size and chapter names | | replay_review | What is wrong with the recording, and what to do about each one |

Call replay_info before writing <Replay chapter="…"> or <narro-replay start="…">. Those name a chapter as a string, and a name the cast does not have is not an error: seek falls back to the beginning, so the demo plays from the top and reads as a timing bug rather than a typo.

Call replay_review before publishing one. A cast is text that travels, and an email address or an API token typed into a form during the recording is in that text. The rest of the pass — a click that changed nothing, dead air, a scroll nobody could read, type that will be six pixels tall on a page — is about whether the demo is worth showing.

There is no replay_apply, deliberately. video_apply exists because rewriting narration in a video moves every cue after it, so the patch has to be computed. A recording has no such coupling: a finding asks either for a re-record, which is a person driving a browser, or for an edit to the .notes.md track — an ordinary markdown file an assistant edits directly and bakes in with narro annotate.

build_presentation is the one to remember. A generated deck that looks right can still be broken; without a pass/fail signal there is nothing to correct from.

Editing decks

add_slide, update_slide, and delete_slide edit markdown decks. Slides are addressed by id where one exists, because an index shifts the moment something is inserted above it — and a tool that silently edits the wrong slide is worse than one that fails.

React decks are read-only to these tools: list_slides works, but slides there are React components and the file should be edited directly.

Resources

The documentation is exposed as resources at narro://docs/{slug}, which a client can read and cache without spending a tool call. get_presentation_info serves the same pages for clients that do not support resources.

Both read @getnarro/docs, whose component reference is generated from the TypeScript source — so prop types describe the shipping API rather than a hand-maintained copy of it.

The Narro ecosystem

| Package | What it is | | --- | --- | | @getnarro/annotate | Feedback on a Narro recording — typed notes anchored to a moment, staleness against the cast they were written about, and a briefing a coding agent can act on | | @getnarro/atlas | A spatial canvas for Narro — a camera path as text, one pure camera function over it, and scene providers a deck, a video and a web page all render the same way | | @getnarro/cli | CLI tools for creating and managing Narro presentations | | @getnarro/core | The React runtime for Narro presentations — Presentation, Slide, navigation, transitions, and speaker notes | | @getnarro/docs | Narro's documentation as data — markdown pages, a generated component API reference, and llms.txt | | @getnarro/docspack | Narro's documentation as a docspack — version-locked chunks an agent installs once and searches offline | | @getnarro/markdown | Markdown & MDX authoring for Narro presentations | | @getnarro/marketplace | Themes, colour schemes, and templates for Narro presentations | | @getnarro/mcp-server | MCP (Model Context Protocol) server for AI-assisted Narro presentation creation ← you are here | | @getnarro/replay | Record a web app once and replay it as real DOM — a portable cast format, an embeddable player, and a self-contained HTML page | | @getnarro/shared-ui | Slide components for Narro presentations — headings, text, lists, code, media, charts, and layouts | | @getnarro/terminal | Terminal playbooks for Narro — a text format for a terminal session, a screen that is a pure function of the frame number, and a renderer that draws it on a grid | | @getnarro/video | Frame-deterministic video framework for Narro — a brand system, a React timeline runtime, narration-derived timing, a headless-Chrome renderer, and a scrub studio | | @getnarro/video-marketing | Marketing scene components for @getnarro/video — lower thirds, stat counters, feature grids, pull quotes, device frames, callouts and end cards, all brand-driven and frame-deterministic | | create-narro | Scaffold a new Narro presentation |

All fifteen ship from one repository and release together.

The npm package named narro is unrelated to this project. Narro's packages are all under the @getnarro/ scope; the CLI binary narro comes from @getnarro/cli.


Website · Documentation · llms.txt · GitHub · Issues · Changelog

Released under the MIT License.