MCP server for Atlassian Confluence Data Center - access and manage content
LingoHub MCP by usefulapi is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
MCP server for LingoHub — localization projects, resources, exports and repository pushes.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http lingohub-mcp-by-usefulapi https://lingohub.usefulapi.io/mcp
# 2 — ask your agent for something these tools do
# lingohub_list_projects, lingohub_get_project, lingohub_get_project_status and 11 more
LingoHub MCP by usefulapi costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http lingohub-mcp-by-usefulapi https://lingohub.usefulapi.io/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
14 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List every Lingohub project this API key can see (owned and shared, across workspaces). Each entry has the title, its links and the workspace_url + project_url slugs that every other tool needs. GET /v1/projects.
No parameter schema on file.
One project: title, description, owner email, configured locales (project_locales), timestamps and links. GET /v1/{workspace_url}/projects/{project_url}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
Translation status of one project: each resource file with per-locale segment counts (NOT_TRANSLATED, DRAFT, TRANSLATED, APPROVED, ...), failing quality checks, the export formats it supports and whether a Git repository is connected and can be pushed to. GET .../projects/{project_url}/status.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| branch | string | no | Project branch name. Default: the project's default branch. An unknown branch is HTTP 422. |
Translation progress of every project in one workspace: title, app URL, total segment count and per-locale counts by status (NOT_TRANSLATED, DRAFT, TRANSLATED, PREFILLED, APPROVED). GET /v1/{workspace_url}/projects/status.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
WRITE: create a new localization project in a workspace (needs settings-management permission on the key). Returns the new project with its links. It adds a project and changes nothing existing; repeating the call can create a second project. POST /v1/{workspace_url}/projects.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| title | string | yes | Project title. |
| resource_type | string | yes | Resource file type, which fixes the import/export format (e.g. standard_json, i18next_json, android_xml, ios_strings, gettext_po, xliff). |
| source_language | string | yes | Source language code, e.g. en or en-GB. |
| target_languages | array | no | Target language codes, e.g. ["de","fr"]. |
| description | string | no | Optional description, up to 512 characters. |
List a project's resource files: name, locale and links (including a download link). GET .../projects/{project_url}/resources.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| locale_in_file_name | string | no | Whether file names carry the locale: ALL (default), TARGETS or NONE. |
| add_iso2_slug | boolean | no | Always add the iso2_slug parameter to the rendered file URLs. |
| branch | string | no | Project branch name. Default: the project's default branch. An unknown branch is HTTP 422. |
Download one resource file as text, in one language. file_name is the file name as list_resources shows it (the folder goes in path). Long files are cut at 40000 characters (truncated: true); use request_export for a full copy. GET .../projects/{project_url}/resources/{file_name}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| file_name | string | yes | Resource file name, e.g. messages_de.properties. |
| path | string | no | Folder of the file, when the file name alone is not unique. |
| language | string | no | Locale code to export (overrides the locale in the file name), e.g. de. |
| branch | string | no | Project branch name. Default: the project's default branch. An unknown branch is HTTP 422. |
| blank_content_handling | string | no | What to export for a segment with no translation in the target language. |
| filter_by_status | string | no | Only export target segments in this state. |
| html_encoding | string | no | How HTML in a segment is escaped. |
WRITE: upload one text resource file (JSON, properties, XLIFF, PO, ...) into a project. The language comes from the file name or from language. The import flags decide whether existing segments are changed or deactivated: with updating or deactivation on, translations already in Lingohub can be overwritten or switched off, so state the flags you want. Never retried. POST .../projects/{project_ur
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| file_name | string | yes | File name with extension, e.g. en.json. |
| content | string | yes | The file text (UTF-8), up to 1000000 characters. |
| path | string | no | Folder the file is uploaded to; set it when the file name collides with another file (HTTP 406). |
| language | string | no | Locale of this file (overrides the locale in the file name), e.g. de. |
| branch | string | no | Project branch name. Default: the project's default branch. An unknown branch is HTTP 422. |
| source_create_new | boolean | no | If this is a source-language file: create new segments. |
| source_update_existing | boolean | no | If this is a source-language file: update changed segments. |
| source_deactivate_missing | boolean | no | If this is a source-language file: deactivate segments missing from the file. |
| target_create_new | boolean | no | If this is a target-language file: create new segments. |
| target_update_existing | boolean | no | If this is a target-language file: update changed translations (overwrites existing ones). |
| target_deactivate_missing | boolean | no | If this is a target-language file: deactivate segments missing from the file. |
WRITE, DESTRUCTIVE: delete a resource container: the source-language file AND all its target-language files with their translations. file_name and path must address the source-language file. This cannot be undone through the API. Never retried. DELETE .../projects/{project_url}/resources/{file_name}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| file_name | string | yes | File name of the SOURCE-language file, as list_resources shows it. |
| path | string | no | Folder of the source-language file. |
| branch | string | no | Project branch name. Default: the project's default branch. An unknown branch is HTTP 422. |
Start an asynchronous export of a project's resource files as a ZIP. It creates an export job and changes no project data. Returns the export id; poll get_export until its status is SUCCESS to get the download URL. Without filters it exports every file and language. POST .../projects/{project_url}/exports.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| file_paths | array | no | Only these files, with the locale placeholder as shown in Lingohub, e.g. config/locales/%{locale}/messages.yml. |
| languages | array | no | Only these language codes, e.g. ["en","de"]. |
| export_format | string | no | Override the export format of the project type. |
| branch | string | no | Project branch name. Default: the project's default branch. An unknown branch is HTTP 422. |
Status of an export started with request_export: overall and per-file status (NEW, SCHEDULED, PROCESSING, SUCCESS, SKIPPED, ERROR), error details and, when done, the pre-signed download URL of the ZIP. GET .../projects/{project_url}/exports/{export_id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| export_id | string | yes | Export id from request_export, e.g. reg_18USq6822XIv-19847171. |
List the context images (screenshots that show translators where a text is used) of a project, with connected-segment counts and processing status. Paginated; page is zero-based. GET .../projects/{project_url}/contextImages.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| page | integer | no | Zero-based page index (default 0). |
| size | integer | no | Results per page, 1-100. |
WRITE, DESTRUCTIVE: delete one context image and its connections to text segments. Never retried. DELETE .../projects/{project_url}/contextImages/{image_id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| image_id | string | yes | Context image id from list_context_images, e.g. ci_18USq6822XIv-19847171. |
WRITE: push the project's resource files to its linked Git repository (GitHub, GitLab, Bitbucket or Azure DevOps; the connection must already exist). Depending on push_type this commits to a branch or opens a pull request, so it changes the user's repository. Never retried. POST .../projects/{project_url}/push.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| workspace_url | string | yes | Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url. |
| project_url | string | yes | Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url. |
| push_type | string | no | PUSH commits directly; PULL_REQUEST opens a pull/merge request. Default: the connection's setting. |
| branch | string | no | Branch to push to. Default: the repository connection's default branch. |
| commit_message | string | no | Commit message. Default: generated. |
| commit_description | string | no | Extended commit description. |
| path | string | no | Only push resource files under this path. |
| language | string | no | Only push this language. |
| pull_request_branch | string | no | Branch to create for the pull request (PULL_REQUEST only). |
| pull_request_title | string | no | Pull request title (PULL_REQUEST only). |
| pull_request_description | string | no | Pull request description (PULL_REQUEST only). |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install LingoHub MCP by usefulapi or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| lingohub_list_projects | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| lingohub_get_project | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| lingohub_get_project_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| lingohub_get_workspace_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| lingohub_create_project | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| lingohub_list_resources | untrusted-input | untrusted-input: keyword "download", declares openWorldHint: true (interacts with entities outside the server) |
| lingohub_download_resource | untrusted-input | untrusted-input: keyword "download", declares openWorldHint: true (interacts with entities outside the server) |
| lingohub_upload_resource_file | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| lingohub_delete_resource | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| lingohub_request_export | untrusted-inputexternal-sink | untrusted-input: keyword "download"; external-sink: declares readOnlyHint: false, openWorldHint: true |
| lingohub_get_export | untrusted-input | untrusted-input: keyword "download", declares openWorldHint: true (interacts with entities outside the server) |
| lingohub_list_context_images | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| lingohub_delete_context_image | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| lingohub_push_to_repository | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.8.3.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish LingoHub MCP by usefulapi can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.