MCP server · Audited from source
claude-prompts-mcp
by minipuft/claude-prompts-mcpMIT licenceAudited 6 Oct 2026 · source 73e619018689
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.
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
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
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
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
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
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
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
/^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
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
' { "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
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
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
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
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
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
Excerpt withheld: it is a secret, and we never print one.
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMFilesystem / pathmcp.destructive_tools
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
LOWCode injectioncode.eval_exec · server/tests/integration/database/sqlite-wal-checkpoint.test.ts:97
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
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
.createHash("sha1")- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · cli/tests/integration/category-directory-rule.test.ts:19
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
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
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.
| Tool | What it does | Risk |
|---|---|---|
sv-drop | blocking e2e gate on a step a replace remainder drops | destructive |
Review | Review the whole run | write |
hr_chain | e2e held-run chain | write |
task | Work to execute | write |
Analysis | Analytical prompts | read |
Analytical | Structured style | read |
Analyze | Understand the problem | read |
Analyzer | Analyzes content | read |
Authoring | No description in the source | read |
BADEXIT | Invalid exit argument | read |
CAGEERF | Context-Analysis-Goals framework | read |
Clobber | should not land either | read |
Converter | Converts data | read |
Demo | No description in the source | read |
Design | Plan the solution | read |
Docs | Ensure documentation | read |
Draft | Draft from prior work | read |
Escaped | Should never be written | read |
Formatter | Formats content | read |
G1 | D | read |
General | General prompts | read |
Implement | Build the solution | read |
Inline | No description in the source | read |
Minimal | A minimal gate | read |
NOPERM | Command not executable (check permissions) | read |
NOTFOUND | Command not found (check PATH or spelling) | read |
One | first | read |
P1 | only phase | read |
Plain | second step | read |
Plan | Lay out the steps | read |
Preview | Preview test | read |
Probe | The only phase | read |
Prompt | desc | read |
ReACT | Test | read |
Research | Research a topic | read |
SCAMPER | Creative framework | read |
SIGABRT | Abort | read |
SIGALRM | Alarm | read |
SIGFPE | Floating-point exception | read |
SIGHUP | Hangup | read |
SIGILL | Illegal instruction | read |
SIGINT | Interrupt (Ctrl+C) | read |
SIGKILL | Killed (likely OOM) | read |
SIGPIPE | Broken pipe | read |
SIGQUIT | Quit | read |
SIGSEGV | Segmentation fault | read |
SIGTERM | Terminated | read |
SIGXCPU | CPU time limit exceeded | read |
Sample | test | read |
Scripted | carries a prompt-local tool | read |
Shared | registry description | read |
Summarize | Summarize content | read |
Summarizer | Summarize findings | read |
Synthesize | Synthesize from a named output | read |
Test | Test | read |
Validator | Validates input | read |
Workflow | No description in the source | read |
arg | test arg | read |
c1 | No description in the source | read |
c2 | No description in the source | read |
chain_prompt | a chain prompt | read |
content | Content | read |
custom-check | Verify edge cases | read |
data | Input | read |
demo | Demo prompt | read |
draft | draft step | read |
gc_chain | e2e chain whose own prompt includes gp-y and whose category supplies gp-cat | read |
gc_chain_own | e2e chain whose own prompt includes gp-y and whose last step includes gp-x | read |
gc_nest | e2e chain whose second step is the chain gc_chain | read |
gj-block | blocking e2e gate | read |
gj_chain | e2e chain with a blocking gate on every step | read |
gp-cat | blocking e2e gate a category supplies | read |
gp_b | e2e step whose prompt includes gp-x | read |
gp_chain | e2e chain whose own prompt includes gp-y | read |
gp_k | e2e step whose category supplies gp-cat | read |
gr-req | blocking e2e gate a request names | read |
input | Other input | read |
json_prompt | JSON payloads | read |
last_chain | e2e chain with an advisory gate on its last step | read |
multi | Allow multi-line payloads | read |
not_a_real_argument | x | read |
p288-block | blocking e2e gate | read |
p288_a | a step with an authored system message | read |
p288_b | a step with no system message | read |
p288_b_first | a chain whose gated first step has no system message | read |
p288_chain | a chain whose every step carries a blocking gate | read |
p87-plain | blocking, no retry_config: opens the single prompt a session | read |
production-ready | Include tests and error handling | read |
prompt_engine | No description in the source | read |
qk203 | QK-203 | read |
red-team | Confirm exfil path | read |
references | Ensure references included | read |
rq203 | d | read |
single_prompt | a single prompt | read |
snippet | y | read |
sv-block | blocking e2e gate | read |
sv_a | d | read |
sv_a148 | step carrying a chain-scoped inline definition | read |
sv_a164 | step carrying a chain-scoped inline definition | read |
sv_big | e2e chain as long as the node cap | read |
sv_chain | e2e chain with a blocking gate on every step | read |
sv_chain148 | chain whose steps carry a chain-scoped gate | read |
sv_chain164 | chain whose steps carry a chain-scoped gate | read |
sv_chain_other | a second chain the claiming server runs | read |
sv_dpair | e2e ungated chain of default-gated steps | read |
sv_late271 | e2e chain gated on its last step only | read |
sv_out | e2e step reading a named output | read |
sv_p193 | step for P6.193 | read |
sv_p193_chain | two steps | read |
sv_p672 | e2e chain of default-gated steps, the first blocking-gated | read |
sv_pair | e2e ungated two-step chain | read |
target_thing | what to act on | read |
team | Team or org name | read |
test | test prompt | read |
test-coverage | Include unit tests | read |
text | Text to analyze | read |
thing | the thing | read |
topic | optional, undefaulted | read |
unused_arg | declared, never used | read |
work_kind | kind of work | read |
Safer alternatives
kdan-pdf/kdan-pdf-mcp
Connect Claude and ChatGPT to KDAN PDF — upload, edit, compress, protect, redact, and compare PDFs in chat.
graphlit/graphlit-mcp-server
Model Context Protocol (MCP) Server for Graphlit Platform
langchain-ai/langchainjs-mcp-adapters
** THIS REPO HAS MOVED TO https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-mcp-adapters ** Adapters for integrating Model Context Protocol (MCP) tools with LangChain.js applications, supporting both stdio and SSE transports.
Audit history
- ✕BLOCK F 47 / 100
Score 44 -> 47 ·
73e619018689 - ✕BLOCK F 44 / 100
First audit ·
5068214c526d
README badge
Badges show the current verdict, BLOCK included
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?
What tools does claude-prompts-mcp expose?
Is claude-prompts-mcp safe to connect to an agent?
What credentials does claude-prompts-mcp need?
How does claude-prompts-mcp run?
How current is this page?
I already installed claude-prompts-mcp. What should I do?
Can the verdict change?
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.
- What is the claude-prompts-mcp MCP server?
- What tools does claude-prompts-mcp expose?
- Is claude-prompts-mcp safe to connect to an agent?