Skills/npm/mcp-wordpress

mcp-wordpress@4.2.6

VERIFIED· startup only

Publisher claims: "Comprehensive Model Context Protocol server for WordPress management with composition-based architecture, 73 tools, SEO toolkit, performance monitoring, intelligent caching, and production-ready authentication" Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry npm (MCP server)Publisher docdyhr · publishing for 503 daysInstalls 6,919Last detonated 4d ago
$claude mcp add mcp-wordpress -- npx -y mcp-wordpress
WatchReport an issue

Coverage

Startup only; authenticated tool behavior not tested.
Tested
server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
Not tested
the tool list (the server exited before answering) · what the tools do when called with real credentials

What this means for the label: Verified here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.

Before you give it your token

It will ask for
GOOGLE_CLIENT_SECRETGOOGLE_REFRESH_TOKENWORDPRESS_API_KEYWORDPRESS_APP_PASSWORDWORDPRESS_AUTH_METHODWORDPRESS_JWT_PASSWORDWORDPRESS_JWT_SECRETWORDPRESS_PASSWORDConfiguration, not credentials: BUILD_NUMBER, CACHE_DISABLED, CACHE_MAX_ITEMS, CACHE_MAX_MEMORY_MB, CACHE_TTL, CIRCLECI, COVERAGE_TOLERANCE, DISABLE_CACHE, GIT_COMMIT, GITHUB_ACTIONS, GOOGLE_CLIENT_ID, LEGACY_ERROR_LOGS, MCP_UPLOAD_BASE_DIR, MCP_WORDPRESS_ALLOW_MULTI_SITE, MCP_WORDPRESS_CONFIG, PERFORMANCE_TEST, RATE_LIMIT, RATE_LIMIT_ENABLED, RATE_LIMIT_REQUESTS, RATE_LIMIT_WINDOW, SECURITY_STRICT_MODE, SEO_BULK_OPERATION_SIZE, SEO_CACHE_ANALYSIS_TTL, SEO_CACHE_AUDIT_TTL, SEO_CACHE_KEYWORDS_TTL, SEO_CACHE_SCHEMA_TTL, SEO_DESCRIPTION_MAX_LENGTH, SEO_DESCRIPTION_MIN_LENGTH, SEO_ENABLED, SEO_MAX_CONCURRENT_ANALYSIS, SEO_MAX_KEYWORD_DENSITY, SEO_MIN_READABILITY_SCORE
Where it talks to
no vendor host named in the codeAlso mysite.com, shields.io — not the publisher's domain; check what for before connecting.
What the honeypot saw
no credential files read · no network
What we could not test
the tool list (the server exited before answering) · what the tools do when called with real credentials

Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names mysite.com, shields.io as well as its own vendor. The guard injects GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKEN, WORDPRESS_API_KEY, WORDPRESS_APP_PASSWORD, WORDPRESS_AUTH_METHOD, WORDPRESS_JWT_PASSWORD, WORDPRESS_JWT_SECRET, WORDPRESS_PASSWORD only into requests to the host you bind (and its subdomains) and refuses the rest.

$vet-skills run --net declared -- npx -y mcp-wordpress

Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; startup only; authenticated tool behavior not tested) on 2026-11-10 and scored it 82/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 48 s · 2 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
27sprocessdependency install exit 0
47sclaimedstartup only: exited (0) before answering · code: 'ERR_MODULE_NOT_FOUND', url: 'file:///tmp/ks-detonate-IwrOFZ/task/home/work/acme-api/.claude/skills/mcp-wordpress/dist/client/MockWordPressClient.js' } Node.js v22.23.4
47sprocessscript backend runs setup only
47sprocessno install scripts to re-run

Static findings

MEDIUM
npx invocation of non-well-known packagedist/index.js:167 · npx invocation of non-well-known package — may execute untrusted code// Docker, npm scripts) only. bin/mcp-wordpress.js is the entry point for npm/npxFix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
npx invocation of non-well-known packagepackage.json:89 · npx invocation of non-well-known package — may execute untrusted code"test:ci:safe": "NODE_OPTIONS=\"--max-old-space-size=8192\" npx vitest run --config vitest.ci.config.ts",Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
HIGH
Access to sensitive file pathsbin/setup.js:342 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files// an existing, more permissive .env is being overwritten, its old mode bits otherwiseFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
npx invocation of non-well-known packagepackage.json:54 · npx invocation of non-well-known package — may execute untrusted code"eval": "npm run build && npx mcp-eval evaluations/config/wordpress-tools-eval.yaml dist/index.js",Fix: Pin versions and sources; vendor anything fetched at install time.
AST06
MEDIUM
MCP server using network transport (SSE/HTTP)dist/index.js:120 · MCP server using network transport (SSE/HTTP) — data sent over networkconst mcpServer = new MCPWordPressServer();Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.
AST04
HIGH
Access to sensitive file pathsbin/setup.js:35 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files/** Serializes a plain key/value map into .env file content, one KEY='value' line per entry. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actiondist/tools/media.js:48 · File type combined with upload action — agent may exfiltrate local data files* console.log(tools.length); // 5 tools: list, get, upload, update, deleteFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
HIGH
Access to sensitive file pathsbin/setup.js:16 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files* Serializes a single .env value, single-quoting it so values containing spaces, `#`, doubleFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathsbin/setup.js:349 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesconsole.log("✅ Configuration saved to .env file (permissions set to owner-only where supported)");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathsbin/setup.js:94 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesthis.envPath = join(rootDir, ".env");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathsbin/status.js:15 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesthis.envPath = join(rootDir, ".env");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actionbin/status.js:160 · File type combined with upload action — agent may exfiltrate local data filesconsole.log(`✅ API access successful (found ${posts.length} posts)`);Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
File type combined with upload actiondist/tools/media.d.ts:46 · File type combined with upload action — agent may exfiltrate local data files* console.log(tools.length); // 5 tools: list, get, upload, update, deleteFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07

Cost to the agent

Instructions loaded
≈89 tok
1 file · 81 in bundle
Tool list per prompt
≈0 tok
0 tools · 0 per tool
Handshake
no reply
launch to tools/list, stdio
Undocumented tools
0
description under 20 chars · avg 0

Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.

Known vulnerabilities

No advisories in OSV for mcp-wordpress@4.2.6 as of 4d ago. This is the package itself, not its dependencies.