Skip to content
Last updated

MCP Connector Quickstart

Connect WebWork to your AI assistant in a few minutes.

  • Connector URL: https://mcp.webwork-tracker.com/mcp

There are two ways to connect:

  1. Connector directory - if WebWork appears in your AI client's connector directory, click Connect there, sign in with your WebWork account, and you are done. The directory uses WebWork's official credentials, so there is nothing to configure. The rest of this page is not needed.
  2. Custom connector (connect by URL) - add WebWork by URL together with OAuth credentials that you create yourself in WebWork. Use this if WebWork is not in your client's directory yet. The steps below cover Claude, ChatGPT, Cursor, Devin, Gemini CLI, Claude Code, and other MCP clients.

Step 1: Create your Client ID and App Secret in WebWork

Every custom connection authenticates with an OAuth2 app that you create in your WebWork settings. Connecting ChatGPT? Start with the ChatGPT steps instead: ChatGPT shows its callback URL only while you create the connector, so you create the WebWork app in the middle of that flow.

  1. Sign in to WebWork as a workspace Owner or Executive Manager. Your email address must be verified.

  2. Go to Settings > REST API.

  3. In the OAuth2 Apps section, click Create App.

  4. Fill in the two fields:

    • App Name - a label for you, for example Claude or Cursor.
    • Redirect URI - the callback URL of the AI client you are connecting. Copy it exactly from this table:
    AI clientRedirect URI to enter
    Claude (web, desktop, mobile)https://claude.ai/api/mcp/auth_callback
    ChatGPTThe Callback URL ChatGPT shows while you create the connector. It is different for every connector and starts with https://chatgpt.com/connector/oauth/. See ChatGPT.
    Cursor (desktop app)http://localhost:8787/callback
    Devin CLI and Devin Desktophttp://localhost:8765/callback
    Gemini CLIhttp://localhost:8080/oauth/callback
    Claude Codehttp://localhost:8080/callback
    Other MCP clientsThe callback URL from that client's documentation
  5. Click Create App and confirm your identity with the verification code WebWork emails you.

  6. A window shows your Client ID (it starts with ww_) and your App Secret. Copy both now. The secret is shown only this once. If you lose it, revoke the app and create a new one.

An app holds exactly one Redirect URI, so create a separate app for each AI client you connect (one for Claude, another for Cursor, and so on).

About localhost callbacks. Desktop and command-line clients receive the sign-in result on your own computer. WebWork accepts http://localhost:PORT/... and http://127.0.0.1:PORT/... as a Redirect URI, and the port does not have to match. So a client that picks a new port on every run, such as Gemini CLI or Claude Code, still signs in. The host and the path must match exactly: localhost and 127.0.0.1 are different values. An app with a localhost callback must use PKCE. The MCP standard requires PKCE from every client, so this needs no setup on your side. Any other host needs an https:// Redirect URI.

Step 2: Add the connector in your AI client

Claude (claude.ai, desktop, mobile)

  1. In Claude, open Settings > Connectors and click Add custom connector.
  2. Enter a name (for example WebWork) and the URL https://mcp.webwork-tracker.com/mcp.
  3. Open Advanced settings and paste your Client ID into the OAuth Client ID field and your App Secret into the OAuth Client Secret field. This step is required: WebWork does not support automatic client registration, so a connection without credentials will fail.
  4. Click Add, then Connect. Sign in with your WebWork account and approve the requested permissions (read, write and admin access).

On Claude Team and Enterprise plans, an organization Owner first adds the connector the same way under Organization settings > Connectors; members then connect it from their own Settings > Connectors.

ChatGPT

Custom connectors in ChatGPT require developer mode, available on plans that include it.

ChatGPT generates a separate callback URL for every connector, so start in ChatGPT and create the WebWork app in the middle:

  1. In ChatGPT, open Settings > Connectors, and under Advanced enable Developer mode.
  2. Click Create (add a custom connector).
  3. Enter a name (for example WebWork) and the MCP server URL https://mcp.webwork-tracker.com/mcp.
  4. Choose OAuth as the authentication method, open the advanced OAuth settings, and copy the Callback URL. It looks like https://chatgpt.com/connector/oauth/AbC123xYz. Keep this window open: if you close it or start a new connector, ChatGPT generates a different callback URL.
  5. In WebWork, create the app as in Step 1 and enter that Callback URL as the Redirect URI.
  6. Back in ChatGPT, paste your Client ID and App Secret into the OAuth client fields.
  7. Save, then connect: sign in with your WebWork account and approve the requested permissions.

https://chatgpt.com/connector_platform_oauth_redirect, the generic redirect URI from older ChatGPT instructions, does not work for connectors. If you delete the connector in ChatGPT and create it again, its callback URL changes too: create a new WebWork app with the new value.

Cursor (desktop app)

Create the app in Step 1 with the Redirect URI http://localhost:8787/callback.

  1. Open your Cursor MCP configuration: ~/.cursor/mcp.json for all projects, or .cursor/mcp.json inside one project.

  2. Add WebWork with an auth block that holds your credentials:

    {
      "mcpServers": {
        "webwork": {
          "url": "https://mcp.webwork-tracker.com/mcp",
          "auth": {
            "CLIENT_ID": "ww_your_client_id",
            "CLIENT_SECRET": "your_app_secret",
            "scopes": ["read", "write", "admin"]
          }
        }
      }
    }

    Cursor also accepts "${env:WEBWORK_CLIENT_SECRET}" in place of a value, so the secret can stay out of the file.

  3. In Cursor Settings > MCP, the WebWork server shows a sign-in prompt. Click it, sign in with your WebWork account in the browser, and approve the requested permissions.

Old Cursor versions send a cursor:// callback instead of http://localhost:8787/callback. WebWork does not accept that value. If sign-in fails with a redirect mismatch, update Cursor and try again.

Devin (CLI and Desktop)

Create the app in Step 1 with the Redirect URI http://localhost:8765/callback.

  1. Add WebWork to your Devin CLI MCP configuration. Use the file ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows) for all projects, or .devin/mcp_config.json inside one project:

    {
      "mcpServers": {
        "webwork": {
          "url": "https://mcp.webwork-tracker.com/mcp",
          "transport": "http",
          "oauthClientId": "ww_your_client_id",
          "oauthClientSecret": "${env:WEBWORK_CLIENT_SECRET}"
        }
      }
    }

    oauthClientSecret also accepts the secret itself, or ${file:/path/to/secret}.

  2. Run devin mcp login webwork. Sign in with your WebWork account in the browser and approve the requested permissions.

Devin Desktop's local agent reads the same Devin CLI configuration. Set it up as above, then click Authenticate next to WebWork in the Desktop MCP list.

Devin CLI versions released before September 10, 2026 used the callback http://127.0.0.1:8765/auth/callback. If sign-in fails with a redirect mismatch, update Devin CLI, or create the app with that older value.

Gemini CLI

Create the app in Step 1 with the Redirect URI http://localhost:8080/oauth/callback. Gemini CLI picks a free port on each sign-in. WebWork accepts any port, so the 8080 in the stored value does not matter.

  1. Add WebWork to ~/.gemini/settings.json:

    {
      "mcpServers": {
        "webwork": {
          "httpUrl": "https://mcp.webwork-tracker.com/mcp",
          "oauth": {
            "enabled": true,
            "clientId": "ww_your_client_id",
            "clientSecret": "your_app_secret",
            "scopes": ["read", "write", "admin"]
          }
        }
      }
    }
  2. Start Gemini CLI and run /mcp auth webwork. Sign in with your WebWork account in the browser and approve the requested permissions.

Claude Code

Create the app in Step 1 with the Redirect URI http://localhost:8080/callback. Claude Code picks a free port on each sign-in. WebWork accepts any port, so the 8080 in the stored value does not matter.

  1. Add WebWork with your Client ID. The --client-secret flag asks for the secret and stores it in your system keychain, not in a config file:

    claude mcp add --transport http --client-id ww_your_client_id --client-secret \
      webwork https://mcp.webwork-tracker.com/mcp

    To skip the prompt, for example in a script, set the secret in the MCP_CLIENT_SECRET environment variable before running the command.

  2. Start Claude Code and run /mcp. Select WebWork, sign in with your WebWork account in the browser, and approve the requested permissions.

Use Claude Code 2.1.231 or newer. Earlier builds could send a 127.0.0.1 callback, which does not match an app created with localhost.

Other MCP clients

Any MCP client can connect if all of the following are true:

  • it connects to a remote server by URL (Streamable HTTP),
  • it lets you enter an OAuth client id and secret, and
  • it has a fixed https:// callback URL, or a localhost callback URL, which you enter as the app's Redirect URI in Step 1.

If your client also asks you to enter OAuth scopes, separate them with spaces, not commas: read write admin. A comma-separated value such as read,write,admin is rejected with an invalid_scope error.

Clients that only register themselves (Dynamic Client Registration) and have no field for a client id and secret cannot connect yet. If your client is one of these, contact support.

Try it

Ask your assistant:

  • "List my WebWork workspaces."
  • "List the projects in my workspace."
  • "What are the open tasks in my project?"
  • "Start the timer for Alex."
  • "Give me the tracked-hours report for last week."

The assistant calls list_workspaces first to find your workspace, then list_members to resolve a person by name, and so on. You do not need to provide ids yourself.

Troubleshooting

  • Redirect or callback mismatch error during sign-in - the Redirect URI saved in your WebWork app does not match your AI client's callback URL. Compare it character by character with the table in Step 1. For a localhost callback the port may differ, but the host and the path must match: localhost and 127.0.0.1 are different values. For ChatGPT, use the Callback URL of your connector, not https://chatgpt.com/connector_platform_oauth_redirect. To change it, revoke the app and create a new one with the correct value.
  • "code_challenge" error during sign-in - an app with a localhost Redirect URI must use PKCE, and your client did not send it. Update the client to a current version.
  • Invalid client error - check that you pasted the Client ID that starts with ww_, that the secret is correct, and that the app has not been revoked in Settings > REST API. If the error appears as soon as the WebWork sign-in page should open, the Redirect URI does not match: WebWork reports a redirect mismatch as an invalid client. See the first item in this list.
  • Lost the App Secret - it is shown only once. Revoke the app, create a new one, and update the credentials in your AI client.
  • Authorization failed - confirm your account is a workspace Owner or Executive Manager and your email is verified.
  • "Not connected" again after a while - your session token expired or was revoked. Reconnect to continue.
  • A tool returns a permission error - that action is outside your role or outside the permissions you approved. Reconnect to grant more scopes, or ask your workspace Owner.

Learn more