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-remotedoes 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
--headerargument must contain no spaces at all, which is why the wordBearerlives in the environment variable rather than in the argument. Claude Desktop on Windows and Cursor do not escape spaces correctly when spawningnpxand 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.