MCP.Market

Story Mapper MCP server

by TomAtAP·io.github.TomAtAP/storymapper·v1.0.1·1 stars

User story map + kanban with a live browser UI; AI agents and humans plan the same backlog via MCP.

A88/100grade A
What users say
No reviews yet
Be the first
Safety scan
A88/100

full report

Adoption
Growing

1 stars37 downloads/wk

Reviews

Write one

Nobody has reviewed Story Mapper yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Story Mapper tools (70, 27 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • attachment_deletewrite action

    Delete a binary attachment by id. Returns {deleted: id|null}.

  • attachment_get

    Read a binary attachment. ALWAYS returns metadata + a downloadUrl (the REST

  • attachment_list

    List binary attachments (metadata only — no content) of a project. Pass ticketId

  • attachment_putwrite action

    Upload a binary attachment (base64) to a project. OMIT ticketId for a

  • bulk_change_status

    Change the status of multiple tickets in one revision. Each ticket

  • bulk_link_createwrite action

    Create the same-typed link from each ticket in sourceTicketIds[] to

  • bulk_ticket_updatewrite action

    Apply the same `patch` to multiple tickets in one revision. Per-item:

  • cancel_ticketwrite action

    Cancel a ticket — record a deliberate non-implementation (scope reduction), gate-free. Cancel ≠ Delete: cancel keeps the ticket VISIBLE with its full history + links (use ticket_delete only for mistakes). Cancelling an EPIC cascades: every contained non-terminal story is cancelled in one revision and the epic rolls up to cancelled (or done, if some stories had already shipped). Cancelled tickets d

  • change_ticket_status

    Change a ticket's status. Forward transitions crossing → ready check DoR; crossing → done check DoD. A transition INTO the done category ALSO fires the complete_ticket governance gates (SM-299: MISSING_TEST_DEFINITION for user-story/bug, STALE_LINKED_DEF, OPEN_MODIFIES) — there is no bypass around complete_ticket. Failures come back as isError with kind/missing. NOT applicable to epics — an epic's

  • complete_ticket
  • derive_test_definition

    SM-301: derive a test-definition from a ticket's ACCEPTANCE CRITERIA — one step per AC (step = the criterion, expectedResult = its observable outcome), linked back via a `tests`-link. The acceptance criteria ARE the test plan: set them first, then call this immediately as the north-star plan (refine steps during implementation). Draft by default; pass publish:true to also publish (the target must

  • export_project

    Export a whole project as the re-importable storymap-project JSON envelope

  • generate_product_doc

    Generate a current-state product description (Markdown) by FOLDING the tickets

  • get_config

    Read a project config section. section ∈ definitions | workflow |

  • get_drift_report

    Round-trip / drift report (SM-182, direction-A Phase 4) — keeps the PRD a living

  • get_revision

    Fetch a single revision (full snapshot at that point in time). Returns 404-error if the revision does not exist.

  • get_trace_coverage

    Direction-A coverage report (mirror of generate_product_doc). For each requirement,

  • import_tickets

    Bulk-import tickets from CSV (header row = field keys: key, type, title, description,

  • ingest_slice_candidates

    Read a project attachment (a source PRD), convert it to Markdown server-side

  • link_createwrite action

    Add a typed link from one ticket to another. linkTypeId references a project.linkTypes entry (predecessor-of / blocks / follows-on / contains / relates-to by default — get_link_types for the catalogue). Throws LINK_SELF for self-links, LINK_TARGET_MISSING for unknown target, LINK_DUPLICATE for duplicate (linkTypeId, targetTicketId), LINK_CYCLE if the new edge would close a cycle in a cycle-checked

  • link_deletewrite action

    Remove a single link from a ticket by linkId. No-op if the linkId is not on the source ticket.

  • list_links_for_ticket

    List links involving a ticket. direction: 'forward' = links this ticket owns; 'backward' = links from OTHER tickets pointing here (resolved via project.linkTypes.inverseLabel); 'both' (default) = combined. Each entry has linkTypeId, label (project-resolved or the link's stored label), direction, target { id, ticketKey, title, type }. Use this to power a Ticket-Detail-Modal's Links-section.

  • list_process_steps

    List all non-deleted process steps of a project, sorted by sortOrder.

  • list_projects

    List all (non-deleted) project IDs

  • list_releases

    List all non-deleted releases of a project. Returns an array of release objects sorted by sortOrder.

  • list_revisions

    List the revision history of a project (reverse-chrono). Returns up to `limit` entries (default 100); pass `before` (a revision id) to page older entries.

  • list_tickets

    List non-deleted tickets of a project. Filters (all optional, AND-combined):

  • mark_ready

    Shortcut for change_ticket_status → 'ready'. Fails with kind=DoR + missing[] if the DoR is not satisfied. NOT applicable to epics (kind=EPIC_STATUS_DERIVED) — epic status is derived from its stories. Compact response by default; pass verbose:true for the full ticket.

  • next_actionable

    What can I start NOW? Returns the work-item tickets that are ready to pull:

  • process_step_createwrite action

    Create a new process step (a column on the story-map backbone).

  • process_step_deletewrite action

    Soft-delete a process step.

  • process_step_updatewrite action

    Patch fields on a process step (name, description, epicId, sortOrder).

  • project_createwrite action

    Create a new project. Optional fields: definitions (DoR/DoD), workflow (statuses + transitions + per-type overrides), entityTypeConfig (per-type modal config), ticketTypes (allowed type names).

  • project_deletewrite action

    Soft-delete a project (filtered out of list_projects)

  • project_get

    Load the full snapshot of a project

  • project_updatewrite action

    Patch project header fields (name, description, ticketPrefix, definitions)

  • publish_test_definitionwrite action

    Promote a test-definition from lifecycle='draft' to 'published'. Runs the SM-93 governance publish-gates: ≥1 step, ≥1 outgoing 'tests'-link, every step has expectedResult, target ticket has reached 'ready'+. On gate failure returns isError with kind/errors/message{title,reason,suggestion,skillRef}.

  • query_tickets

    Targeted ticket search (SM-187) with a JQL-angelehnter query language — the precise

  • release_createwrite action

    Create a new release on the project. Returns the created release plus revision/savedAt.

  • release_deletewrite action

    Soft-delete a release (recoverable via history). Refuses the LAST remaining release (422 kind=LAST_RELEASE) — a project always keeps ≥1 release.

  • release_updatewrite action

    Patch fields on a release (name, description, status, startDate, endDate, sortOrder).

  • reopen_test_definition

    Revert a test-definition from lifecycle='published' to 'draft' so its spec can be edited again. Blocks with kind=ACTIVE_EXECUTION if any associated test-execution is currently in 'in-progress' — finish or cancel the run first.

  • reorder

    Reorder entities by full id list. entity ∈ 'tickets' | 'releases' |

  • request_switch_project

    Ask every connected browser to switch to the named project. The browser shows a confirm dialog; the tool waits up to wait_seconds (default 30) for the user's verdict and returns { requested, requestId, response:{accepted}, timedOut? }. Pass wait_seconds:0 for fire-and-forget. Use this AFTER preparing a project so the user lands on the right place and can verify your work.

  • requirement_createwrite action

    Create a `requirement` SpecObject — one atomic, sliced PRD statement. Provide its

  • requirement_list

    List requirement SpecObjects of a project, in document order (by sectionPath).

  • resolve_definitions_for_ticket

    Return the EFFECTIVE DoR/DoD checklists for a ticket — i.e. the per-ticket frozen items with their current checked-state. Use this to see what's left to do for mark_ready / complete_ticket.

  • restore_revision

    Restore a project to a previous revision. The restore creates a NEW revision with op='project_restore', so the restore itself is undoable.

  • set_checklist_item

    Check or uncheck a single DoR/DoD item on a ticket. gate ∈ 'dor'|'dod'

  • set_config

    Replace a project config section (full replace, no merge). section ∈

  • spec_module_createwrite action

    Create a spec module — the container for the requirements sliced from ONE source

  • split_process_step

    Split a process step (SM-247): create a NEW step directly after it and move the chosen epics (with their contained stories) into the new step. Loose stories stay with the original. epicIds must reference epics currently in this step (else 422 with `missing`). Empty/omitted epicIds inserts an empty step after the original. One revision.

  • test_def_prereq_add

    Append a prerequisite to a test-definition. patch = { label: string, required?: boolean }. Default required=true.

  • test_def_prereq_check

    Mark a prerequisite as checked.

  • test_def_prereq_removewrite action

    Remove a prerequisite from a test-definition.

  • test_def_prereq_uncheck

    Mark a prerequisite as unchecked.

  • test_def_prereq_updatewrite action

    Update a prerequisite. patch = { label?, required? }.

  • test_def_step_add

    Append a step to a test-definition. patch = { step: string, data?: string, expectedResult: string, position?: number }. Returns the created step.

  • test_def_step_removewrite action

    Remove a step from a test-definition.

  • test_def_step_reorder

    Reorder steps on a test-definition by full ID list. orderedStepIds is the new sequence; missing steps are appended at the end (defensive). Pass tolerated JSON-string for Claude Code MCP bridge.

  • test_def_step_updatewrite action

    Update a step on a test-definition. patch = { step?, data?, expectedResult? } (subset).

  • test_exec_history

    List test-execution tickets for a given test-definition, sorted by runAt descending. Use the resulting executions[].id to recordTestExecStep / setTestExecOutcome.

  • test_exec_record

    Record per-step result on a test-execution. stepId may be either the definition-step id (clone source) or the execution-step's own id. patch = { actualResult?, status?, note? } where status ∈ pending|passed|failed|blocked|skipped.

  • test_exec_set_outcome

    Set the manual outcome override on a test-execution. outcome ∈ pending|passed|failed|blocked|skipped or 'auto' to reset (let deriveOutcome take over). The 'auto' form clears outcomeOverride.

  • test_exec_start

    Start a test-execution run. Creates a new test-execution ticket, clones the definition's steps (snapshot semantics — later definition edits don't bleed back), opens an 'executes' link to the definition, sets runAt=now and runBy=actor (or opts.runBy). opts = { env?, runBy? }. Returns the new execution ticket. SM-94: definition must be in lifecycle='published' — fails with kind=DEFINITION_DRAFT othe

  • ticket_createwrite action

    Create a ticket. Pass acceptanceCriteria as [{text}] to set them at creation (no more create-then-update). The DoR/DoD checklists are resolved from the project's definitions for this ticket type and FROZEN onto the ticket. Compact response by default ({revision, savedAt, ticket:{id, ticketKey, type, status, title, position}}); pass verbose:true for the full ticket.

  • ticket_deletewrite action

    Soft-delete a ticket

  • ticket_get

    Get a ticket by id (includes frozen DoR/DoD checklists). Default

  • ticket_updatewrite action

    Patch a ticket (title, description, type, position, labels, acceptanceCriteria).

  • update_test_definition_metadatawrite action

    Edit cosmetic metadata on a test-definition (title, description, labels). Deliberately small surface — does NOT touch steps, prerequisites, or lifecycle. Safe to call on both draft and published definitions: the spec stays frozen, only the human-facing labelling changes.

Public scan report

scanner v0.1.9 · 2026-09-25 · same rubric, same numbers if you re-run it

no findings
  • Code scan49 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 67 days ago12/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 88/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Story Mapper compares

Against every graded Scraping and browsing MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
88/100
higher than 70% of 866 Scraping and browsing servers
Tools
70
the typical Scraping and browsing server has 6
Tools that change things
39%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
1
more than 50% of 583 Scraping and browsing servers
Downloads a week
37
more than 18% of 309 Scraping and browsing servers with a package

What its tools let an agent do: 38 read · 2 create · 28 change · 1 delete · 1 send or post

Install Story Mapper in Claude Code, Cursor or VS Code

Runs npx -y storymapper on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add storymapper -- npx -y storymapper
Add to Cursor

What the publisher says

From the Story Mapper repository's README, as published. We do not edit it. Read it on GitHub

Storymapper

A User Story Map + Kanban board that a product owner and an AI coding agent plan together — the same backlog, live, from a browser and from an MCP client — with the quality method built in.

Storymapper is one Node.js package that ships three things:

stories in the cells), a Kanban board, plus table, dependency-graph, requirements and settings views. Plain HTML + modular JavaScript, no build step.

  1. A browser UI — a User Story Map (process steps × releases, with epics and

per-project revision history, and pushes changes to connected browsers within ~100 ms.

  1. An HTTP + WebSocket server — persists every project in SQLite with a full

for Claude Desktop / Claude Code via MCP and for scripts or other harnesses as one-shot commands. Anything the agent does appears live in the product owner's browser with a highlight-and-move animation; anything edited by hand flows back to the agent on its next read.

  1. An MCP server (stdio) plus a pass-through CLI — the same ~70 tools,

The result is a shared planning surface: the agent isn't writing to a database the human can't see — the two work the same board in real time.

Why it exists

Planning AI-assisted development breaks down when the plan lives in one place and the work in another. Storymapper makes the plan a live, bidirectional artifact:

it out on the board — epics, stories, releases, dependencies — and you watch it appear and rearrange it by hand.

  • You bring the product idea and a rough shape of what to build; the agent lays

read and continues from the current state of the board.

  • You reprioritize, split, annotate — and the agent picks it up on its next
  • Every change is a revision you can inspect and restore.

Quality steering at the product level

When an agent does the building, the human contribution moves up a level: you describe the product, review its behavior, and steer the work through the process. That process is Storymapper's real substance — a complete quality method the engine enforces as tool-level rules: a ticket is specified before it is built (Definition of Ready) and proven before it counts as done (Definition of Done plus a published test plan with recorded runs), and your requirements stay traceably linked to the stories that implement them and the tests that verify them. An agent that tries to skip a step gets a structured error naming exactly what is missing — and fixes it. This puts professional-grade quality assurance into the hands of everyone who thinks in products — founders, domain experts, product owners: the method speaks the language of the product and lets you hold an agent's work to a standard you can verify. The workflow itself (statuses, transitions, gates, board columns) is configurable per project, and the companion skill teaches the agent the discipline, not just the tools.

Design principles

classical modules; the server runs the same files under Node via a UMD wrapper. Clone and run.

  • Zero build. No bundler, no transpiler, no TypeScript. The browser loads

operations, the workflow/governance engines, graph algorithms) lives in shared/core.js and is symlinked into the frontend and re-exported by the server — the same code runs in the browser, the HTTP server and the MCP server, with no mirror step to drift.

  • One source of truth for pure logic. All domain logic (normalization,

readable, dependency-light.

  • Raw HTTP, no framework. http.createServer + manual routing. Small,

per-project mutex, and count-bounded revision retention.

  • Synchronous SQLite via better-sqlite3, atomic per-save transactions, a

the security model below.

  • Single-user, local-first. One human plus their agent on one machine. See

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Story Mapper: common questions

Is Story Mapper MCP server safe?
Yes, by our scan: it is graded A (88/100). Read the Story Mapper safety report
How do I install Story Mapper?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Story Mapper need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Story Mapper maintained?
The last commit was 107 days ago (2026-07-20). The latest release is v1.0.1.
What can I use instead of Story Mapper?
Servers from other publishers that do the same job: Agent Browser MCP server, Next AI Draw.io MCP server and Vessel Browser MCP server.
How does Story Mapper compare with other Scraping and browsing MCP servers?
safety score 88/100 (higher than 70% of 866 Scraping and browsing servers); tools 70 (the typical Scraping and browsing server has 6); tools that change things 39% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Story Mapper

Same job from other publishers: the closest match first, then the best rated.

  • Agent Browser
    Self-hosted Chrome for AI agents, with a live noVNC view a human can take over.
    B
  • Next AI Draw.io
    draw.io diagrams your AI agent draws on a live browser canvas that you can also edit by hand
    A
  • Vessel Browser
    AI-native browser runtime for autonomous agents with human-in-the-loop supervision
    A
  • Auth Your Agent
    Act for a person on websites: sandboxed browser, phone approvals, saved logins, scheduled plans.
    A
  • three.ws Herald
    Tell your human in person: a 3D character walks onto their open browser tab and says it out loud.
    B