Sign in (OAuth)
The server URL ishttps://api.publishbuddy.com/mcp.
1
Add the server in your app
- Claude (claude.ai, Claude Desktop): Settings → Connectors → Add custom connector, with the URL above.
- ChatGPT: add PublishBuddy from the apps directory once it is listed there, or as a custom connector with the URL above where your workspace allows it.
- Claude Code:
claude mcp add --transport http publishbuddy https://api.publishbuddy.com/mcp, then run/mcp, pickpublishbuddy, and choose Authenticate. - Cursor, VS Code, and other clients: add the URL with no
Authorizationheader. The client opens the sign-in page when it first connects.
2
Sign in to PublishBuddy
A browser page opens on app.publishbuddy.com. Sign in with your usual email and password or Google. If you are already signed in, you go straight to the next step.
3
Pick a workspace and allow
The page names the app, shows the website it will send you back to, and lists what it will be able to do. Pick the workspace the app should work in and click Allow. A workspace whose plan doesn’t include MCP access, or where your role can’t use AI features, can’t be picked.
4
Back in the app
You return to the app, connected. Try the prompt in Verify the connection.
Use an API token
1. Create an API token with the MCP ability
1
Open the dashboard
Sign in at app.publishbuddy.com.
2
Go to User Settings → Login & Security
Click your avatar → User Settings, then open the Login & Security tab.
3
Generate a token
In the API Keys section click Generate API Key, give it a name such as
claude-code, and tick the MCP (AI clients) scope. Tick the REST scopes too only if the same token will also call the REST API.4
Copy the value
You see the token once. Store it in a password manager or an environment variable. The examples below assume
PUBLISHBUDDY_TOKEN.2. Add the server to your client
The server speaks Streamable HTTP, so clients that support remote MCP servers connect directly. Clients that only launch local (stdio) servers, such as Claude Desktop, connect through themcp-remote bridge.
Where each config file lives
Where each config file lives
- Claude Code: the CLI command stores the server in your user config. A project-level
.mcp.jsonin the repo root is shared with anyone who clones it, so keep the token in an environment variable there. - Cursor:
.cursor/mcp.jsonin a project, or~/.cursor/mcp.jsonfor every project. - VS Code:
.vscode/mcp.jsonin a workspace. Theinputsblock prompts for the token once and stores it securely. - Windsurf:
~/.codeium/windsurf/mcp_config.json. - Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.jsonon macOS,%APPDATA%\Claude\claude_desktop_config.jsonon Windows. Restart the app after editing.
Claude Desktop on Windows
Claude Desktop on Windows
npx must be launched through cmd on Windows:Authorization:${AUTH_HEADER} without a space on purpose. Claude Desktop splits arguments on spaces, so the space lives inside the environment variable instead.Other clients
Other clients
Any client that supports remote MCP servers over Streamable HTTP can connect to
https://api.publishbuddy.com/mcp, either by signing in (the client finds the sign-in page from the server’s 401 answer, as the MCP authorization spec describes) or with an Authorization: Bearer <token> header.Verify the connection
Ask your assistant something that needs a tool:list_profiles and reply with your connected accounts. Most clients ask for permission before running a tool the first time. Approve it, and optionally allow the read-only tools permanently so you are only asked when something changes.
Choose a workspace
A signed-in app works in the workspace you picked when you allowed it. With an API token, requests run against your active workspace, the one you last used in the dashboard. If you belong to several workspaces and want a token-based client pinned to one of them, add anX-Workspace-Id header with that workspace’s UUID (from GET /workspaces on the REST API, or from the workspace switcher URL in the dashboard):
Try a real task
get_top_posts, then create_post (which makes a draft), then schedule_post. Creating a post never publishes anything on its own; scheduling or queueing is always a separate call, and your client asks before each one unless you have allowed it.
Troubleshooting
Next
Tool reference
Every tool, its inputs, and its credit cost.
REST API quickstart
The same actions over plain HTTP, for pipelines and integrations.