| Scope | Path |
|---|---|
| macOS / Linux | ~/.codeium/windsurf/mcp_config.json |
| Windows | %USERPROFILE%\.codeium\windsurf\mcp_config.json |
Create the file if it is not there — Windsurf does not generate it on first launch.
{
"mcpServers": {
"postwire": {
"command": "npx",
"args": [
"-y",
"postwire-mcp"
],
"env": {
"POSTWIRE_API_KEY": "pw_live_your_key"
}
}
}
}
No local process, no Node required — Windsurf talks to PostWire over HTTP.
{
"mcpServers": {
"postwire": {
"serverUrl": "https://postwire.io/api/mcp",
"headers": {
"Authorization": "Bearer pw_live_your_key"
}
}
}
}
For a remote server Windsurf uses serverUrl where most other clients use url (it accepts both, but every Windsurf example you will find uses serverUrl). It also supports ${env:VAR_NAME} interpolation in command, args, env, serverUrl and headers, so the key does not have to sit in the file in plaintext.
Open Cascade and check the MCP panel lists postwire with its tools.
| Tool | What it does |
|---|---|
generate_posts | One prompt in, a native draft per network out — respecting each one's character limit, hashtag rules and link conventions. |
post_to_social | Publish to one or many networks in a single call. |
get_post_status | Check what happened to a post after it was accepted. |
list_platforms | Which networks are available and which need approval. |
my_account | Plan, usage and which brands are connected. |
A prompt like "write a launch post for our new feature and publish it to TikTok, LinkedIn and Bluesky" becomes two tool calls: one to draft a native version per network, one to publish.
Networks differ more than people expect — X caps at 280 characters against YouTube's 5,000, Reddit has no hashtags, and TikTok, YouTube and Instagram all refuse text-only posts. See what breaks between any two networks.
Get an API key free →Source for the Windsurf config format: Windsurf Cascade MCP docs. Using a different client? See all of them.