MCP server · Audited from source

claude-prompts-mcp

by minipuft/claude-prompts-mcpMIT licenceAudited 6 Oct 2026 · source 73e619018689

npm claude-prompts 5.0.0ssestdiostreamable-http★ 187
✕BLOCKGrade F · 47/100 · 6 Oct 2026 · 73e6190

Is it safe? No — BLOCK, grade F (47/100). It exposes 120 tools: 116 read, 3 write and 1 destructive. The audit recorded 52 findings (0 critical, 6 high, 9 medium, 27 low). Maintainer's description: MCP server for reusable prompt templates, multi-step workflow chains, and quality gates. Compose agentic workflows with an operator syntax; export as native skills to Claude Code, Cursor, OpenCode, and Gemini CLI.

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “claude-prompts-mcp (minipuft/claude-prompts-mcp)”. Retrieved 6 Oct 2026. https://modelsatlas.com/mcp/minipuft/claude-prompts-mcp

Why this is BLOCK. The audit found 0 critical and 6 high findings; the most severe is Code injection at server/scripts/generate-gate-index.js:34. Each finding is listed below with its file and line.

Why this page is still public. People search for this server by name. Hiding it would leave them with the README's word alone; here they see what the code does. We list it so you can decide, and we do not show connect commands for BLOCK servers.

Trust audit

Audit 0.4.1 · full source read 6 Oct 2026

Trust score47/100✕BLOCK F
0 critical6 high9 medium27 low10 info

52 findings, listed below with the file and line each was found on. Grade A needs a sandboxed behavioural run too; this audit read the source only.

What the source does

  • FilesystemDeclared4 observations
  • NetworkDeclared11 observations
  • ShellDeclared6 observations
  • DependenciesNot pinnedSome ranges float
  • SecretsFoundSee the findings

Findings (52)

Sorted by severity · the 25 most severe of 52 are listed

HIGHCode injectioncode.deserialize · server/scripts/generate-gate-index.js:34
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
const data = yaml.load(readFileSync(yamlPath, 'utf-8'));
Why
deserialises untrusted bytes into live objects
Fix
use json or yaml.safe_load
HIGHCode injectioncode.deserialize · server/scripts/lib/semantic-module-descriptors.ts:199
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
parsed = yaml.load(readFileSync(descriptorPath, 'utf8'));
Why
deserialises untrusted bytes into live objects
Fix
use json or yaml.safe_load
HIGHCode injectioncode.deserialize · server/scripts/validate-authoring-contracts.ts:96
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
const manifest = yaml.load(readFileSync(path.join(dir, 'tool.yaml'), 'utf8')) as {
Why
deserialises untrusted bytes into live objects
Fix
use json or yaml.safe_load
HIGHCode injectioncode.deserialize · server/scripts/validate-authoring-contracts.ts:327
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
const prompt = yaml.load(readFileSync(path.join(tool.promptDir, 'prompt.yaml'), 'utf8')) as {
Why
deserialises untrusted bytes into live objects
Fix
use json or yaml.safe_load
HIGHCode injectioncode.deserialize · server/scripts/validate-category-enumerations.js:108
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
const parsed = yaml.load(readFileSync(file, 'utf8'));
Why
deserialises untrusted bytes into live objects
Fix
use json or yaml.safe_load
HIGHCode injectioncode.eval_exec · scripts/hook-harness.mjs:167
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
/^sh -c 'echo "[^"]*" >> \S+; export CLAUDE_PLUGIN_DATA="[^"]*"; exec (.*)'$/;
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
MEDIUMInformation disclosuredisclose.log_secret · server/src/modules/chains/manager.ts:1367
F-12 Information disclosureCWE-209 · CWE-532Layer L1
this.logger.info(`[Handoff] Minted token for session ${sessionId} (${session.chainId})`);
Why
No further detail recorded for this rule.
Fix
—
MEDIUMNetwork egressnet.beacon_words · server/src/mcp/metadata/definitions/prompt-engine.ts:122
F-04 Network egressCWE-200 · CWE-319Layer L1
'    { "name": "red-team", "description": "Confirm exfil path" },  // Simple check',
Why
No further detail recorded for this rule.
Fix
—
MEDIUMNetwork egressnet.raw_ip · server/scripts/capture-tool-schemas.mjs:357
F-04 Network egressCWE-200 · CWE-319Layer L1
const baseUrl = `http://127.0.0.1:${port}`;
Why
No further detail recorded for this rule.
Fix
—
MEDIUMNetwork egressnet.raw_ip · server/scripts/verify-handoff.mjs:148
F-04 Network egressCWE-200 · CWE-319Layer L1
await waitHealth(`http://127.0.0.1:${PORT_A}`);
Why
No further detail recorded for this rule.
Fix
—
MEDIUMNetwork egressnet.raw_ip · server/scripts/verify-handoff.mjs:150
F-04 Network egressCWE-200 · CWE-319Layer L1
await waitHealth(`http://127.0.0.1:${PORT_B}`);
Why
No further detail recorded for this rule.
Fix
—
MEDIUMNetwork egressnet.raw_ip · server/scripts/verify-handoff.mjs:151
F-04 Network egressCWE-200 · CWE-319Layer L1
const a = client(`http://127.0.0.1:${PORT_A}`);
Why
No further detail recorded for this rule.
Fix
—
MEDIUMNetwork egressnet.raw_ip · server/scripts/verify-handoff.mjs:152
F-04 Network egressCWE-200 · CWE-319Layer L1
const b = client(`http://127.0.0.1:${PORT_B}`);
Why
No further detail recorded for this rule.
Fix
—
MEDIUMHard-coded secretssecret.generic · scripts/codex-server.test.mjs:21
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1

Excerpt withheld: it is a secret, and we never print one.

Why
No further detail recorded for this rule.
Fix
—
MEDIUMFilesystem / pathmcp.destructive_tools
F-05 Filesystem / pathCWE-22 · CWE-59Layer L3
sv-drop
Why
1 tool(s) can delete or overwrite
Fix
prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenanceinv.hidden_file · .ignore
F-13 Inventory / provenanceCWE-1104Layer L0
.ignore
Why
hidden member outside the usual dotfiles
Fix
review its purpose
LOWInventory / provenanceinv.hidden_file · .mcpbignore
F-13 Inventory / provenanceCWE-1104Layer L0
.mcpbignore
Why
hidden member outside the usual dotfiles
Fix
review its purpose
LOWInventory / provenanceinv.hidden_file · .node-version
F-13 Inventory / provenanceCWE-1104Layer L0
.node-version
Why
hidden member outside the usual dotfiles
Fix
review its purpose
LOWInventory / provenanceinv.hidden_file · .prettierignore
F-13 Inventory / provenanceCWE-1104Layer L0
.prettierignore
Why
hidden member outside the usual dotfiles
Fix
review its purpose
LOWInventory / provenanceinv.hidden_file · .prettierrc.json
F-13 Inventory / provenanceCWE-1104Layer L0
.prettierrc.json
Why
hidden member outside the usual dotfiles
Fix
review its purpose
LOWCode injectioncode.eval_exec · server/tests/integration/database/sqlite-wal-checkpoint.test.ts:97
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
const rawDb = (engine as unknown as { db: { exec(sql: string): void } }).db;
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
LOWCode injectioncode.eval_exec · server/tests/unit/scripts/pr-conventions-merge-settings.test.ts:76
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
return new Function(
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
LOWInsecure cryptocrypto.weak_hash · scripts/request-renovate-run.js:44
F-09 Insecure cryptoCWE-327 · CWE-338Layer L1
.createHash("sha1")
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · cli/tests/integration/category-directory-rule.test.ts:19
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const CLI = join(__dirname, '../../dist/cpm.js');
Why
No further detail recorded for this rule.
Fix
—
LOWFilesystem / pathfs.traversal · cli/tests/integration/cli.test.ts:7
F-05 Filesystem / pathCWE-22 · CWE-59Layer L1
const CLI = join(__dirname, '../../dist/cpm.js');
Why
No further detail recorded for this rule.
Fix
—

Tools it exposes

120 declared in source · 1 destructive

116 read3 write1 destructive

1 tool can delete or overwrite. An agent that can be talked into calling a tool can be talked into calling this one, so give it a token scoped to what you need.

ToolWhat it doesRisk
sv-dropblocking e2e gate on a step a replace remainder dropsdestructive
ReviewReview the whole runwrite
hr_chaine2e held-run chainwrite
taskWork to executewrite
AnalysisAnalytical promptsread
AnalyticalStructured styleread
AnalyzeUnderstand the problemread
AnalyzerAnalyzes contentread
AuthoringNo description in the sourceread
BADEXITInvalid exit argumentread
CAGEERFContext-Analysis-Goals frameworkread
Clobbershould not land eitherread
ConverterConverts dataread
DemoNo description in the sourceread
DesignPlan the solutionread
DocsEnsure documentationread
DraftDraft from prior workread
EscapedShould never be writtenread
FormatterFormats contentread
G1Dread
GeneralGeneral promptsread
ImplementBuild the solutionread
InlineNo description in the sourceread
MinimalA minimal gateread
NOPERMCommand not executable (check permissions)read
NOTFOUNDCommand not found (check PATH or spelling)read
Onefirstread
P1only phaseread
Plainsecond stepread
PlanLay out the stepsread
PreviewPreview testread
ProbeThe only phaseread
Promptdescread
ReACTTestread
ResearchResearch a topicread
SCAMPERCreative frameworkread
SIGABRTAbortread
SIGALRMAlarmread
SIGFPEFloating-point exceptionread
SIGHUPHangupread
SIGILLIllegal instructionread
SIGINTInterrupt (Ctrl+C)read
SIGKILLKilled (likely OOM)read
SIGPIPEBroken piperead
SIGQUITQuitread
SIGSEGVSegmentation faultread
SIGTERMTerminatedread
SIGXCPUCPU time limit exceededread
Sampletestread
Scriptedcarries a prompt-local toolread
Sharedregistry descriptionread
SummarizeSummarize contentread
SummarizerSummarize findingsread
SynthesizeSynthesize from a named outputread
TestTestread
ValidatorValidates inputread
WorkflowNo description in the sourceread
argtest argread
c1No description in the sourceread
c2No description in the sourceread
chain_prompta chain promptread
contentContentread
custom-checkVerify edge casesread
dataInputread
demoDemo promptread
draftdraft stepread
gc_chaine2e chain whose own prompt includes gp-y and whose category supplies gp-catread
gc_chain_owne2e chain whose own prompt includes gp-y and whose last step includes gp-xread
gc_neste2e chain whose second step is the chain gc_chainread
gj-blockblocking e2e gateread
gj_chaine2e chain with a blocking gate on every stepread
gp-catblocking e2e gate a category suppliesread
gp_be2e step whose prompt includes gp-xread
gp_chaine2e chain whose own prompt includes gp-yread
gp_ke2e step whose category supplies gp-catread
gr-reqblocking e2e gate a request namesread
inputOther inputread
json_promptJSON payloadsread
last_chaine2e chain with an advisory gate on its last stepread
multiAllow multi-line payloadsread
not_a_real_argumentxread
p288-blockblocking e2e gateread
p288_aa step with an authored system messageread
p288_ba step with no system messageread
p288_b_firsta chain whose gated first step has no system messageread
p288_chaina chain whose every step carries a blocking gateread
p87-plainblocking, no retry_config: opens the single prompt a sessionread
production-readyInclude tests and error handlingread
prompt_engineNo description in the sourceread
qk203QK-203read
red-teamConfirm exfil pathread
referencesEnsure references includedread
rq203dread
single_prompta single promptread
snippetyread
sv-blockblocking e2e gateread
sv_adread
sv_a148step carrying a chain-scoped inline definitionread
sv_a164step carrying a chain-scoped inline definitionread
sv_bige2e chain as long as the node capread
sv_chaine2e chain with a blocking gate on every stepread
sv_chain148chain whose steps carry a chain-scoped gateread
sv_chain164chain whose steps carry a chain-scoped gateread
sv_chain_othera second chain the claiming server runsread
sv_dpaire2e ungated chain of default-gated stepsread
sv_late271e2e chain gated on its last step onlyread
sv_oute2e step reading a named outputread
sv_p193step for P6.193read
sv_p193_chaintwo stepsread
sv_p672e2e chain of default-gated steps, the first blocking-gatedread
sv_paire2e ungated two-step chainread
target_thingwhat to act onread
teamTeam or org nameread
testtest promptread
test-coverageInclude unit testsread
textText to analyzeread
thingthe thingread
topicoptional, undefaultedread
unused_argdeclared, never usedread
work_kindkind of workread

Safer alternatives

Audit history

  1. ✕BLOCK F 47 / 100

    Score 44 -> 47 · 73e619018689

  2. ✕BLOCK F 44 / 100

    First audit · 5068214c526d

README badge

Badges show the current verdict, BLOCK included

ModelsAtlas: BLOCK FMODELSATLASBLOCK · F

A badge cannot be hidden by the maintainer while the verdict is BLOCK. Fix the findings, push, and the re-audit updates it.

Questions about claude-prompts-mcp

What is the claude-prompts-mcp MCP server?
MCP server for reusable prompt templates, multi-step workflow chains, and quality gates. Compose agentic workflows with an operator syntax; export as native skills to Claude Code, Cursor, OpenCode, and Gemini CLI.
What tools does claude-prompts-mcp expose?
120 in total: 116 read-only, 3 that write, and 1 that can delete or overwrite (sv-drop). Every one is listed on this page with its risk.
Is claude-prompts-mcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (47/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does claude-prompts-mcp need?
It reads AWS_SECRET_ACCESS_KEY, GITHUB_TOKEN and MY_SECRET_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does claude-prompts-mcp run?
It speaks sse, stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as claude-prompts at 5.0.0.
How current is this page?
The grade is for one exact copy of the source (73e619018689), read on 2026-10-06. The repository is watched and re-audited when it changes.
I already installed claude-prompts-mcp. What should I do?
Remove it from your client's MCP configuration, then rotate any API keys and tokens that were in your environment while it ran.
Can the verdict change?
Yes. The repository is watched and re-audited when its source changes. If the findings are removed the verdict updates, and the history on this page shows it.

Sources

  • minipuft/claude-prompts-mcp on GitHub — the source we read, its licence, stars and activityObserved · 6 Oct 2026
  • ModelsAtlas trust audit — BLOCK verdict for commit 73e619018689Observed · 6 Oct 2026

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.