Appa Tools documentation for MCP Studio, including setup, guides, concepts, and API-related reference content.

Skip to main content

Connect your client

Every client needs the same two things: the endpoint and your API key sent as a bearer token.

URL:     https://appatools.com/mcp-studio/api/headless/mcp
Header: Authorization: Bearer msk_live_your_key

Create the key in Account > API Keys. It is shown once, so copy it before you close the dialog. Keep it out of files you commit; where a client can read the key from an environment variable, the examples below do that.

Claude Code​

claude mcp add --transport http headless-context \
https://appatools.com/mcp-studio/api/headless/mcp \
--header "Authorization: Bearer msk_live_your_key"

Run /mcp in a session to check that headless-context is connected.

Claude Desktop​

Claude Desktop's connector settings support OAuth but not a custom header, so connect through mcp-remote, which runs locally and forwards the header. Open Settings > Developer > Edit Config and add:

{
"mcpServers": {
"headless-context": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://appatools.com/mcp-studio/api/headless/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer msk_live_your_key"
}
}
}
}

The header value goes in env because some systems split arguments at the space in Bearer msk_live_.... Restart Claude Desktop afterwards. This needs Node.js installed.

Cursor​

Add the server to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:

{
"mcpServers": {
"headless-context": {
"url": "https://appatools.com/mcp-studio/api/headless/mcp",
"headers": {
"Authorization": "Bearer ${env:MCP_STUDIO_API_KEY}"
}
}
}
}

Set MCP_STUDIO_API_KEY in the environment Cursor starts from, or replace the placeholder with the key itself in a file you do not commit.

Codex​

The Codex CLI, the Codex IDE extension, and the ChatGPT desktop app share ~/.codex/config.toml:

[mcp_servers.headless-context]
url = "https://appatools.com/mcp-studio/api/headless/mcp"
bearer_token_env_var = "MCP_STUDIO_API_KEY"

Then set the variable in the shell Codex starts from:

export MCP_STUDIO_API_KEY="msk_live_your_key"

bearer_token_env_var takes the name of an environment variable, not the key. If you put the key there, Codex looks for a variable with that name, finds none, and skips the server. The ChatGPT desktop app may not see variables from a terminal profile; in that case send the header directly:

[mcp_servers.headless-context]
url = "https://appatools.com/mcp-studio/api/headless/mcp"
http_headers = { "Authorization" = "Bearer msk_live_your_key" }

Open a new session after adding it, then type /mcp to see the tools.

VS Code​

Add the server to .vscode/mcp.json. VS Code prompts for the key the first time and stores it for you:

{
"inputs": [
{
"type": "promptString",
"id": "mcp-studio-api-key",
"description": "MCP Studio API key (msk_live_...)",
"password": true
}
],
"servers": {
"headless-context": {
"type": "http",
"url": "https://appatools.com/mcp-studio/api/headless/mcp",
"headers": {
"Authorization": "Bearer ${input:mcp-studio-api-key}"
}
}
}
}

Other clients​

Any client that supports streamable HTTP and custom headers works. Use the URL and header at the top of this page. A client that can only connect with OAuth or with no authentication, such as ChatGPT on the web, cannot send an API key and cannot connect.

To check the connection without a client:

curl -s https://appatools.com/mcp-studio/api/headless/mcp \
-H "Authorization: Bearer msk_live_your_key" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_servers","arguments":{}}}'

If it does not connect​

What you seeWhat it means
HTTP 401, "needs an MCP Studio API key"No msk_live_ key reached the server. Check the header name and the Bearer prefix. A server access token (mcps_live_) is not accepted here.
HTTP 401, "That MCP Studio API key is not valid"The key was mistyped or has been revoked. Create a new one.
HTTP 429More than 120 requests in a minute. Wait for the time in Retry-After.
Connected, but no toolsCheck your client's own log first. In Codex, the usual cause is a key placed in bearer_token_env_var.