Frage lokale XML-Dokumente mithilfe von XPath und strukturierten Tools in einer sandboxed, Read-only-Umgebung ab.
Auch bekannt als sezzlee/mcp, xml, @sezzlee/xml-mcp
- Stars
- 1
- Tools
- 7
- Downloads, 30 Tage
- —
- Neueste Version
- 0.5.1
- Letzter Commit
- 13. Nov. 2026
- Lizenz
- MIT
Was ist Sezzlee XML MCP?
Sezzlee XML ist ein MCP server. Frage lokale XML-Dokumente mithilfe von XPath und strukturierten Tools in einer sandboxed, Read-only-Umgebung ab. Er stellt 7 Tools bereit, etwa list_documents, describe_document, read_node.
Zusammenfassung generiert aus dem README des Projekts
Über Sezzlee XML MCP server
Sezzlee XML bietet eine sandboxed, Read-only-Umgebung zum Abfragen lokaler XML-Dateien. Er wurde für Entwickler entwickelt, die strukturierte Daten in Dateien wie .xml, .xsd, .svg oder .config inspizieren müssen. Der Server läuft lokal via Node.js auf macOS, Linux oder Windows und benötigt einen absoluten Pfad zu einem Root-Verzeichnis, der bei der Einrichtung als Command-Line-Argument übergeben wird.
Nutzer interagieren mit dem Server über spezifische Tools wie select_xpath zum Ausführen von XPath 1.0 Ausdrücken und project_records, um wiederholte Elemente in Zeilen und Spalten umzuwandeln. Er enthält außerdem Tools zum Auflisten von Dokumenten, Beschreiben von Strukturen, Finden von Textpassagen und zum Durchführen von Aggregationen wie Summen oder Durchschnitten. Um die Stabilität zu gewährleisten, nutzt der Server eine Worker-basierte Architektur, bei der das Parsing in einem separaten Thread stattfindet.
Die Performance wird durch einen Document Cache verwaltet, der eine festgelegte Anzahl an Dateien im Speicher hält. Bei sehr großen Dateien, die das Limit von 8 MiB überschreiten, wechselt der Server in den chunked Mode. In diesem Zustand sind bestimmte Tools wie select_xpath und aggregate_document nicht verfügbar, während project_records weiterhin funktioniert, um eine fortlaufende Dateninspektion zu ermöglichen.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
So installierst du Sezzlee XML MCP
Formate geprüft am 10. Nov. 2026Zu Cursor hinzufügenZu Goose hinzufügenSezzlee XML MCP in Claude Code installieren
$ claude mcp add xml -- npx -y @sezzlee/xml-mcpSezzlee XML MCP in Cursor installieren
~/.cursor/mcp.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Sezzlee XML MCP in VS Code installieren
.vscode/mcp.json
{
"servers": {
"xml": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Sezzlee XML MCP in VS Code CLI installieren
$ code --add-mcp '{"name":"xml","type":"stdio","command":"npx","args":["-y","@sezzlee/xml-mcp"]}'Sezzlee XML MCP in Claude Desktop installieren
claude_desktop_config.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Sezzlee XML MCP in Codex installieren
$ codex mcp add xml -- npx -y @sezzlee/xml-mcpSezzlee XML MCP in Codex config.toml installieren
~/.codex/config.toml
[mcp_servers.xml] command = "npx" args = ["-y", "@sezzlee/xml-mcp"]
Sezzlee XML MCP in Gemini CLI installieren
$ gemini mcp add -s user xml npx -- -y @sezzlee/xml-mcpSezzlee XML MCP in Gemini settings.json installieren
~/.gemini/settings.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Sezzlee XML MCP tools 7
Erkannt aus dem READMElist_documentsdescribe_documentread_nodefind_in_documentselect_xpathproject_recordsaggregate_document
| list_documents | — | |
| describe_document | — | |
| read_node | — | |
| find_in_document | — | |
| select_xpath | — | |
| project_records | — | |
| aggregate_document | — |
Automatisierte Checks
Geluften am 13. Nov. 2026Vollständiger Bericht →Unsere automatisierten Checks bestanden. Das ist kein Security-Audit: Lies den Code und gib dem Server nur den minimal notwendigen Zugriff. Wie die Checks funktionieren
- Source Repository verknüpft und erreichbarsezzlee/mcp is public and reachablegithub.com/sezzlee/mcp ↗Bestanden
- Paket nennt dieses Repository als Quelle@sezzlee/xml-mcp names sezzlee/mcp as sourcenpmjs.com/package/@sezzlee/xml-mcp ↗Bestanden
- Build-Provenienz (Sigstore-Attestierung)Sigstore attestation for @sezzlee/xml-mcpnpmjs.com/package/@sezzlee/xml-mcp/v/0.5.1#provenance ↗Bestanden
- Open Source Lizenz (OSI)MITspdx.org/licenses/MIT.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit or release 2026-11-09github.com/sezzlee/mcp ↗Bestanden
- OpenSSF ScorecardNicht geprüft
- Package-Name ähnelt keinem populären PackageNo popular package one edit away from @sezzlee/xml-mcpBestanden
- Keine kritischen Advisories im Paket oder seinen Abhängigkeiten8 resolved dependencies checked; no critical advisoryosv.dev ↗Bestanden
- Keine versteckten Anweisungen an das Modell7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersBestanden
- Destruktive Tools sind markiertNo tool named like delete, drop or execBestanden
- Remote-Endpoint beantwortet den MCP-HandshakeNicht geprüft
README
Auf GitHub ansehen@sezzlee/xml-mcp
A read-only, sandboxed MCP server that reads local XML documents.
It builds on @sezzlee/file-core; it does not depend on
@sezzlee/core and imports nothing from packages/lab/xml-lab.
Documentation: https://docs.sezzlee.app/docs/xml-mcp/introduction — a tutorial, task guides, and the tool, error-code and limit reference generated from this package.
Quick start
The root is the only argument, as an absolute path; there is no environment variable for it.
{
"mcpServers": {
"xml": {
"command": "npx",
"args": ["-y", "@sezzlee/xml-mcp", "/path/to/xml/root"]
}
}
}
With Claude Code:
claude mcp add xml -- npx -y @sezzlee/xml-mcp /path/to/xml/root
Readable extensions: .xml, .xsd, .xhtml, .svg, .csproj, .props, .targets, .config,
.resx. An extension like .config is not a guarantee of XML — a parse error there is expected
behavior. Requires Node.js 22 or 24 on macOS (x64, arm64), glibc Linux (x64, arm64) or Windows x64.
Tools
| Tool | What it does |
|---|---|
list_documents |
Lists readable XML documents under the root without parsing them |
describe_document |
Document element, every namespace with a stable alias, structure counts, repeated-element candidates, and an address read_node takes |
read_node |
A bounded, ordered slice of the tree as flat depth-first records |
find_in_document |
Literal text in text nodes, attribute values or both |
select_xpath |
One XPath 1.0 expression, exactly as written, with a typed result |
project_records |
A repeated element as rows and named columns, with a status per cell |
aggregate_document |
Counts, distinct counts and, with numericMode: binary64, sums and averages per group |
Every argument, error code and limit is listed in the reference.
A document over the 8 MiB resident ceiling is read in a reduced-capability chunked mode:
select_xpath, find_in_document and aggregate_document are unavailable there, while
project_records still works.
Configuration
createXmlMcpServer(root, options) takes two optional settings; the CLI
always uses the defaults.
| Option | Default | Meaning |
|---|---|---|
documentCacheSize |
4 |
Documents kept resident in memory at once (1–64) |
maxConcurrentListings |
4 |
Concurrent list_documents calls |
createXmlMcpServer(root, {
documentCacheSize: 4,
maxConcurrentListings: 4,
});
documentCacheSize (S) is the single knob; the worker pool's capacity is
derived as W = 2S, and the invariant W >= 2S-1 is pinned by a test — the
worker keeps a document alive while the store still holds it, so its map must
fit every store entry plus the one being adopted. This is a budget, not
enforcement: worker.resourceLimits bounds the JS heap, not WASM linear
memory, so exceeding the budget is a process crash rather than a clean
resource_limit error. Measured cost is 9.25-10.08x the source byte count,
so roughly 81 MiB resident per document at the 8 MiB ceiling; the default
S=4 is safe on the smallest supported host.
Rules
Parsing happens in the worker. The main process only ever holds a
serializable handle; a WASM pointer never crosses the boundary. No disposal
hook was needed on @sezzlee/file-core's document store because of this.
Layout follows the worker/host boundary. engine/ is the worker-side
graph and never names host/ or tools/; model/ and primitives/ are the
shared vocabulary between the two sides. index.ts, cli.ts,
xml-worker.ts and server.ts stay at the root — the tarball entry point,
bin, the CI tarball check and the ../package.json read respectively tie
them there.
The worker entry never imports the host surface. src/xml-worker.ts
only sees node:worker_threads, node:buffer, libxml2-wasm and a
type-only protocol; a lint rule enforces this. A worker returns a code
string, and the host side constructs the error object.
DOCTYPE is refused before parsing. The prolog scanner runs in the main
process; doc.dtd is only the second check. Measured: XML_PARSE_NO_XXE
does not block the internal DTD subset.
The worker's stdout never mixes into the parent's fd 1. It is isolated
with stdout: true; on stdio MCP, a single stray line breaks JSON-RPC.
diag is off in production and cannot be turned on through an
environment variable: it costs 24.9% and its raw report carries an engine
pointer.
Unsupported encodings are refused before parsing. The prolog scanner
applies the XML 1.0 Appendix F four-byte autodetection; the UCS-4 and EBCDIC
families get unsupported_encoding. Measured: the previous scanner missed
DOCTYPE in these families.
libxml2-wasm is pinned to exact 0.7.2. A caret would silently
invalidate the F0-01 integrity record; the CI tarball checker enforces this.
Development
pnpm turbo run build --filter=@sezzlee/xml-mcp
pnpm turbo run test --filter=@sezzlee/xml-mcp
pnpm turbo run check-types --filter=@sezzlee/xml-mcp
Run tests through Turbo, not pnpm --filter @sezzlee/xml-mcp test: the bare
filter skips dependsOn: ["^build"].
A change to a tool's arguments, an error code or a limit changes the generated reference in
apps/docs; run pnpm --filter @sezzlee/docs gen and commit the result, or
pnpm turbo run validate --filter=@sezzlee/docs fails.
Large-document tests are opt-in and skipped by default; set
SEZZLEE_XML_LARGE=1 to run them.
Sezzlee XML MCP Fragen
Wie füge ich Sezzlee XML MCP zu Claude Code hinzu?
Führe claude mcp add xml -- npx -y @sezzlee/xml-mcp in deinem Terminal aus. Füge --scope user hinzu, damit der Server in jedem Projekt verfügbar ist.
Wie füge ich Sezzlee XML MCP zu Cursor hinzu?
Öffne ~/.cursor/mcp.json und füge den Server unter mcpServers hinzu, mit der Cursor-Config aus dem Installationsabschnitt oben.
Welche Tools bietet Sezzlee XML MCP?
Er stellt 7 Tools bereit, darunter list_documents, describe_document, read_node, find_in_document, select_xpath.
Welche Dateiendungen kann dieser Server lesen?
Der Server unterstützt .xml, .xsd, .xhtml, .svg, .csproj, .props, .targets, .config und .resx.
Wie geht der Server mit sehr großen XML-Dateien um?
Dokumente, die das Limit von 8 MiB überschreiten, werden in einem eingeschränkten 'chunked' Mode gelesen, in dem select_xpath, find_in_document und aggregate_document nicht verfügbar sind.
Kann der Server meine Dateien verändern?
Nein, der Server ist als Read-only konzipiert und auf einen einzelnen Ordner beschränkt (sandboxed).