Skip to content

Connecting an MCP client

The oHallo MCP server is a standard Streamable HTTP server. Any MCP client that speaks the HTTP transport connects to it directly: give the client the endpoint URL and an Authorization header carrying your API key. This page covers the client configuration for that, the packaged Claude Desktop extension, and how a coding agent pulls current oHallo documentation from Context7.

PropertyValue
TransportStreamable HTTP
EndpointPOST https://api.ohallo.eu/api/mcp
Client transport typehttp, which Claude Code also accepts spelled out as streamable-http
AuthenticationAuthorization: Bearer sf_live_v1_...
Required request headersContent-Type: application/json and Accept: application/json, text/event-stream
Response shapeA single JSON body per request
Session handlingStateless. Each request stands on its own, so a client can reconnect or retry at any point
MCP-Protocol-Version headerOptional. The version is negotiated at initialize; sending a supported value on later requests is also accepted

The stateless design keeps client configuration down to two values, the URL and the header. Authentication is a static Bearer header rather than an OAuth flow, so a client is connected on its first call.

Terminal window
claude mcp add --transport http ohallo https://api.ohallo.eu/api/mcp \
--header "Authorization: Bearer sf_live_v1_..."
FlagEffect
-t, --transportTransport type: stdio, sse, or http. Defaults to stdio, so http is required here
-H, --headerSets a request header. Repeat the flag for more than one header
-s, --scopeWhere the entry is stored: local (default), user, or project

Use --scope user to make the server available in every project on the machine. --scope project writes the entry to .mcp.json in the project root, which is normally committed, so keep a literal key out of that scope or reference it through an environment variable (see below).

Confirm the connection with claude mcp list, which health-checks each configured server, and inspect a single entry with claude mcp get ohallo.

Clients that keep MCP servers in a config file take the same three inputs: the transport type, the URL, and the headers. This is the shape Claude Code writes to .mcp.json, and it maps directly onto the equivalent block in other Streamable HTTP clients:

{
"mcpServers": {
"ohallo": {
"type": "http",
"url": "https://api.ohallo.eu/api/mcp",
"headers": {
"Authorization": "Bearer sf_live_v1_..."
}
}
}
}

For a .mcp.json that is shared with a team, keep the key in the environment and reference it. Claude Code expands ${VAR} and ${VAR:-default} in the url, headers, command, args, and env fields:

{
"mcpServers": {
"ohallo": {
"type": "http",
"url": "https://api.ohallo.eu/api/mcp",
"headers": {
"Authorization": "Bearer ${OHALLO_API_KEY}"
}
}
}
}

A variable that is unset is reported as a warning against that server in claude mcp list, and project-scoped servers are held at “Pending approval” until they are approved in an interactive session.

For Claude Desktop, oHallo publishes a packaged extension at ohallo.ai/extensions. Open the downloaded .mcpb file with Claude Desktop to install it, then enter your API key when prompted. The server URL is pre-filled with the production endpoint.

The extension is a thin stdio-to-HTTP proxy: Claude Desktop talks to it over stdio, and it forwards tools/list and tools/call to https://api.ohallo.eu/api/mcp verbatim with your key attached. All tool definitions live server-side, so tools added to the oHallo MCP server become available in Claude Desktop as soon as they ship, and the installed extension keeps working unchanged.

The handshake is a plain HTTP request, so curl is enough to prove the key and the endpoint before any client is configured. Send both media types in Accept, which is what the Streamable HTTP transport requires and what MCP client libraries send by default:

Terminal window
curl -sS https://api.ohallo.eu/api/mcp \
-H "Authorization: Bearer sf_live_v1_..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }'

A successful call returns the tool catalogue in result.tools. Transport-level failures arrive as HTTP status codes with a JSON-RPC error body, ahead of any tool dispatch:

StatusCause
401The API key is missing, malformed, expired, or revoked. The body carries error_type: authentication_error
406The Accept header must list both application/json and text/event-stream
400The MCP-Protocol-Version header names a version outside the supported set

Errors raised by a tool itself, including permission_denied for a missing scope, come back inside a successful JSON-RPC response. See Errors for that shape.

The key you hand the client carries its scopes into every tool call, so an MCP client can do exactly what the same key can do over REST. Grant kb:read and conversations:read for a client that answers questions from your knowledge base and conversation history; add the matching :write scopes only when the client should act. A tool call that lacks its required scope returns permission_denied and leaves your data untouched. The full catalogue is in Authentication.

A key can also be restricted to a single brand or workspace, which is the cleanest way to point a client at one slice of your account.

The oHallo developer documentation is indexed on Context7, so a coding agent with the Context7 MCP server configured can pull current oHallo reference material into its own context without being handed the pages by a person.

FieldValue
Library ID/llmstxt/developers_ohallo_ai_llms-full_txt
Sourcehttps://developers.ohallo.ai/llms-full.txt

Reference the library ID directly to skip the resolution step:

Using context7 library /llmstxt/developers_ohallo_ai_llms-full_txt,
show how to authenticate an API key request and list conversations.

An agent without Context7 can read the same material over HTTP. Starlight publishes three machine-readable views of this site:

URLContents
https://developers.ohallo.ai/llms.txtIndex that points at the two full-text variants
https://developers.ohallo.ai/llms-full.txtThe complete documentation in a single file
https://developers.ohallo.ai/llms-small.txtA compact variant with non-essential content removed, for smaller context windows