Sponsor MCPSafe10 founding slots
Registry/Turjuman MCP Server

Turjuman MCP Server

Verified

Open-source, self-hosted translation management driven by an MCP server — agents do the translating — with a thin developer CLI for locale files. Serverless on AWS (Lambda Function URLs + a single DynamoDB table). No web UI, no built-in MT engine.

MIT
other
other
1stars
Scanned Oct 2, 2026
RepositoryGITHUB
Automated scan (limited checks) · 2026-10-02

This grade comes from an automated MCPSafe scan of the server's JavaScript, TypeScript and Python source on 2026-10-02. It read the whole repository (184 files). It checks for leaked credentials, shell or code injection from function inputs, unsafe deserialization, malware signatures, install-time scripts, and weak password handling. It does not check for path traversal, server-side request forgery, prompt injection in tool descriptions, network exposure, SQL injection, cross-site scripting, or vulnerable dependencies. It has not been manually reviewed, and the code may have changed since the scan.

A+100%
Scanned 1w ago

Excellent Security

Vulnerabilities Found
0Crit
0High
0Med
0Low
0Info

Trust Score 74

Review required
Trust grade B

Trust is stricter than security: it combines reviewed security, MCP capability risk, supply-chain metadata, quality, popularity, freshness, and penalties for unknowns.

Security
100
MCP risk
52
Supply chain
92
Maintenance
55
Docs
100
Freshness
80
Risk traits
Runs shell commands
Filesystem access
Network/API access
Requires secrets
Why it scores well
  • • No reviewed severe vulnerabilities published
  • • Good documentation surface
  • • Solid supply-chain metadata
  • • Recently scanned
What reduces confidence
  • • MCP risk traits: Runs shell commands, Filesystem access, Network/API access

Security ScoreA+

100
out of 100

Vulnerabilities Found

0
Crit
0
High
0
Medi
0
Low
0
Info
Last scanned: 10/2/2026

Quality ScoreC

60
out of 100
55
Maint.
3
Popular
100
Docs
72
Compat
Maintenance55%
Popularity3%
Documentation100%
Compatibility72%

Maintenance55

Unknown
Commit Frequency65%
Release Frequency35%
Issue Response65%

Popularity3

1
Stars
0
Downloads
0
Forks
Stars Score8%
Downloads Score0%
Forks Score0%

Documentation100

README Quality100%

Available Documentation

API DocsExamplesChangelog

Compatibility72

MCP Spec Compliance80%
Transport Support75%

Features

TypeScript

Supported Transports

STDIO

Vulnerabilities(0)

This grade comes from an automated scan. Individual findings from automated scans are not published.

READMETurjuman MCP Server

View source

<p align="center">

<img src="assets/turjuman-mark.svg" alt="Turjuman" width="96" height="96" />

</p>

Turjuman

Open-source, self-hosted translation management — managed by your AI agent.

Turjuman is a lightweight, open-source alternative to commercial translation-management

SaaS. Instead of a heavy web dashboard, you manage projects, keys, locales and

translations through an MCP server connected to Claude Code (or any MCP client/agent).

A thin developer CLI handles the deterministic file work — pulling/pushing locale

files in your repo and CI.

It runs on a serverless AWS stack (Lambda + DynamoDB) that costs ~nothing to host and

fits comfortably in the free tier. No always-on servers, no Cognito.

plaintext
Claude Code / agent ──Streamable HTTP + API key──┐
Developer CLI / CI ──REST + API key──────────────┤
                                                 ▼
                          Lambda Function URLs ──► DynamoDB (single table)

Why MCP-first?

Translation management is mostly conversation + judgement: "add a French locale", "translate

the untranslated checkout strings", "what does cart.empty say in German?". An agent with the

right tools does this naturally. The connected LLM does the translating itself — there's

no separate machine-translation engine to pay for or configure.

The CLI exists for the things you should not hand to an LLM: deterministically exporting a

JSON/YAML file, downloading translations, and syncing them in CI.

Features (v1)

  • MCP server with 36 tools: projects, locales, keys (with descriptions/context), translations,

bulk fill, review workflow, and full user/member/API-key administration (incl. key revocation).

  • First-class RBAC. Global roles (OWNER/ADMIN/MEMBER) + per-project roles

(MANAGER/EDITOR/DEVELOPER/VIEWER). High-privilege users manage everyone else's access.

  • Glossary + translation memory, and webhooks (HMAC-signed, via DynamoDB Streams) for change events.
  • API-key auth — simple bearer tokens, stored hashed. (OAuth/Cognito is a future option.)
  • Developer CLI — login, init, pull, push, build with multi-target config and adapters

for JSON (nested/flat), YAML, Flutter ARB, Java .properties, CSV, Android strings.xml, and iOS

.strings/.stringsdict (ICU-canonical plurals converted to each format's native form).

  • DynamoDB single-table design, on-demand billing. Multi-tenant-ready (orgId on every record).

Repository layout

| Package | What it is |

|---|---|

| packages/core | Domain model, DynamoDB repository, RBAC, services, format adapters (the shared brain) |

| packages/mcp-server | Stateless Streamable HTTP MCP server → Lambda |

| packages/api | REST API for the CLI/CI → Lambda, plus the webhook dispatcher |

| packages/cli | The turjuman developer CLI (locale-file sync + first-owner bootstrap) |

Try it locally

The fastest way to see Turjuman work — everything runs against a local

LocalStack (needs Docker + Node 24+), no cloud account needed.

Turjuman uses pnpm (pinned via package.json's packageManager field); run

corepack enable once to activate it.

bash
pnpm install && pnpm run build
pnpm run localstack:up            # start the shared LocalStack on :4566
cp .env.example .env             # point the toolchain at LocalStack

# deploy into LocalStack with hot reload; prints the MCP/REST URLs + a fresh API key
pnpm run dev

pnpm run dev runs the real Lambda runtime in LocalStack (so DynamoDB Streams → webhooks fire too) and

hot-reloads your edits. Point your MCP client at the printed MCP URL with the printed API key and start

talking to it.

Self-host on AWS

Status: the CDK stack is conventional but has **not yet been verified end-to-end against a
live AWS account** (see ROADMAP). Use the local path above to evaluate; treat the
cloud deploy as beta and please report issues.

1. Deploy to your AWS account

Instantiate the TurjumanStack in a tiny CDK app and deploy it with the AWS CDK CLI. The construct

vendors its Lambda bundles, so there's no SAM CLI and no repo clone (see

Self-hosting for the full walkthrough and config):

bash
npm install @turjuman/aws-cdk aws-cdk-lib constructs
cdk bootstrap   # once per account+region (standard CDK bootstrap)
cdk deploy      # prints McpUrl / ApiUrl / TableName as stack outputs

@turjuman/aws-cdk is standalone-installable, so the day-to-day turjuman developer CLI stays a

lean, AWS-free install.

2. Your first owner + API key

Once the stack is up, create the first owner over HTTP and capture its key — printed once, and

saved to ~/.turjuman/auth.json so you're logged in:

bash
turjuman bootstrap --url <ApiUrl> --email you@example.com --name "Your Name"

It refuses to create a second owner once the deployment has users (returns 409), so re-running it

is safe.

3. Connect Claude Code (MCP)

Add to your .mcp.json (see .mcp.json.example):

json
{
  "mcpServers": {
    "turjuman": {
      "type": "http",
      "url": "<McpUrl>",
      "headers": { "Authorization": "Bearer <your-api-key>" }
    }
  }
}
Keep your key out of version control. .mcp.json is often committed — prefer referencing the
token via an environment variable / secret manager rather than pasting the literal key. If a key
ever leaks, revoke it immediately with the revoke_api_key tool.

Then just ask: *"Create a project called Web App with base locale en, add fr and es, and

translate everything into French."*

4. Sync files in your repo (CLI)

bash
pnpm dlx turjuman login --url <ApiUrl> --key <your-api-key>
pnpm dlx turjuman init --project <proj_id> --format json-nested --path "locales/{locale}.json"
pnpm dlx turjuman pull     # write locale files from Turjuman
pnpm dlx turjuman push     # upload source keys / translations

Documentation

The full documentation lives in `docs/` and is published as a documentation site with

Mintlify — one source that serves human readers, external agents (Mintlify

auto-generates llms.txt / llms-full.txt and an "open in Claude/ChatGPT" menu per page), and the

agents working in this repo. Start here:

Development

bash
pnpm install
pnpm run build
pnpm test            # unit tests (hermetic)

# integration tests against an emulated AWS (LocalStack DynamoDB):
pnpm run localstack:up && pnpm run test:integration && pnpm run localstack:down

# full deployed end-to-end (SAM stack on LocalStack: Lambda Function URLs +
# the real DynamoDB Streams -> webhook flow). Just needs Docker:
pnpm run test:e2e

Formatting & linting

Formatting and linting are handled by Biome (a single, fast

Rust-based replacement for Prettier + ESLint), configured in biome.json:

bash
pnpm run check         # format + lint, report only
pnpm run check:write   # apply formatting + safe lint fixes
pnpm run format        # format only
pnpm run lint          # lint only

You rarely run these by hand. A pre-commit hook auto-formats staged files, CI

runs biome ci ., and — since this repo is developed primarily with Claude Code —

a PostToolUse hook (.claude/hooks/biome-format.sh) auto-formats each file as

the agent edits it. The generated docs/api-reference/openapi.json snapshot is

owned by gen:openapi and excluded from Biome.

See Contributing for the full testing guide (unit,

LocalStack integration, and deployed end-to-end), which also runs in CI.

License

MIT

Embed Security Badge

Add this badge to your README or documentation

Turjuman MCP Server MCPSafe Security
[![Turjuman MCP Server MCPSafe Security](https://api.mcpsafe.org
/api/badge/turjuman-mcp-server.svg)](https://mcpsafe.org/registry/turjuman-mcp-server)
Need more customization options?Badge Documentation

Server Information

Source
GITHUB
Language
other
License
MIT
Transport
STDIO
Added
Aug 11, 2026
Updated
Oct 1, 2026