Gemini CLI plus TimeToPost

Gemini CLI takes MCP servers either from a command or straight from its settings file. Pick whichever you prefer; both leave you with an agent that can plan and draft posts for Instagram, X, TikTok, Threads, Bluesky, Mastodon, Nostr, Pixelfed, Telegram, Tumblr, WordPress, Ghost, DEV, Whop, Listmonk, and Buttondown.

Option 1: the command

terminal
gemini mcp add --transport http timetopost https://api.timetopost.co/mcp

That writes the entry for you. Start a session, type /mcp auth, choose timetopost and complete the sign-in. Use /mcp list afterwards to see the connection state.

Option 2: edit settings.json

~/.gemini/settings.json
{
  "mcpServers": {
    "timetopost": {
      "httpUrl": "https://api.timetopost.co/mcp"
    }
  }
}

If the file already has an mcpServers object, add the timetopost key beside the others rather than a second object.

Option 3: local, with a token

~/.gemini/settings.json
{
  "mcpServers": {
    "timetopost": {
      "command": "npx",
      "args": ["-y", "timetopost-mcp"],
      "env": {
        "TIMETOPOST_API_URL": "https://api.timetopost.co",
        "TIMETOPOST_API_TOKEN": "$TIMETOPOST_API_TOKEN"
      }
    }
  }
}

Export TIMETOPOST_API_TOKEN in your shell first. Whether Gemini CLI expands the dollar reference in env values depends on your version, so check with /mcp list; if it does not, pass the token another way you trust.

A first session

  1. “Call whoami.” Confirm it is the workspace you meant.
  2. “Call get_capabilities and tell me which networks I can post to.” This is the authoritative capability map.
  3. “Write three posts about this changelog and file them with create_drafts.”
  4. “Show list_approvals.” Read them. Then “approve the first, reject the rest because they repeat each other.”

Step four is the human gate. approve_draft turns a pending draft into a scheduled post; reject_draft with a reason closes it. Both only apply to the posts queue; other queues are approved in the dashboard.

Questions people ask

httpUrl or url?

Gemini CLI uses httpUrl for Streamable HTTP servers and url for the older SSE transport. TimeToPost serves Streamable HTTP, so the field is httpUrl.

Where does settings.json live?

~/.gemini/settings.json for your user, or .gemini/settings.json inside a project.

How does sign-in work?

Gemini CLI supports OAuth for MCP servers. Run /mcp auth and pick timetopost; the browser opens, you enter your email and the 6-digit code, and approve access. The CLI stores the token itself, so nothing goes into settings.json.

Can I run it without OAuth?

Yes, with the stdio package: npx -y timetopost-mcp and a TIMETOPOST_API_TOKEN environment variable from Settings, API.

Does Gemini publish on its own?

It calls whichever tool fits your request. Ask for drafts and it uses create_drafts, which always waits for approval. Asking it to schedule a post at a time goes through schedule_post and is not reviewed first.