Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Secure MCP server for WordPress content management
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"wordpress": {
"command": "uvx",
"args": [
"mcp-wordpress-crunchtools"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add wordpress -- uvx mcp-wordpress-crunchtoolsวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"wordpress": {
"command": "uvx",
"args": [
"mcp-wordpress-crunchtools"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"wordpress": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-wordpress-crunchtools"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub crunchtools ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.4.1) เข้า registry 8 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, LickityClick
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า 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.
Create, edit and track LickityClick short links, campaigns and click stats from your AI assistant.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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