Connect WebWork to your AI assistant in a few minutes.
- Connector URL:
https://mcp.webwork-tracker.com/mcp
There are two ways to connect:
- 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.
- 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.
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.
Sign in to WebWork as a workspace Owner or Executive Manager. Your email address must be verified.
Go to Settings > REST API.
In the OAuth2 Apps section, click Create App.
Fill in the two fields:
- App Name - a label for you, for example
ClaudeorCursor. - Redirect URI - the callback URL of the AI client you are connecting. Copy it exactly from this table:
AI client Redirect URI to enter Claude (web, desktop, mobile) https://claude.ai/api/mcp/auth_callbackChatGPT The 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/callbackDevin CLI and Devin Desktop http://localhost:8765/callbackGemini CLI http://localhost:8080/oauth/callbackClaude Code http://localhost:8080/callbackOther MCP clients The callback URL from that client's documentation - App Name - a label for you, for example
Click Create App and confirm your identity with the verification code WebWork emails you.
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.
- In Claude, open Settings > Connectors and click Add custom connector.
- Enter a name (for example
WebWork) and the URLhttps://mcp.webwork-tracker.com/mcp. - 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.
- 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.
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:
- In ChatGPT, open Settings > Connectors, and under Advanced enable Developer mode.
- Click Create (add a custom connector).
- Enter a name (for example
WebWork) and the MCP server URLhttps://mcp.webwork-tracker.com/mcp. - 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. - In WebWork, create the app as in Step 1 and enter that Callback URL as the Redirect URI.
- Back in ChatGPT, paste your Client ID and App Secret into the OAuth client fields.
- 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.
Create the app in Step 1 with the Redirect URI http://localhost:8787/callback.
Open your Cursor MCP configuration:
~/.cursor/mcp.jsonfor all projects, or.cursor/mcp.jsoninside one project.Add WebWork with an
authblock 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.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.
Create the app in Step 1 with the Redirect URI http://localhost:8765/callback.
Add WebWork to your Devin CLI MCP configuration. Use the file
~/.config/devin/mcp_config.json(%APPDATA%\devin\mcp_config.jsonon Windows) for all projects, or.devin/mcp_config.jsoninside one project:{ "mcpServers": { "webwork": { "url": "https://mcp.webwork-tracker.com/mcp", "transport": "http", "oauthClientId": "ww_your_client_id", "oauthClientSecret": "${env:WEBWORK_CLIENT_SECRET}" } } }oauthClientSecretalso accepts the secret itself, or${file:/path/to/secret}.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.
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.
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"] } } } }Start Gemini CLI and run
/mcp auth webwork. Sign in with your WebWork account in the browser and approve the requested permissions.
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.
Add WebWork with your Client ID. The
--client-secretflag 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/mcpTo skip the prompt, for example in a script, set the secret in the
MCP_CLIENT_SECRETenvironment variable before running the command.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.
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 alocalhostcallback 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.
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.
- 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
localhostcallback the port may differ, but the host and the path must match:localhostand127.0.0.1are different values. For ChatGPT, use the Callback URL of your connector, nothttps://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
localhostRedirect 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.
- Introduction - what the connector is and what it can do.
- Authorization - the full OAuth2 reference for the REST API.
- Privacy Policy
- Support: support.webwork-tracker.com