WriteKit is an MCP-powered publishing tool. You create and manage pages and collections entirely through conversation with your AI assistant.
claude mcp add --transport http writekit https://writekit.dev/mcp
Add to .cursor/mcp.json:
{
"mcpServers": {
"writekit": {
"url": "https://writekit.dev/mcp"
}
}
}
Add to your Windsurf MCP config:
{
"mcpServers": {
"writekit": {
"url": "https://writekit.dev/mcp"
}
}
}
Add to .vscode/mcp.json:
{
"servers": {
"writekit": {
"type": "http",
"url": "https://writekit.dev/mcp"
}
}
}
Add to opencode.json (project root or ~/.config/opencode/opencode.json):
{
"mcp": {
"writekit": {
"type": "remote",
"url": "https://writekit.dev/mcp"
}
}
}
Point any Streamable HTTP MCP client at:
https://writekit.dev/mcp
On first tool use, a browser window opens to sign in with GitHub, Google, Discord, or email (magic link).
After signing in, pick a subdomain at the dashboard. Your site lives at yourname.writekit.dev.
Tell your AI assistant what to write. It creates pages, organizes them into collections, and publishes — all through conversation.
yourname.writekit.dev/{slug}Every edit is versioned. Append ?v=N to a preview URL to view a previous version.
A page is any piece of markdown content — a doc, a blog post, a tutorial, a recipe. Pages start as drafts and can be published when ready. Each page gets a URL based on its slug.
Collections group related pages together. A "docs" collection, a "blog" collection, a "recipes" collection — whatever you need. Collections can be ordered manually (for docs/tutorials) or by date (for blog-style content). Pages can also exist standalone, outside any collection.
Pages and collections have a visibility setting:
Visibility is independent of status. A page must be published to be visible at all — visibility controls who can see it. A private collection cascades: all pages inside it are treated as private.
Each site has a team with role-based access:
Invite team members by email using the invite_member tool or via the dashboard at app.writekit.dev.
yourname.writekit.dev/{slug}yourname.writekit.dev/{collection}yourname.writekit.dev/{collection}/{slug}.md to any page URL (e.g. /{slug}.md)yourname.writekit.dev/search?q={query}yourname.writekit.dev/preview/{token} (expiring link for drafts)Copy these directly into your AI assistant. They work as-is once connected.
These tools are available to your AI assistant when connected.
| Tool | Description |
|---|---|
create_page | Create a new draft page with markdown content |
update_page | Update any field of an existing page |
delete_page | Permanently delete a page |
publish_page | Publish a draft — returns the live URL |
unpublish_page | Revert a published page to draft |
list_pages | List pages, filter by status, tag, or collection |
get_page | Get full page content by ID or slug |
append_to_page | Append content to the end of a page without re-sending everything |
search_pages | Full-text search across all pages |
| Tool | Description |
|---|---|
create_collection | Create a new collection (manual or date-sorted) |
update_collection | Update collection title, description, slug, or sort order |
delete_collection | Delete a collection (pages become standalone) |
list_collections | List all collections with page counts |
get_collection | Get collection details and its pages |
reorder_pages | Set page order within a manually-ordered collection |
| Tool | Description |
|---|---|
get_settings | Get current site settings |
update_settings | Update site title, description |
| Tool | Description |
|---|---|
list_members | List all team members and their roles |
invite_member | Add a user to the team by email (owner only) |
remove_member | Remove a team member (owner only) |
update_member_role | Change a member's role (owner only) |
Resources provide read-only context your AI can access at any time.
| URI | Description |
|---|---|
writekit://site/stats | Page counts, collection counts |
writekit://site/settings | Current site settings |
writekit://site/recent-pages | Last 10 published pages |
writekit://site/drafts | All draft pages |
writekit://site/collections | All collections with page counts |
Pages are written in markdown with the following extensions:
```go, ```python, etc.)> [!NOTE], > [!TIP], > [!WARNING], > [!DANGER] for styled alert boxes<embed src="url" /> for YouTube, Spotify, SoundCloud, Twitter/X, GitHub Gists```d2 code blocks for architecture diagrams