Common problems
The browser shows 405 Method Not Allowed
That’s expected. MCP clients send POST requests to the server, and a browser sends a GET, which the server rejects with405.
Add the URL to an MCP client instead, as the Quickstart shows.
The client was added with the wrong transport
Biohub MCP uses Streamable HTTP. A client set up with the older SSE transport opens the connection with a GET request, gets405, and fails to connect.
It can even finish sign-in in the browser and then fail to reconnect with 405.
Remove the entry and add it again with HTTP.
In Claude Code:
--scope user or another scope, pass the same scope again.
Then enter /mcp, select biohub, and sign in again.
In other clients, select Streamable HTTP or HTTP as the server type.
No tools show up
- Confirm the URL is exactly
https://biohub.ai/mcp. - Make sure you finished signing in. Tools appear only after sign-in; see Sign-in problems if your client still asks you to sign in.
- Make sure the server is turned on for your chat. In Claude, click +, select Connectors, and turn on Biohub. In ChatGPT, select Developer mode from the + menu and select Biohub.
- Refresh the client’s server list, or restart the client.
- Ask your assistant to list the Biohub tools. You should see the tools listed in the Overview.
401 and prints a line like this one:
The tool names have a prefix
Many clients add the server name to each tool, for examplemcp__biohub__esm_atlas_search_uniprot.
The tools are the same.
The assistant ignores a Skill
- Name the Skill in your request, such as “Using the Biohub MCP waveorder-tutorial Skill, …”.
- If it still answers on its own, ask it to read the Skill’s
SKILL.mdURI, such asskill://waveorder-tutorial/SKILL.md, and follow it. - If your client can’t read MCP resources, ask it to call
read_resourcewith the same URI, orlist_resourcesto see every Skill file; see MCP resource reference. - If
list_resourcesandread_resourceare missing, refresh the client’s tool list or reconnect.
The assistant can’t run a Skill’s commands
The WaveOrder Skills run thewo command, uv, and napari on your computer, so they need a client that can run commands on a computer with a display. See Start a Skill.
ChatGPT doesn’t show Developer mode
Developer mode is available on the web for Plus, Pro, Business, Enterprise, and Education accounts. On a workspace plan, ask an admin to allow developer mode.A call is slow or times out
Calls that compute on an ESM Atlas miss take longer, and a complex fromui_show_structure always runs a fold, which has 95 seconds to finish.
Folds within the call and ESMC scans can also take tens of seconds.
A fold that becomes a run returns at once; ask your assistant to check the run later with biohub_get_inference_run.
A structure view with a PNG preview (include_png set to true) takes several seconds longer than one without.
Each call has a 120-second deadline, after which the tool returns indeterminate.
Some clients stop waiting sooner and report their own timeout.
Don’t retry an indeterminate call automatically, because the work may already have started. Wait a while, then ask once more.
Why some calls take longer
How long a call takes depends on whether the tool can return a stored result or has to compute a new one. The ESM Atlas looks up the exact sequence you send. When it has no stored result, some tools compute one for your request:esm_atlas_get_protein_detailscomputes SAE features for sequences up to 2,048 residues.esm_atlas_search_similar_protein_clusterscomputes the query’s features and can predict structures for up to six hits that don’t have one yet.ui_show_structurepredicts a protein’s structure for sequences up to 700 residues.
biohub_get_inference_run are marked read-only because they create nothing that you need to manage. ui_show_structure, the folding tools, and the ESMC tools are marked compute and non-idempotent, so your client can ask you to approve each call, even a free single-protein view. These annotations describe what a tool can do, not the input of one call. Calling a tool again can compute, and bill, again.
Every call has a 120-second deadline. If it passes, or if the outcome of a compute step is unknown, the tool returns indeterminate. The work may have started, so don’t retry automatically: wait a while before asking again. A fold or ESMC call that started may also have been billed.
The structure appears only as an image or text
Your client doesn’t support MCP Apps, so it can’t show the interactive viewer. It shows the text result, so ask your assistant for a PNG preview if you want a picture. See What your client shows.The download buttons are disabled
Downloads from the viewer need a client that supports file downloads. You can still explore the structure in the viewer.The server returns 413 Request Entity Too Large
The request body was over 64 KiB, and it was rejected before it reached a tool. The response is an HTML page, not a JSON-RPC error. Send a smaller request.A browser-based client gets 403 Forbidden Origin
The server rejects requests sent from web pages on other sites. Connect from a desktop app, a CLI, or your own server-side code instead of from browser JavaScript.Sign-in problems
Biohub MCP asks you to sign in with a free Biohub account, and any verified email address can sign in. Many fixes below remove the server from your client and add it again, as Remove the server and add it again shows for each client. Some clients hide the server’s message, so match what your client shows to the closest row.Remove the server and add it again
Removing the server from your client clears its saved sign-in and app identity, which fixes the sign-in errors that link here. For example, if you added Biohub MCP before it required sign-in, your client may say it needs authentication, or show this message:The client asks you to sign in again
Sign out of Biohub in the client, or clear its saved Biohub sign-in, then connect and sign in again in the browser. If the client asks again right after you sign in, remove the server and add it again. Never add a token or a key to the server URL or the client configuration to get around it.Codex can’t sign in
Codex signs in with a client metadata document from version 0.148.0, through its own sign-in page on your computer. Otherwise it falls back to dynamic registration, which Biohub MCP also accepts.- Run
codex --versionand update Codex if it’s older than 0.148.0. - If
~/.codex/config.tomlsetsmcp_oauth_callback_url, remove that line. - Run
codex mcp logout biohubandcodex mcp remove biohub, then add the server again as the Quickstart shows.
Codex sign-in fails with invalid_target
Codex 0.163.0 fails the last step of codex mcp login --no-browser with invalid_target.
Run codex mcp login biohub without --no-browser, and complete the sign-in in the browser it opens.
Codex reports the resource parameter more than once
codex mcp login biohub can fail with a message that ends with The request includes the parameter 'resource' more than once.
This happens when the server was added with the --oauth-resource flag.
Remove the entry and add it again without the flag:
Sign-in reports an invalid client
The client is reusing an app identity the sign-in service no longer knows, such as a dynamic registration that was deleted. Remove the saved Biohub connection and add it again, as Remove the server and add it again shows.Google sign-in succeeds, then returns you to sign-in
This can happen when you don’t have a Biohub account yet. Create a free account, then connect again. If it keeps happening, the sign-in page’s bot check may be blocked in your browser or network:- Use a current browser with JavaScript turned on.
- Try a private window, which rules out saved data and most extensions.
- If you’re allowed to, turn off extensions that block scripts or ads, or try without a VPN or proxy.
- Make sure your network doesn’t block
challenges.cloudflare.com.
Error codes
A failed tool call returns a JSON object with a stablecode and a readable message.
Some codes add fields, such as retry_after_seconds or actual_length and max_length.
Limits
Similarity search can return fewer than
top_k hits, because the ESM Atlas leaves out matches with a similarity score below 0.5 and withholds hits that its guardrails restrict.