Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Secure MCP server for WordPress content management
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"wordpress": {
"command": "uvx",
"args": [
"mcp-wordpress-crunchtools"
]
}
}
}Run this in your terminal
claude mcp add wordpress -- uvx mcp-wordpress-crunchtoolsPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"wordpress": {
"command": "uvx",
"args": [
"mcp-wordpress-crunchtools"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"wordpress": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-wordpress-crunchtools"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account crunchtools, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.4.1) reached the registry 8 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A secure MCP (Model Context Protocol) server for WordPress content management. Designed for developers publishing about their work.
This MCP server is designed to be:
quay.io/crunchtools/mcp-wordpress| Component | Name |
|---|---|
| GitHub repo | crunchtools/mcp-wordpress |
| Container | quay.io/crunchtools/mcp-wordpress |
| Python package (PyPI) | mcp-wordpress-crunchtools |
| CLI command | mcp-wordpress-crunchtools |
| Module import | mcp_wordpress_crunchtools |
uvx mcp-wordpress-crunchtools
pip install mcp-wordpress-crunchtools
mcp-wordpress-crunchtools
# Create a shared upload directory (required before first run)
mkdir -p ~/.local/share/mcp-uploads-downloads
podman run -v ~/.local/share/mcp-uploads-downloads:/tmp/mcp-uploads:z \ -e WORDPRESS_URL=https://example.com \ -e WORDPRESS_USERNAME=admin \ -e WORDPRESS_APP_PASSWORD='xxxx xxxx xxxx xxxx' \ quay.io/crunchtools/mcp-wordpress
SELinux note: Use
:z(lowercase, shared) instead of:Z(uppercase, private).
MCP servers run as long-lived stdio processes. With
:Z, files copied into the
directory after container start won't have the container's private MCS label and
will be invisible inside the container. The
:zflag sets a shared
container_file_tcontext that all containers and the host can read/write.
Tip: Use the same shared directory (
~/.local/share/mcp-uploads-downloads/)
across multiple MCP container servers (e.g., mcp-wordpress and mcp-gemini) so
generated files are immediately available for upload without copying.
git clone https://github.com/crunchtools/mcp-wordpress.git
cd mcp-wordpress uv sync --all-extras uv run mcp-wordpress-crunchtools
Set these environment variables:
| Variable | Description | Example |
|---|---|---|
WORDPRESS_URL | WordPress site URL | https://example.com |
WORDPRESS_USERNAME | WordPress username | admin |
WORDPRESS_APP_PASSWORD | Application password | xxxx xxxx xxxx xxxx |
MCP_UPLOAD_DIR | Upload directory inside container (optional) | /tmp/mcp-uploads (default) |
claude mcp add mcp-wordpress-crunchtools \
--env WORDPRESS_URL=https://example.com \ --env WORDPRESS_USERNAME=admin \ --env WORDPRESS_APP_PASSWORD="xxxx xxxx xxxx xxxx" \ -- uvx mcp-wordpress-crunchtools
pip install mcp-wordpress-crunchtools
claude mcp add mcp-wordpress-crunchtools \ --env WORDPRESS_URL=https://example.com \ --env WORDPRESS_USERNAME=admin \ --env WORDPRESS_APP_PASSWORD="xxxx xxxx xxxx xxxx" \ -- mcp-wordpress-crunchtools
# Create a shared upload directory (required before first run)
mkdir -p ~/.local/share/mcp-uploads-downloads
claude mcp add mcp-wordpress-crunchtools \ --env WORDPRESS_URL=https://example.com \ --env WORDPRESS_USERNAME=admin \ --env WORDPRESS_APP_PASSWORD="xxxx xxxx xxxx xxxx" \ -- podman run -i --rm \ -v ~/.local/share/mcp-uploads-downloads:/tmp/mcp-uploads:z \ -e WORDPRESS_URL \ -e WORDPRESS_USERNAME \ -e WORDPRESS_APP_PASSWORD \ quay.io/crunchtools/mcp-wordpress
| Tool | Description |
|---|---|
wordpress_get_site_info | Get site title, description, URL, timezone |
wordpress_test_connection | Verify API credentials work |
Reads return the source the editor saved (context=edit), never the rendered page, so what an agent reads is safe to write back. Changes go through the edit_* tools: the agent sends the exact text to replace and its replacement, the server applies it to the current source, and the post never round-trips through the agent. The post and page update and edit tools take an optional expected_version (the version get_post or get_page returned); when it is given, the write is refused if the item changed since. update_* refuses content that is rendered output. edit_draft edits only draft or pending posts, so a gateway can grant revision rights without the power to change published posts.
| Tool | Description |
|---|---|
wordpress_list_posts | List posts with filtering (status, category, search) |
wordpress_get_post | Get single post by ID with its saved source (block markup included) and version |
wordpress_search_posts | Search posts by keyword |
wordpress_create_post | Create new post (supports scheduling) |
wordpress_update_post | Update existing post; refuses rendered HTML, and a stale expected_version when given |
wordpress_edit_post | Replace text in a post's source without resending the post |
wordpress_edit_draft | Same as edit_post, for draft or pending posts only; refuses any other status |
wordpress_delete_post | Delete/trash a post |
wordpress_list_revisions | List revisions for a post |
wordpress_get_revision | Get specific revision content |
wordpress_list_categories | List available categories |
wordpress_list_tags | List available tags |
| Tool | Description |
|---|---|
wordpress_list_pages | List pages with filtering |
wordpress_get_page | Get single page by ID with its saved source and version |
wordpress_create_page | Create new page |
wordpress_update_page | Update existing page; refuses rendered HTML, and a stale expected_version when given |
wordpress_edit_page | Replace text in a page's source without resending the page |
wordpress_delete_page | Delete/trash a page |
wordpress_list_page_revisions | List page revisions |
| Tool | Description |
|---|---|
wordpress_list_media | List media items |
wordpress_get_media | Get media item details |
wordpress_upload_media | Upload file from local path |
wordpress_update_media | Update media metadata |
wordpress_delete_media | Delete media item |
wordpress_get_media_url | Get public URL for media |
| Tool | Description |
|---|---|
wordpress_list_comments | List comments with filtering |
wordpress_get_comment | Get single comment |
wordpress_create_comment | Add a comment to a post |
wordpress_update_comment | Update comment content/status |
wordpress_delete_comment | Delete a comment |
wordpress_moderate_comment | Approve, hold, spam, or trash |
Create a new WordPress post titled "My Technical Article" with the content below. Keep it as a draft.
Update post ID 123 to publish on December 25, 2024 at 10:00 AM.
Upload this image to WordPress and set the alt text to "Architecture diagram".
List all comments in "hold" status and approve the legitimate ones.
SecretStr, never logged# Install dev dependencies
uv sync --all-extras
uv run pytest
uv run ruff check src tests
uv run mypy src
uv run ruff format src tests
AGPL-3.0-or-later
Built by crunchtools.com