list_posts
List Posts
List all posts for your Notipo account. Returns title, status, WordPress URL, category, and timestamps.
Takes no parameters.

io.github.kfurasPublished by GitHub account kfurasv1.2.5Updated Oct 25, 2026
Publish to self-hosted WordPress from AI agents: markdown, images, SEO, and Notion sync.
Notipo is a hosted MCP server that lets an AI assistant create, update, publish and delete blog posts on a self-hosted WordPress site, optionally synced from a
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.kfuras%2Fnotipo/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"notipo": {
"type": "http",
"url": "https://app.notipo.com/api/mcp",
"headers": {
"X-API-Key": "<YOUR_API_KEY>"
}
}
}
}Open-source WordPress publishing for AI agents — MCP server, REST API, and CLI. Or sync from Notion.
Point your agent (Claude, Cursor, ChatGPT, n8n, any HTTP client) at Notipo and it publishes to your self-hosted WordPress — no plugin required. Notipo handles the full pipeline: markdown → Gutenberg conversion, image hosting in your WordPress media library, AI- or Unsplash-generated featured images, and Rank Math / Yoast / SEOPress / AIOSEO metadata applied automatically on publish.
[License: AGPL-3.0] [npm: notipo CLI] [Hosted SaaS at notipo.com] [MCP Server]
Connect Notion, change a page status to Post to Wordpress or Publish, and Notipo handles the rest — markdown extraction, image caching to WP media library, featured image generation, SEO metadata via Rank Math / Yoast / SEOPress / AIOSEO.
Notipo exposes a Model Context Protocol (MCP) server with 13 tools for AI agents, plus a REST API and a CLI. Claude Desktop, Cursor, Windsurf, Claude Code, ChatGPT — any MCP-compatible agent can publish posts end-to-end.
See notipo.com/ai-agents for the full AI-agent integration story.
The hosted version at notipo.com is the supported, batteries-included product — managed infrastructure, automatic upgrades, instant Notion webhook delivery, and a free tier with 5 posts/month. Pro is $19/month for unlimited posts plus AI featured images.
This repository is the same code that runs the hosted product. You can self-host it under the AGPL-3.0 license — see DEVELOPMENT.md for the local dev story and docker-compose.yml for production deployment with Traefik + Let's Encrypt.
Self-hosting is unsupported — no help beyond what's in this repo, no upgrade path. If you need any of those, the hosted product is faster, cheaper, and already running.
Monorepo (Turborepo + npm workspaces):
You'll need: Docker, Docker Compose, a domain pointed at your server, a Notion integration, and a WordPress site with Application Passwords enabled (WP 5.6+).
The compose stack pulls multi-arch images (linux/amd64 + linux/arm64) from
ghcr.io/kfuras/notipo-api and ghcr.io/kfuras/notipo-web, so it works on both
x86 servers and Apple Silicon / ARM hardware.
The compose stack starts Traefik + the API + admin UI + Postgres, with Let's Encrypt TLS on first run. See docker-compose.yml for details.
For local development without Docker:
See DEVELOPMENT.md for the full development guide.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) — see LICENSE.
In plain English:
notipo CLI package is published to npm under MIT (it's just a thin API client wrapper).notipo-seo-meta-writer WordPress plugin is published under MIT (compatible with WordPress's GPL ecosystem).If you want to use Notipo's code in a proprietary hosted product without AGPL obligations, open an issue — commercial licensing may be available.
PRs welcome. See CONTRIBUTING.md for guidelines and CODE_OF_CONDUCT.md for community standards.
For security disclosures, see SECURITY.md — please don't open public issues for vulnerabilities.
Source: README.md at commit 5ba2be1
List Posts
List all posts for your Notipo account. Returns title, status, WordPress URL, category, and timestamps.
Takes no parameters.
Get Post
Get details of a specific post by ID, including status, WordPress URL, and category.
postIdrequiredCreate Post
Create a new blog post. Creates a Notion page and triggers sync to WordPress. The body should be markdown. Set publish=true to publish immediately, or leave false to create a draft.
bodyslugtagstitlerequiredpublishcategoryseoKeywordseoDescriptionDirect Publish
Publish a blog post directly to WordPress without Notion. Handles image uploads, Gutenberg conversion, featured image generation, and SEO metadata. Body must be markdown. Set publish=true to go live, false for draft. Use this instead of create_post when you don't need Notion.
bodyrequiredslugtagstitlerequiredpublishcategoryimageTitleseoKeywordseoDescriptionUpdate Post
Update an existing post's content or properties in Notion, then re-sync to WordPress. Only provided fields are updated.
bodyslugtagstitlepostIdrequiredpublishcategoryseoKeywordseoDescriptionPublish Post
Publish a draft post to WordPress (make it live).
postIdrequiredDelete Post
Delete a post from Notipo, WordPress, and reset the Notion page status. This cannot be undone.
postIdrequiredList Categories
List all WordPress categories synced to Notipo. Use these names when creating posts.
Takes no parameters.
List Tags
List all WordPress tags synced to Notipo. Use these names when creating posts.
Takes no parameters.
Get Job Status
Check the status of a sync or publish job. Returns status (PENDING, RUNNING, COMPLETED, FAILED), progress steps, and any error message.
jobIdrequiredList Recent Jobs
List recent sync and publish jobs. Useful for monitoring pipeline activity.
limitstatusGet Settings
Get your Notipo account configuration: which services are connected (Notion, WordPress), current plan, feature settings, and trigger statuses.
Takes no parameters.
Sync Now
Trigger an immediate sync from Notion. Checks for any posts with trigger statuses and queues sync jobs. Pro plan only. Has a 15-second cooldown between calls.
Takes no parameters.
100% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
# CLI: publish a post end-to-endnpm install -g notiponotipo posts create --title "Why Every Dev Should Have a Blog" --publish
# REST API: one call runs the full pipelinecurl -X POST https://app.notipo.com/api/posts/create \ -H "X-API-Key: $NOTIPO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"title":"Hello","body":"## Intro\n\nMarkdown in, WordPress out.","publish":true}'// MCP: drop into Claude Desktop config{ "mcpServers": { "notipo": { "type": "http", "url": "https://app.notipo.com/api/mcp", "headers": { "x-api-key": "your-api-key" } } }}apps/ api/ — Fastify backend, MCP server, job workers web/ — Next.js admin UIpackages/ cli/ — `notipo` npm package (MIT-licensed thin client) shared/ — TypeScript types and enumsplugins/ notipo-seo-meta-writer/ — WordPress plugin for Yoast/AIOSEO metadata bridgegit clone https://github.com/kfuras/notipo-app.gitcd notipo-appcp apps/api/.env.example .env# Edit .env — at minimum set DATABASE_URL, ENCRYPTION_KEY, API_KEY,# DOMAIN, ACME_EMAIL, RESEND_API_KEYdocker compose up -ddocker compose -f docker-compose.dev.yml up # Postgres onlynpm installnpm run migrate -w @notipo/apiturbo dev # API on :3000, web on :3001