Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Legesher

by legesherversion 0.3.0i★ –iRuns on your computer
Registry nameio.github.legesher/legesher-mcp

Install

Overview

Description from the maker (original English)

Translate Python between English keywords and your language, with round-trip verification.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Other

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: LEGESHER_MCP_LOG_LEVEL

You need

  • PyPIPython’s uv installed (for the uvx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "legesher": {
      "command": "uvx",
      "args": [
        "legesher-mcp"
      ],
      "env": {
        "LEGESHER_MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add legesher --env LEGESHER_MCP_LOG_LEVEL=your-value -- uvx legesher-mcp

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "legesher": {
      "command": "uvx",
      "args": [
        "legesher-mcp"
      ],
      "env": {
        "LEGESHER_MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "legesher": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "legesher-mcp"
      ],
      "env": {
        "LEGESHER_MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • LEGESHER_MCP_LOG_LEVEL env
    Log level for troubleshooting. Quiet (WARNING) when unset.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account legesher, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Otheri

  • More stars than 0% of the other 32684 servers in this category
  • Published to the registry more recently than 91% of the other 32684 servers in this category
  • Basic checks equal to or better than 100% of the other 32684 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Legesher safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.3.0) reached the registry 3 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, Master CSS

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated 2 days ago
Install

Master CSS

by master-co

Inspect Master CSS classes, generated CSS, and project stylesheets from your AI client.

Runs on your computerUpdated today
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

legesher-mcp

The Legesher Model Context Protocol server: the engine's translation capability inside every MCP-capable client — Claude, IDE assistants, agent frameworks — as six coarse, task-shaped tools.

Using the MCP server is free forever (Apache-2.0). The local server runs entirely against the locally installed Legesher engine: it needs no account, and every tool call is served locally. Optional usage telemetry is planned and will be off unless you turn it on; the Privacy section below says exactly what it would send. Some capabilities require a Legesher account on the hosted instance. What the server does is defined by this open package and nothing else.

Tools

ToolWhat it does
translate_to_nativeTranslate Python source into your natural language. Accepts complete files and fragments alike — no separate snippet mode.
translate_to_sourceTranslate native-language code back to English-keyword Python — the form the interpreter, the toolchain, and upstream collaborators use.
explain_in_languageReturn the *engine facts* an assistant needs to explain code in your language: construct-by-construct keyword mappings, a static validation result, and (optionally) the translated source. The model writes the prose; the tool never does.
lookup_keyword_mappingQuick-reference lookup: how do specific terms (or the full mapping) render in a language.
map_existing_codebaseThe legibility report: given a set of files, what would translating this codebase into a language look like — per-file coverage, unmapped constructs, and optionally the translated files.
validate_identifier_translationsCheck proposed identifier translations before recording them: malformed identifiers, unsafe text, names the pack has reserved, drift (one concept, two terms) and collision (two concepts, one term) — against both your existing glossary and the rest of the batch. Comparison is NFKC+casefold, so case variants and decomposed forms count as the same term. Returns the conflict-free subset, NFC-normalized and ready to record.

Notes on shape, straight from the design:

  • Translation X→Y pivots through English (packs are authored against English). The engine has no direct X→Y path; when the pivot is taken the result says so via pivoted: true rather than failing.
  • Validation is static only — compile(), never exec() — submitted code is parsed, never executed.
  • Error results carry a machine code (unsupported_language, language_pack_not_found, invalid_source) and a generic message: no stack traces, no filesystem paths, no echoed source.

Resources

URIContents
legesher://languagesThe language catalog with pack availability.
legesher://languages/{lang}/termsThe full term dictionary (keywords, builtins, exceptions, reserved words) for one language, at the default Python version.
legesher://languages/{lang}/terms/{python_version}The same dictionary pinned to a Python version, for callers on a grammar other than the default.

Prompts

  • explain-in — scaffolds "explain the selected code in {language}", steering the model to explain_in_language first and keeping engine facts distinct from narration.
  • translate-review — walks a source/translated pair: translate, validate, then summarize what changed and what did not map.
  • legibility-report — drives map_existing_codebase over pasted files and renders the coverage report as a stakeholder-readable summary.

Install

The server needs the Legesher engine. Every language pack ships inside legesher-i18n, so nothing else is installed:

# The server (pulls legesher-core and legesher-i18n, packs included)

uvx legesher-mcp

Inside the monorepo workspace every shipped pack is already installed:

uv run legesher-mcp

The server is quiet by default (log level WARNING). For troubleshooting, set LEGESHER_MCP_LOG_LEVEL (DEBUG, INFO, WARNING, ERROR, CRITICAL); unrecognized values fall back to the quiet default. GUI clients do not run your shell, so the variable has to go in the client's own config — every block below shows where.

Client configuration

Claude Desktop

claude_desktop_config.json (Settings → Developer → Edit Config):

{

"mcpServers": { "legesher": { "command": "uvx", "args": ["legesher-mcp"], "env": { "LEGESHER_MCP_LOG_LEVEL": "DEBUG" } } } }

Claude Code
claude mcp add legesher -- uvx legesher-mcp

with troubleshooting logs

claude mcp add legesher --env LEGESHER_MCP_LOG_LEVEL=DEBUG -- uvx legesher-mcp

Cursor

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

{

"mcpServers": { "legesher": { "command": "uvx", "args": ["legesher-mcp"], "env": { "LEGESHER_MCP_LOG_LEVEL": "DEBUG" } } } }

VS Code

.vscode/mcp.json (workspace) or the user-level mcp.json (Command Palette: *MCP: Open User Configuration*):

{

"servers": { "legesher": { "type": "stdio", "command": "uvx", "args": ["legesher-mcp"], "env": { "LEGESHER_MCP_LOG_LEVEL": "DEBUG" } } } }

Zed

settings.json → context_servers:

{

"context_servers": { "legesher": { "command": { "path": "uvx", "args": ["legesher-mcp"], "env": { "LEGESHER_MCP_LOG_LEVEL": "DEBUG" } } } } }

The env block is optional in every case — drop it to keep the quiet default.

Serving over HTTP (self-host / single-user)

stdio is the default and what every client config above spawns. The same server also speaks the MCP streamable HTTP transport, for running it as a long-lived local service or on a machine you control:

legesher-mcp --transport streamable-http                # 127.0.0.1:8000/mcp

legesher-mcp --transport streamable-http --port 9000 legesher-mcp --transport streamable-http --host 192.0.2.7

The posture, deliberately:

  • Loopback by default, never a wildcard. --host defaults to 127.0.0.1, and wildcard binds (0.0.0.0, ::) are refused: this entry ships no authentication, so it binds exactly one interface you name. To serve beyond a machine you trust end to end, put your own auth in front (below).
  • Stateless, plain JSON. Every request is self-contained — no server-held session — and responses are application/json, not SSE.
  • `Origin` validated when present. A browser page from another origin (the DNS-rebinding vector) is rejected with 403; the allowlist derives from the bound interface. MCP clients that send no Origin header are unaffected.

Embedding instead of running: legesher_mcp.server.create_server() builds the complete server from a Backend and an entitlement gate, and create_http_app() returns it as an ASGI app to mount behind your own middleware (TLS, auth, request context for the gate — see legesher_mcp.gate.request_context). The gate is default-open: no deployment code here installs one, gated tools always stay listed, and an unentitled call answers with an actionable message rather than an opaque failure. validate_identifier_translations is permanently free by construction.

Making agent sessions stay localized

The server is the deterministic half; two shipped artifacts carry the policy and playbook half for agent sessions:

  • `templates/AGENTS-template.md` — the language-policy declaration. Copy it into a repository root as AGENTS.md, fill in the declared language, and every AGENTS.md-reading agent (Codex, Cursor, Claude Code, Antigravity, Windsurf) picks up the same eight rules: write natively, never hand-translate keywords, one-concept-one-term naming via the project glossary, and the byte-identical round-trip guarantee. The file is the *declaration*; long sessions evict rules files from context, which is exactly why the deterministic tools — not the file — are the *guarantee*.
  • `skills/legesher-localized-code/` — the stable-knowledge skill (Agent Skills format: portable across Claude Code, Claude apps, and the API). It teaches the mental model (run form ↔ native, deterministic vs fuzzy layers), which tool to call when, the write → round-trip → validate workflow, and the naming discipline. Claude Code: copy the directory into your project's .claude/skills/. Skills carry the *stable* playbook; the MCP server stays the live surface — that split is deliberate.

Privacy

  • No telemetry in this version. The server sends nothing. A coming release adds an optional usage report so the maintainers can see which tools are used and how often; earlier versions of this README promised that the server would never emit telemetry, and that promise is withdrawn. When the report ships:
  • It is off by default. Nothing is sent unless you set LEGESHER_MCP_TELEMETRY=on in the server's environment (the env block or --env flag of your client config, as in the examples above).
  • DO_NOT_TRACK=1 or LEGESHER_TELEMETRY_DISABLED=1 always wins and overrides every other setting.
  • It sends only: tool name, call count, error class, server and engine versions, and a random install id (kept per install so repeated reports count once; not derived from your machine, account or code). Never source code, file contents, identifiers, translated text, prompts, file paths, or anything that identifies you personally.
  • It runs off the request path: a tool call never waits on it or fails because of it, and a report that cannot be delivered is dropped.
  • It never touches the MCP stdio stream.
  • No network on a tool call. Every tool call is served by the local engine. The usage report above, once it ships and only if you enable it, is the only outbound traffic this package is designed to initiate.
  • Your code is not stored. Submitted source is processed in memory; file *paths* passed to map_existing_codebase are report labels — echoed back to you, never logged, never used to touch the filesystem. This is why validate_identifier_translations takes your glossary as *content* and hands back the accepted entries rather than saving them: recording is yours to do, whether that is .legesher/identifier_map.json in your repo or the legesher CLI, which already maintains that file. A durable glossary that outlives the session and is shared across repos and teammates is a system of record, and belongs behind the hosted API — not in a local subprocess.
  • Declared, not just claimed. All six tools carry MCP annotations saying so: readOnlyHint: true, idempotentHint: true, destructiveHint: false, openWorldHint: false. Clients that read the hints (Claude Code among them) can reduce or skip approval prompts, because no tool call writes a file, executes submitted code (validation is compile() only), or opens a socket. A surface-lock test asserts the annotations, so a future tool that *does* any of those has to change them deliberately.

Development

cd libs/mcp

uv run pytest # the per-commit suite (every tool, through MCP) uv run pytest -m scheduled # release-tier: all-packs sweep + wheel spawn uv run ruff check . # lint uv run mypy legesher_mcp # types

Two test tiers. The default run exercises every tool through a real MCP client session and stays fast. The scheduled tier is excluded from it and run before a release:

  • All-packs round-trip sweep — the byte-identical guarantee across every installed pack and the whole construct corpus (the per-commit run samples three packs). Known engine/pack failures are listed as strict xfails in tests/test_roundtrip_sweep.py, so a fix announces itself.
  • **Cle

Only the beginning is shown; read the rest in the repo

Ask PopNx