Guide
Connect over MCP
Add the MCPBytes server to your agent, pick a toolset, and let the agent upload files, run jobs and read results.
Endpoint
The MCP server is at https://api.mcpbytes.com/mcp (Streamable HTTP). Clients that support OAuth sign in with GitHub or an email link; others send an API key as a bearer token. Every tool is one MCP tool that starts a job, next to a few shared tools for uploads, jobs and results.
Add it to your agent
Pick your client. Each entry says where its settings live and what it cannot do, with a link to its own documentation.
Claude CodeOAuth or API key
The first form signs in through the browser when you run /mcp. In .mcp.json (project root), ${MCPBYTES_API_KEY} is read from the environment when Claude Code connects. Claude Code docs
claude mcp add --transport http mcpbytes \
https://api.mcpbytes.com/mcpCodex (CLI, IDE extension, ChatGPT desktop)OAuth or API key
Codex reads the key from the environment variable each time it connects. The same table can go in ~/.codex/config.toml by hand; codex mcp add has no --header flag. Codex docs
codex mcp add mcpbytes --url https://api.mcpbytes.com/mcp \
--bearer-token-env-var MCPBYTES_API_KEYCursorOAuth or API key
~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). Remote servers take no "type". Without the header, the client signs you in with GitHub or an email link (OAuth). Cursor docs
{
"mcpServers": {
"mcpbytes": {
"url": "https://api.mcpbytes.com/mcp",
"headers": {
"Authorization": "Bearer ${env:MCPBYTES_API_KEY}"
}
}
}
}VS Code (GitHub Copilot)OAuth or API key
.vscode/mcp.json, or "MCP: Open User Configuration". The top-level key is "servers". VS Code asks for the key once and stores it securely. Without the header, the client signs you in with GitHub or an email link (OAuth). VS Code docs
{
"inputs": [
{
"type": "promptString",
"id": "mcpbytes-api-key",
"description": "MCPBytes API key (mcpb_...)",
"password": true
}
],
"servers": {
"mcpbytes": {
"type": "http",
"url": "https://api.mcpbytes.com/mcp",
"headers": {
"Authorization": "Bearer ${input:mcpbytes-api-key}"
}
}
}
}Gemini CLIOAuth or API key
~/.gemini/settings.json or .gemini/settings.json. The key is "httpUrl" ("url" means the older SSE transport). Without the header, the client signs you in with GitHub or an email link (OAuth). Then sign in with /mcp auth. Gemini CLI docs
{
"mcpServers": {
"mcpbytes": {
"httpUrl": "https://api.mcpbytes.com/mcp",
"headers": {
"Authorization": "Bearer ${MCPBYTES_API_KEY}"
}
}
}
}OpenCodeOAuth or API key
opencode.json or ~/.config/opencode/opencode.json. Variables are written {env:NAME}. "oauth": false makes a wrong key an error instead of a sign-in; remove it and the headers to sign in with OAuth. OpenCode docs
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcpbytes": {
"type": "remote",
"url": "https://api.mcpbytes.com/mcp",
"enabled": true,
"oauth": false,
"headers": {
"Authorization": "Bearer {env:MCPBYTES_API_KEY}"
}
}
}
}oh-my-pi (omp)OAuth or API key
.omp/mcp.json (project) or ~/.omp/agent/mcp.json (user). Without the header, the client signs you in with GitHub or an email link (OAuth). Then run /mcp reauth mcpbytes in a session. omp also picks up servers already set up for Claude Code, Cursor, VS Code, Gemini CLI and Codex. oh-my-pi docs
{
"mcpServers": {
"mcpbytes": {
"type": "http",
"url": "https://api.mcpbytes.com/mcp",
"headers": {
"Authorization": "Bearer ${MCPBYTES_API_KEY}"
}
}
}
}piAPI key only
pi has no MCP support, by design: its author recommends command-line tools described by a skill. Install the MCPBytes skill (it drives the REST API with a small script), or add MCP with the pi-mcp-adapter extension. pi docs
mkdir -p ~/.pi/agent/skills/mcpbytes
curl -fsSL https://mcpbytes.com/skills/mcpbytes/mcpbytes.tar.gz \
| tar -xz -C ~/.pi/agent/skills/mcpbytesDeepSeekAPI key only
DeepSeek's API does not run MCP servers itself: the agent you use DeepSeek models in does (Claude Code, OpenCode, oh-my-pi, Cline: use that agent's entry here). DeepSeek's own agent, DeepSeek Harness (dsh, a developer preview), takes this patch in ~/.dsh/cordis.patch.yml; it supports headers, not OAuth. DeepSeek docs
- insert:
- id: mcp-mcpbytes
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: mcpbytes
transport: streamable-http
url: https://api.mcpbytes.com/mcp
headers:
Authorization: !!js '`Bearer ${process.env.MCPBYTES_API_KEY}`'WindsurfOAuth or API key
~/.codeium/windsurf/mcp_config.json. Without the header, the client signs you in with GitHub or an email link (OAuth). Cascade allows 100 tools in total, so a single-family endpoint helps. Windsurf docs
{
"mcpServers": {
"mcpbytes": {
"serverUrl": "https://api.mcpbytes.com/mcp",
"headers": {
"Authorization": "Bearer ${env:MCPBYTES_API_KEY}"
}
}
}
}GooseOAuth or API key
~/.config/goose/config.yaml (Windows: %APPDATA%\Block\goose\config\config.yaml), or "goose configure" > Add Extension > Remote Extension (Streamable HTTP). The key is "uri". Without the header, the client signs you in with GitHub or an email link (OAuth). Goose docs
extensions:
mcpbytes:
type: streamable_http
name: mcpbytes
enabled: true
uri: "https://api.mcpbytes.com/mcp"
headers:
Authorization: "Bearer ${MCPBYTES_API_KEY}"
env_keys:
- MCPBYTES_API_KEY
timeout: 300ZedOAuth or API key
settings.json, or Settings > AI > MCP Servers > Add Server > Add Remote Server. Zed's settings cannot read environment variables, so sign in instead of storing a key: with no Authorization header, Zed starts the OAuth sign-in. Zed docs
{
"context_servers": {
"mcpbytes": {
"url": "https://api.mcpbytes.com/mcp"
}
}
}Claude (desktop and web) and ChatGPTOAuth only
These add remote servers as connectors and sign in with OAuth; there is no field for an API key. Claude: Customize > Connectors > Add custom connector. ChatGPT: turn on Developer mode in Settings, then create an app. Enter this URL: Claude docs
https://api.mcpbytes.com/mcpAny client that only starts local (stdio) serversOAuth or API key
mcp-remote runs locally and forwards to the endpoint. The header is written without a space and takes its value from "env", because some clients on Windows break arguments that contain spaces. Use it for Cline too. Without the --header arguments and "env", mcp-remote signs you in with OAuth. Any client that only starts local docs
{
"mcpServers": {
"mcpbytes": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.mcpbytes.com/mcp",
"--transport",
"http-only",
"--header",
"Authorization:${MCPBYTES_AUTH}"
],
"env": {
"MCPBYTES_AUTH": "Bearer <your key>"
}
}
}
}Toolsets
https://api.mcpbytes.com/mcp has every tool. To keep an agent's tool list short, connect it to one family instead: each endpoint has its tools plus the shared ones. Every tool's page shows the setup for its endpoint.
Create a secret is used through a local helper, a separate MCP server on your computer; its page has the setup.
How agents run a tool
- Input. For a public https URL, the agent passes
urlto the tool (withfilenameif the URL does not end in the file's extension). For a local file, it callscreate_upload, PUTs the file to the returned URL, then passes theupload_id. Upload URLs work once and expire after an hour. Tools that take parameters instead of a file, such as a prompt, get them as arguments. - Run. The tool starts the job and waits up to
wait_seconds(at most 45) for the result. Options are flat arguments. - Wait. If the job is still
queuedorrunning, the agent callsget_jobwithwait_secondsuntil the status is final. Starting the same job again would be charged again; to retry after a network error, it repeats the call with the sameidempotency_key. - Results.
result.fileslists every output with a download URL, valid up to 24 hours (get_jobgives fresh ones).read_job_filereads text outputs (.txt .json .md .csv) in chunks: it returnsnext_offsetto pass as the nextoffset, untileof. Some tools return the start of their main text file with the result.
A job's statuses, retention and cancellation work the same as over REST: Jobs & files.
Errors
A request that fails comes back as a tool error with the same code and message as the REST API, for example insufficient_credits: …. A job that fails is returned as a job, with its error. Both are listed in Limits & errors and on each tool's page.
Agent skill
The MCPBytes skill teaches an agent the whole workflow: uploads, waiting for jobs, reading results in chunks, each tool's options and errors. With MCP connected it uses the MCP tools; without MCP (pi, for example) it drives the REST API through a small Python script and MCPBYTES_API_KEY. Most agents (Codex, Gemini CLI, Copilot, Cursor, OpenCode, pi and more) read it from ~/.agents/skills/; the skill page has every agent's folder, Claude Code's included.
mkdir -p ~/.agents/skills/mcpbytes
curl -fsSL https://mcpbytes.com/skills/mcpbytes/mcpbytes.tar.gz \
| tar -xz -C ~/.agents/skills/mcpbytes