Henka: Multi-tenant MCP server for structured, semantics-aware code refactorings Henka, an open-source multi-tenant Model Context Protocol (MCP) server, enables AI agents to perform structured, semantics-aware code refactorings across Java, Rust, and TypeScript/JavaScript projects using each language's native toolchain, such as Eclipse JDT for Java and rust-analyzer for Rust. The server, which supports stdio and streamable HTTP transports, bundles language servers and offers worktree-aware indexing, with a Docker image available for deployment. The project's HTTP transport is unauthenticated, so binding beyond loopback exposes registered projects to anyone who can reach the port. Structured, semantics-aware code refactorings for AI agents, spoken over MCP https://modelcontextprotocol.io — real refactorings computed by the language's own toolchain, not text munging. Refactorings, not string edits. Rename, extract, inline, change-signature, organize-imports, find-usages — computed by the language's real compiler view Eclipse JDT for Java , so they hold across files and overloads. Every edit comes back as a diff you can preview before anything touches disk. One server, many projects. Henka is multi-tenant: register repositories and operate on them in place. Operations are contributed per language — Java via Eclipse JDT , Rust via rust-analyzer , and TypeScript/JavaScript via typescript-language-server — and the language servers are bundled, so there's nothing extra to install. Worktree- and workspace-aware. One warm index per repository, shared across git worktrees and jj workspaces. A refactoring lands in whichever working copy you name; the others are untouched. The full specification is in docs/SPEC.md /martint/henka/blob/main/docs/SPEC.md . Build the release binary this also bundles the language servers it drives — fetching rust-analyzer, the Java language server, and typescript-language-server, and building the Java delegate-command bundle : php cargo xtask build - target/release/henka Run it over stdio for a single local client the default : henka …or over streamable HTTP to host it for one or more clients at /mcp : henka --transport http --bind 127.0.0.1:8181 Flags each has effect only where noted : | Flag | Purpose | |---|---| --transport stdio|http | How clients connect. Default stdio . | --bind