Witcher3StringEditor.MCP
0.1.0-beta.4
{ "servers": { "Witcher3StringEditor.MCP": { "type": "stdio", "command": "dnx", "args": ["Witcher3StringEditor.MCP@0.1.0-beta.4", "--yes"] } } }
.vscode/mcp.json settings file.
dotnet tool install --global Witcher3StringEditor.MCP --version 0.1.0-beta.4
dotnet new tool-manifest
dotnet tool install --local Witcher3StringEditor.MCP --version 0.1.0-beta.4
#tool dotnet:?package=Witcher3StringEditor.MCP&version=0.1.0-beta.4&prerelease
nuke :add-package Witcher3StringEditor.MCP --version 0.1.0-beta.4
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 |
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
dnxresolves:dnx --helpmust 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.txt.
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
.w3stringsstores no readable key name, only an 8-digit uppercase hex hash; key names are empty after reopening a file.163is written as162. Save with164for the Remastered edition,162/163for 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.txton Windows and~/.local/share/Witcher3StringEditor.MCP/logs/log.txton Unix-like systems. The file rotates at 10 MB and the last three files are kept.
License
See the repository.
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-beta.4 | 49 | 10/27/2026 |
| 0.1.0-beta.3 | 53 | 10/27/2026 |
| 0.1.0-beta.2 | 32 | 10/27/2026 |
| 0.1.0-beta | 39 | 10/27/2026 |