Extract string values from config files, data files and plain text.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Pull every string value out of the current file in one keystroke
JSON/JSONC, YAML, CSV/TSV, TOML, INI, Environment files, and ten source languages
Useful? A star or rating is how other developers find it β β GitHub Β· β Open VSX Β· β Marketplace
Open a file, press Ctrl+Alt+E (Cmd+Alt+E on Mac), and every string value in the document lands in a new editor β deduplicate and sort it from there. Works in VS Code and in VS Codeβbased editors like Cursor and VSCodium (installable from Open VSX).
| Where | What you get | Install |
|---|---|---|
| VS Code | The same extraction, in your editor, on a keystroke | Marketplace |
| Cursor, VSCodium, Windsurf | The same extension | Open VSX |
| A terminal or a CI step | The same run over a whole tree, with exit codes | cargo install string-le Β· crates.io |
| Any MCP agent, via Node | extract_strings over stdio | npx string-le-mcp Β· npm |
| Zed | The MCP server as a context server | add it by hand (no listing yet) |
The same engine runs as an MCP server, so an agent can call it directly instead of you running a command.
| Editor | How |
|---|---|
| VS Code 1.101+ | Nothing to install β the extension registers extract_strings with agent mode |
| Zed | No listing yet β add the MCP server by hand |
| Claude Code | claude mcp add string-le -- npx -y string-le-mcp |
| Cursor, Windsurf, anything else | point it at npx string-le-mcp |
Returns the values in document order, capped at 500 by default with meta.truncated. A format is optional β any unrecognised format falls back to quoted strings.
The server takes content and returns data β it reads no files and makes no network requests of its own. Published as string-le-mcp on npm and as io.github.nolindnaidoo/string-le in the MCP registry.
Most hosts read a JSON config. Add one entry:
-y skips the install prompt on first run. Pin a version if you would rather not track releases β string-le-mcp@2.3.1.
Prefer not to go through npx on every launch? Install it once and point at the binary instead:
It speaks MCP over stdio and needs no environment variables, no API key and no configuration of its own. To check it before wiring it into anything:
That prints the tool list and exits β if you see extract_strings, the server works.
| Format | Language IDs | What gets extracted |
|---|---|---|
| JSON | json | String values (parsed; keys, numbers, and booleans excluded) |
| YAML | yaml | String values including unquoted plain scalars, block/folded scalars, and multi-document files |
| CSV | csv | Cells, with optional header handling, column selection, and a streaming mode for large files |
| TOML | toml | String values including multiline strings; dates and numbers are excluded as typed values |
| INI | ini | Values (INI is untyped, so numeric-looking values are extracted as strings) |
| Environment | dotenv, env | Values (export prefixes, quotes, and inline comments handled) |
| Python | python | Triple-quoted docstrings as one string, f-strings, r/b/u prefixes |
| Rust | rust | Raw strings r"β¦", r#"β¦"#, r##"β¦"## as one string with their inner quotes; byte strings |
| Go | go | Backtick raw strings as one string, across lines |
| Shell | shellscript | Heredocs (<<EOF, <<'EOF', <<-EOF) as one string |
| PHP, Ruby, Perl | php, ruby, perl | Heredocs and nowdocs (<<<EOT, <<<'NOW', <<~EOS) as one string |
| C# | csharp | Verbatim @"β¦" where "" is one quote; interpolated $"β¦" |
| JavaScript, TypeScript | javascript, typescript (+ the react ids) | Template literals as one string, interpolation and nesting included |
| Markdown, anything else | markdown | Fallback scan for "double", 'single', or `backtick` quoted strings on a single line |
Values are trimmed; empty values are dropped; keys are never extracted β one rule, shared by every extractor above. The fallback scan cannot see unquoted or multi-line strings, which is why the parsed formats and the source languages get real readers. Parse errors are silent unless string-le.showParseErrors is on.
The same extraction runs from a terminal or a shell pipeline: a Rust CLI
in crate/, sharing one corpus with the extension β
crate/fixtures/ β so the two can never read a
document differently.
The reader is not the author. The extension answers for the buffer you have open. Someone still has to read every user-visible string before a release β a QA lead, a compliance reviewer, a localisation owner β and they do not have the editor open, and several of them cannot be handed a checkout at all. The CLI puts the whole repository into one file they can read.
Source files are the main event there. A .ts or .py file is where
the user-facing copy lives, so each language is read by its own literal
syntax and anything still unrecognised falls through to quoted-string
extraction rather than being refused.
Exit codes follow grep β 0 strings found, 1 none found, 2 the question was malformed β so finding nothing is an answer rather than an error.
| Command | Description |
|---|---|
String-LE: Extract Strings (Ctrl+Alt+E / Cmd+Alt+E) | Extract all string values from the active document |
String-LE: Deduplicate Strings | Remove duplicate lines from the active document |
String-LE: Sort Strings | Sort lines alphabetically or by length |
String-LE: Toggle CSV Streaming | Enable/disable streaming for large CSV files |
String-LE: Open Settings | Open String-LE settings |
String-LE: Help & Troubleshooting | Built-in documentation |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/string-le)<a href="https://allmcps.com/mcp/string-le"><img src="https://allmcps.com/api/badge/string-le?style=directory" alt="String Le on AllMCPs" /></a>