PacketStream documentation
Connect an MCP client
Set up Claude Code, Codex CLI, Cursor, VS Code, Claude Desktop, and other MCP clients to use PacketStream's remote MCP server with your API key.
Any MCP client that supports remote Streamable HTTP servers and lets you set an Authorization header can connect. Replace YOUR_API_KEY with your key from the dashboard.
What we tested on October 7, 2026:
- Tested against the live server: Claude Code 2.1.284, Codex CLI 0.159.0, and the
mcp-remote0.14.2 bridge that the Claude Desktop setup runs. - Not tested by us: the Claude Desktop app itself, Cursor, VS Code, and the other clients below. Their steps follow each vendor’s documentation as of October 2026. Check your client’s current documentation if a step does not match.
Claude Code
Run this in a terminal:
export PACKETSTREAM_API_KEY="YOUR_API_KEY"
claude mcp add --transport http --scope user packetstream https://api.packetstream.io/v1/mcp \
--header 'Authorization: Bearer ${PACKETSTREAM_API_KEY}'
claude mcp list
- The single quotes store the variable name, not the key, in Claude Code’s settings. Add the
exportline to your shell profile so the variable is set wherever Claude Code starts. - Keep
--headerafter the URL. Placed before the server name, the command fails withmissing required argument 'name'. --scope usermakes the server available in every project. Without it, the server is added to the current project only.claude mcp listshould showpacketstreamas connected.
To share the server with a team, commit a .mcp.json file at the repository root. Each person sets PACKETSTREAM_API_KEY, and Claude Code asks them to approve the server:
{
"mcpServers": {
"packetstream": {
"type": "http",
"url": "https://api.packetstream.io/v1/mcp",
"headers": { "Authorization": "Bearer ${PACKETSTREAM_API_KEY}" }
}
}
}
Codex CLI
Codex reads the key from an environment variable and sends it as the bearer token, so set the variable to the bare key:
export PACKETSTREAM_API_KEY="YOUR_API_KEY"
codex mcp add packetstream --url https://api.packetstream.io/v1/mcp \
--bearer-token-env-var PACKETSTREAM_API_KEY
The command writes this to ~/.codex/config.toml, which you can also edit by hand:
[mcp_servers.packetstream]
url = "https://api.packetstream.io/v1/mcp"
bearer_token_env_var = "PACKETSTREAM_API_KEY"
- Add the
exportline to your shell profile. The variable must be set wherever Codex starts. codex mcp listshows the saved configuration but does not test the connection. To check the key, use the freetools/listcall.- Apps that read the same file, such as the ChatGPT desktop app, see the variable only if it is in their own launch environment. An app opened from the Dock, the Start menu, or a desktop launcher usually does not see variables exported in a shell profile.
Cursor
Add this to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json for one project:
{
"mcpServers": {
"packetstream": {
"url": "https://api.packetstream.io/v1/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
In a project file that you commit, write "Bearer ${env:PACKETSTREAM_API_KEY}" instead, so the key stays in your environment.
VS Code
Add this to .vscode/mcp.json in a workspace, or run MCP: Open User Configuration to add it for every workspace. VS Code asks for the key once and stores it securely:
{
"inputs": [
{
"type": "promptString",
"id": "packetstream-api-key",
"description": "PacketStream API key",
"password": true
}
],
"servers": {
"packetstream": {
"type": "http",
"url": "https://api.packetstream.io/v1/mcp",
"headers": { "Authorization": "Bearer ${input:packetstream-api-key}" }
}
}
}
Claude Desktop
Claude Desktop’s configuration file starts local servers only, so it connects through the community mcp-remote bridge, which needs Node.js. Open Settings > Developer > Edit Config, add this to claude_desktop_config.json, and restart Claude Desktop:
{
"mcpServers": {
"packetstream": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.packetstream.io/v1/mcp",
"--transport",
"http-only",
"--header",
"Authorization:${PACKETSTREAM_AUTH_HEADER}"
],
"env": { "PACKETSTREAM_AUTH_HEADER": "Bearer YOUR_API_KEY" }
}
}
}
- The header argument has no space after the colon on purpose, because some systems split arguments at spaces.
mcp-remotefills in the variable fromenv. - The Code tab in Claude Desktop uses Claude Code’s settings instead. Set it up as in Claude Code.
Other clients
Clients that support remote HTTP servers with custom headers usually take a configuration like this. Key names vary by client:
{
"mcpServers": {
"packetstream": {
"type": "http",
"url": "https://api.packetstream.io/v1/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Choose the client’s Streamable HTTP transport, not SSE: the server never streams, and a GET returns 405. Two clients that default to SSE:
- Cline needs
"type": "streamableHttp". Withouttype, it uses SSE. - Gemini CLI needs
httpUrlinstead ofurl. In Gemini CLI,urlselects SSE.
If your client runs as a local (stdio) server only, use the mcp-remote bridge shown under Claude Desktop.
Clients that cannot connect
- ChatGPT on the web cannot send an API key, so it cannot connect.
- Claude custom connectors (added under Customize > Connectors on claude.ai, Claude Desktop, or mobile) can send your key only through Anthropic’s request-header authentication. Anthropic offers it as a beta that is not available to every organization, and we have not tested it. Without it, connectors expect an OAuth sign-in, which this server does not offer. Use one of the setups above instead.
- Web pages and other browser-based clients cannot call the server: it sends no CORS headers. Never put your key in a web page.
Troubleshooting
- HTTP 401 or “failed to connect”. The key is missing or wrong. If the key comes from an environment variable, check that the variable is set where the client starts. The server has no OAuth sign-in, so a sign-in prompt will not help.
- Claude Code reports “Dynamic Client Registration rejected (HTTP 404)”. The server was added without the
--headeroption, so Claude Code tried an OAuth sign-in. Remove the server and add it again as shown above. - HTTP 403 “Invalid Origin header”. The client sent a malformed
Originheader. See the Origin rules. - HTTP 405. The client is using SSE or GET. Switch it to Streamable HTTP.
- Check the key on its own with the free
tools/listcall.