Skip to main content
Glama
Witcher 3 String Editor MCP

Witcher 3 String Editor MCP

by 0x7A2C9E5D

Witcher 3 String Editor MCP

A local (stdio) MCP server for reading and editing The Witcher 3 .w3strings localization files — inspect entries, search text, translate or replace strings, add/delete entries, and save as version 162/163/164.

Every operation works on an in-memory document identified by a Guid handle; only save_document writes to disk, so you can edit a game file without touching the original.

Tools

Tool

Description

open_document

Open a .w3strings file, returns a document handle

create_document

Create a new empty document

count

Number of entries in a document

is_dirty

Whether the document has unsaved changes

navigate

Move relative to an entry (offset, optional strId)

get_item

Get one entry by strId

search_items

Substring search over id, text and key name

add_item

Add a new entry

update_item

Change text / key name / key hash of an entry

update_item_id

Change the strId of an entry

update_item_key_name

Set the key name (in memory; only the hash is saved)

delete_item

Delete an entry

save_document

Write the document to disk (version, filePath, language)

close_document

Close a document and release its handle

list_languages

List the supported language codes

Related MCP server: ue-bridge

Install

The package is a .NET tool, so clients launch it through dnx, which ships with the .NET 10 SDK. There is nothing to install globally and nothing to add to PATH — the first launch downloads the package from NuGet.org.

All configurations below launch the same stdio command:

dnx Witcher3StringEditor.MCP@0.1.0-beta.4 --yes

--yes skips the download confirmation prompt; @0.1.0-beta.4 pins the version, so upgrade by editing that number and restarting the client.

VS Code

Create .vscode/mcp.json in the workspace (or run MCP: Add Server from the Command Palette):

{
  "servers": {
    "w3strings": {
      "type": "stdio",
      "command": "dnx",
      "args": ["Witcher3StringEditor.MCP@0.1.0-beta.4", "--yes"]
    }
  }
}

Visual Studio

Create .mcp.json next to the .sln/.slnx. The servers block is identical to the VS Code one above; Visual Studio reads the same file format.

Cursor

Create .cursor/mcp.json in the project (or ~/.cursor/mcp.json for all projects). Cursor uses the mcpServers key:

{
  "mcpServers": {
    "w3strings": {
      "command": "dnx",
      "args": ["Witcher3StringEditor.MCP@0.1.0-beta.4", "--yes"]
    }
  }
}

Claude Code

claude mcp add w3strings -- dnx Witcher3StringEditor.MCP@0.1.0-beta.4 --yes

Claude Desktop

Edit %APPDATA%\Claude\claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "w3strings": {
      "command": "dnx",
      "args": ["Witcher3StringEditor.MCP@0.1.0-beta.4", "--yes"]
    }
  }
}

Restart Claude Desktop after editing the file.

Running from source

Before a release, or while developing, point the client at the project instead of the published package:

{
  "servers": {
    "w3strings-dev": {
      "type": "stdio",
      "command": "dotnet",
      "args": ["run", "--project", "Witcher3StringEditor.MCP/Witcher3StringEditor.MCP.csproj"]
    }
  }
}

Without the .NET 10 SDK

Publish the self-contained build and point command at the executable instead of dnx:

dotnet publish .\Witcher3StringEditor.MCP -c Release -r win-x64
{
  "servers": {
    "w3strings": {
      "type": "stdio",
      "command": "C:\\path\\to\\Witcher3StringEditor.MCP\\bin\\Release\\net10.0\\win-x64\\publish\\Witcher3StringEditor.MCP.exe"
    }
  }
}

Verify the connection

After restarting the client, the server should expose 15 tools (open_document … list_languages). If the client lists none, or every call fails with a generic message:

  • Check that dnx resolves: dnx --help must work in a terminal (otherwise install the .NET 10 SDK).

  • Check that the configured version actually exists on NuGet.org.

  • Read the log — the client only shows a generic error, the real exception is always in %LOCALAPPDATA%\Witcher3StringEditor.MCP\logs\log<date>.txt (one file per day).

Build from source

dotnet run --project .\Witcher3StringEditor.MCP           # run from source
dotnet pack -c Release -r win-x64                        # build the win-x64 tool package

dotnet pack produces one platform-independent package plus one package per runtime identifier; all of them must be pushed to NuGet.org for dnx to resolve the right binary.

Notes

  • .w3strings stores no readable key name, only an 8-digit uppercase hex hash; key names are empty after reopening a file.

  • 163 is written as 162. Save with 164 for the Remastered edition, 162/163 for the classic and next-gen builds.

  • Zero-hash key entries are dropped on save.

  • The server has no undo: save to a new file when editing game content.

  • Diagnostics go to the user's local application data, never to stdout and never to the working directory: %LOCALAPPDATA%\Witcher3StringEditor.MCP\logs\log<date>.txt on Windows and ~/.local/share/Witcher3StringEditor.MCP/logs/log<date>.txt on Unix-like systems. One file per day, with Serilog's default file retention of 31 files (1 GB per file).

License

Released under the MIT License.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      MCP server for managing translation projects in Weblate. With the ability to search, read and write transltaions.
      20
      61 npm
      24
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables AI agents and scripts to inspect objects, call functions, and run Lua in a running UE4SS game via MCP, with no sockets or admin rights required.
      26
      27 PyPI
      5
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Exposes 10 tools that let AI agents search Nexus Mods, inspect locally installed game modules, populate and fix translation flags, generate and translate templates with Microsoft/Google/DeepLX engines, and build external translation modules. Two of the tools write to disk, rewriting ModuleData XML files and creating sibling translation directories under the game's Modules folder.
      103 npm
      2
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables MCP clients to explore a local War Selection installation by reading mod code, game JSON data, logs, and Lua API indexes, while also linting mods, parsing Lua log errors, diffing mod and game versions, generating scaffolds, and watching logs in real time.
      26
      MIT