Skip to main content
Stringhive Overview & Setup

MCP Server: Overview & Setup

The Stringhive MCP server lets AI coding assistants talk to your translation data directly.

Use cases

  • Ask your AI assistant "what locales are missing translations in the my-app hive?" and get an answer
  • Push new source strings after adding a feature, without leaving your editor
  • Pull translated files and check completion before a release

Connecting

Stringhive exposes a remote MCP server over Streamable HTTP:

https://www.stringhive.com/mcp

There is nothing to install and no local process to run. Authentication uses the same API tokens as the REST API: create one in Settings > API Tokens with the abilities you need (read for browsing, write for pushing strings or translations) and send it as a standard Authorization: Bearer header.

Authorization: Bearer shv_yourtokenhere

Claude Code

One command, using the built-in HTTP transport:

claude mcp add --transport http stringhive https://www.stringhive.com/mcp \
  --header "Authorization: Bearer shv_yourtokenhere"

Add --scope user to make it available in every project, or --scope project to write it to .mcp.json for your team. Verify with claude mcp list, which should report ✔ Connected. Project-scoped servers show ⏸ Pending approval until you approve them once inside claude.

Codex CLI

In ~/.codex/config.toml. bearer_token_env_var names the environment variable Codex reads the token from, so the token itself stays out of the config file:

[mcp_servers.stringhive]
url = "https://www.stringhive.com/mcp"
bearer_token_env_var = "STRINGHIVE_TOKEN"

Cursor

In .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "stringhive": {
      "url": "https://www.stringhive.com/mcp",
      "headers": {
        "Authorization": "Bearer shv_yourtokenhere"
      }
    }
  }
}

Cursor also resolves ${env:NAME} inside headers, so you can write "Bearer ${env:STRINGHIVE_TOKEN}" and keep the token out of a committed mcp.json.

VS Code (GitHub Copilot)

In .vscode/mcp.json. Using an input keeps the token out of the committed file, VS Code prompts for it once and stores it in the secret store:

{
  "inputs": [
    {
      "id": "stringhive-token",
      "type": "promptString",
      "description": "Stringhive API token",
      "password": true
    }
  ],
  "servers": {
    "stringhive": {
      "type": "http",
      "url": "https://www.stringhive.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:stringhive-token}"
      }
    }
  }
}

Claude Desktop

Claude Desktop's custom connectors expect OAuth, so bearer tokens go through the mcp-remote bridge. Add to claude_desktop_config.json:

{
  "mcpServers": {
    "stringhive": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.stringhive.com/mcp",
        "--header",
        "Authorization:${STRINGHIVE_AUTH}"
      ],
      "env": {
        "STRINGHIVE_AUTH": "Bearer shv_yourtokenhere"
      }
    }
  }
}

Two things matter here and are easy to get wrong:

  • The header must be passed with --header. mcp-remote does not read an environment variable on its own, it only expands ${...} inside the argument you give it. Setting the env var alone results in a 401.
  • The --header argument must contain no spaces at all, which is why the word Bearer lives in the environment variable rather than in the argument. Claude Desktop on Windows and Cursor do not escape spaces correctly when spawning npx and would pass a mangled header.

Restart Claude Desktop and the Stringhive tools appear.

Other MCP clients

Any client with remote MCP support works. Point it at https://www.stringhive.com/mcp, choose the http (Streamable HTTP) transport, and set the Authorization: Bearer header. Only clients with no remote transport at all need the mcp-remote bridge shown above.

Verifying the connection

A plain curl tells you whether your token is accepted, before you debug the client:

curl -sS https://www.stringhive.com/mcp \
  -H "Authorization: Bearer shv_yourtokenhere" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

You should get back a JSON-RPC result listing the tools. A 401 with {"message":"Unauthenticated."} means the token is missing, wrong, or expired.

Troubleshooting

The client tries to open a browser for login. It saw the WWW-Authenticate header on a 401 and started an OAuth flow. Stringhive does not use OAuth. This means your token never reached the server, check that the header is actually configured.

405 Method Not Allowed. The client is configured for the older SSE transport and is opening a GET connection. Stringhive speaks Streamable HTTP, which is POST only. Set the transport to http, not sse.

Tools are listed but every call fails. The token is valid but lacks the ability. read covers browsing and exporting, write is required for push_strings and import_translations.

Permissions

The MCP server respects the same token abilities and Hive restrictions as the REST API. A read-only token can browse and export but can't push strings. A token scoped to specific Hives can't see others.