Wire TimeToPost into Cursor
Cursor reads its MCP servers from a JSON file, so setup is mostly one paste. Once the server is in, the same agent that edits your code can write the announcement and queue it for Instagram, X, TikTok, Threads, Bluesky, Mastodon, Nostr, Pixelfed, Telegram, Tumblr, WordPress, Ghost, DEV, Whop, Listmonk, and Buttondown.
The config
Hosted server, signs in through the browser:
{
"mcpServers": {
"timetopost": {
"url": "https://api.timetopost.co/mcp"
}
}
}Local stdio server through npx, using a personal token instead of OAuth:
{
"mcpServers": {
"timetopost": {
"command": "npx",
"args": ["-y", "timetopost-mcp"],
"env": {
"TIMETOPOST_API_URL": "https://api.timetopost.co",
"TIMETOPOST_API_TOKEN": "your-token"
}
}
}
}Create the token under Settings, API in TimeToPost. Do not commit a project-level mcp.json that contains it.
Things to ask Cursor’s agent
- After a merge
- “Summarise this PR for customers and file two drafts with create_drafts, schedule hint optimal.”
- Before you write copy
- “Check list_integrations so you know which accounts exist, then get_optimal_times for each.”
- When something looks off
- “Run scheduler_status and list_posts for failed ones, then explain why.”
Review before it goes live
Drafts made with create_drafts never publish on their own; they wait for approve_draft. If your Cursor settings ask before running tools, you also get a second guard: each approve_draft or schedule_post call stops for your click before it runs.
list_approvals shows what is pending across posts, trend drafts, build-in-public drafts and DMs. reject_draft takes an optional reason that the submitting agent can read back through list_drafts, which helps it write a better second attempt.
Questions people ask
Project file or global file?
Cursor reads .cursor/mcp.json in a project and ~/.cursor/mcp.json for every project. Put TimeToPost in the global file if it is your own account, since the account is not tied to any one repo.
Hosted or npx?
Hosted is simpler: a URL and a browser sign-in. The npx package, timetopost-mcp, runs locally over stdio and needs a personal token from Settings, API in the TIMETOPOST_API_TOKEN variable. Use it if your Cursor build does not complete the OAuth step.
Do I need the auth block that Cursor documents?
Cursor documents a static auth block for providers that hand out fixed client credentials. TimeToPost uses dynamic client registration, so there is no client id to enter. Leave the block out.
Can an agent in Cursor publish by itself?
Agents in Cursor can call every tool on the server, including schedule_post and approve_draft, unless a token limits them. Ask for create_drafts to keep a review step, and avoid auto-running approve_draft.
How do I see that it connected?
Cursor lists servers in its MCP settings and keeps connection output in the Output panel under MCP Logs. Calling whoami from the chat is the fastest check.