← Browse

@southleft/story-ui

A

MCP server package @tpitre/story-ui

mcp_servermcp

Install

agr install @southleft/story-ui --target claude

This artifact does not publish files for Claude.

Document

{ "name": "@tpitre/story-ui", "version": "4.17.0", "description": "AI-powered Storybook story generator with dynamic component discovery", "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" }, "./panel": { "import": "./dist/templates/StoryUI/index.js", "types": "./dist/templates/StoryUI/index.d.ts" } }, "bin": { "story-ui": "dist/cli/index.js" }, "files": [ "dist", "templates/StoryUI", ".env.sample", "README.md", "LICENSE" ], "scripts": { "build": "tsc && npm run copy-templates", "copy-templates": "node -e "const fs=require('fs');const path=require('path');const src='templates/StoryUI';const dst='dist/templates/StoryUI';['.css','.mdx','.tsx','.ts'].forEach(ext=>{fs.readdirSync(src).filter(f=>f.endsWith(ext)).forEach(f=>fs.copyFileSync(path.join(src,f),path.join(dst,f)))});const vsrc=path.join(src,'voice');const vdst=path.join(dst,'voice');if(fs.existsSync(vsrc)){fs.mkdirSync(vdst,{recursive:true});fs.readdirSync(vsrc).filter(f=>f.endsWith('.tsx')||f.endsWith('.ts')).forEach(f=>fs.copyFileSync(path.join(vsrc,f),path.join(vdst,f)));const csrc=path.join(vsrc,'canvas');const cdst=path.join(vdst,'canvas');if(fs.existsSync(csrc)){fs.mkdirSync(cdst,{recursive:true});fs.readdirSync(csrc).filter(f=>f.endsWith('.tsx')||f.endsWith('.ts')).forEach(f=>fs.copyFileSync(path.join(csrc,f),path.join(cdst,f)))}}console.log('Template files copied to dist/')"", "start": "npm run build && node dist/mcp-server/index.js", "mcp": "npm run build && node dist/mcp-server/mcp-stdio-server.js", "dev": "tsc --watch", "prepublishOnly": "npm run build", "test": "vitest run", "test:watch": "vitest", "release": "semantic-release", "release:dry-run": "semantic-release --dry-run", "commit": "cz", "prepare": "test -d .git && husky || true; npm run build", "story-ui": "story-ui start --port 4001" }, "keywords": [ "storybook", "ai", "react", "components", "ui", "design-system", "claude", "mcp", "story-generation", "documentation", "real-time", "component-library", "iteration", "version-history" ], "author": "Story UI Contributors", "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/southleft/story-ui.git" }, "bugs": { "url": "https://github.com/southleft/story-ui/issues" }, "homepage": "https://github.com/southleft/story-ui#readme", "engines": { "node": ">=16.0.0" }, "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" }, "dependencies": { "@modelcontextprotocol/sdk": "^1.23.0", "chalk": "^5.3.0", "commander": "^11.0.0", "cors": "^2.8.5", "dotenv": "^16.3.1", "express": "^4.18.2", "glob": "^11.0.3", "http-proxy-middleware": "^3.0.0", "inquirer": "^9.2.0", "node-fetch": "^2.6.7", "react-live": "^4.1.8", "typescript": "^5.8.3" }, "devDependencies": { "@commitlint/cli": "^19.6.1", "@commitlint/config-conventional": "^19.6.0", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.0", "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^10.3.5", "@semantic-release/npm": "^12.0.1", "@semantic-release/release-notes-generator": "^14.0.1", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/glob": "^8.1.0", "@types/inquirer": "^9.0.0", "@types/node": "^20.4.2", "@types/node-fetch": "^2.6.12", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "commitizen": "^4.3.1", "concurrently": "^8.2.0", "cz-conventional-changelog": "^3.3.0", "husky": "^9.1.7", "semantic-release": "^24.2.0", "ts-node": "^10.9.2", "vitest": "^4.1.0" }, "peerDependencies": { "@storybook/react": ">=6.0.0", "react": ">=16.8.0" }, "peerDependenciesMeta": { "react": { "optional": false }, "@storybook/react": { "optional": false } }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } }, "mcp": { "name": "story-ui", "description": "AI-powered Storybook story generator with dynamic component discovery", "command": "node", "args": [ "dist/mcp-server/mcp-stdio-server.js" ], "env": { "NODE_ENV": "production" } } }

Trustgrade A

  • passBody integrity

    Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.

  • warnType matchbest-effort: server code not analyzed

    Whether the artifact is really the kind of thing its metadata claims it is.

  • passFreshness

    How long since the source repository was last pushed to.

  • passPrompt injection

    Scans the artifact's own text for instructions aimed at your agent rather than at you.

  • passLicense

    Whether the source repository declares an SPDX license permissive enough to redistribute.

How the grade is calculated

Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:

  • Aevery check passed
  • Bone warning
  • Ctwo warnings
  • Dprompt injection or body integrity failed, or three warnings
  • Fone of those failed, and something else is wrong

These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.

Versions

  • git-e1b78e99a7842026-08-06