Consulta documentos XML locales mediante XPath y herramientas estructuradas dentro de un entorno de solo lectura y sandboxed.
También conocido como sezzlee/mcp, xml, @sezzlee/xml-mcp
- Stars
- 1
- Herramientas
- 7
- Descargas, 30 días
- —
- Última versión
- 0.5.1
- Último commit
- 13 nov 2026
- Licencia
- MIT
¿Qué es Sezzlee XML MCP?
Sezzlee XML es un MCP server. Consulta documentos XML locales mediante XPath y herramientas estructuradas dentro de un entorno de solo lectura y sandboxed. Expone 7 herramientas, como list_documents, describe_document, read_node.
Resumen generado a partir del README del proyecto
Acerca del MCP server de Sezzlee XML
Sezzlee XML proporciona un entorno sandboxed y de solo lectura para consultar archivos XML locales. Está diseñado para desarrolladores que necesitan inspeccionar datos estructurados en archivos como .xml, .xsd, .svg o .config. El servidor se ejecuta localmente mediante Node.js en macOS, Linux o Windows, y requiere que se pase una ruta absoluta al directorio raíz como argumento de línea de comandos durante la configuración.
Los usuarios interactúan con el servidor a través de herramientas específicas como select_xpath para ejecutar expresiones XPath 1.0 y project_records para convertir elementos repetidos en filas y columnas. También incluye herramientas para listar documentos, describir estructuras, buscar texto literal y realizar agregaciones como sumas o promedios. Para mantener la estabilidad, el servidor utiliza una arquitectura basada en workers donde el parseo ocurre en un hilo separado.
El rendimiento se gestiona mediante una caché de documentos que mantiene un número determinado de archivos en memoria. Para archivos muy grandes que superen el límite de 8 MiB, el servidor entra en un modo de fragmentos (chunked mode). En este estado, ciertas herramientas como select_xpath y aggregate_document no están disponibles, aunque project_records sigue funcionando para permitir la inspección continua de datos.
Escrito a partir del README del proyecto. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar Sezzlee XML MCP
Formatos verificados el 10 nov 2026Añadir a CursorAñadir a GooseInstalar Sezzlee XML MCP en Claude Code
$ claude mcp add xml -- npx -y @sezzlee/xml-mcpInstalar Sezzlee XML MCP en Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Instalar Sezzlee XML MCP en VS Code
.vscode/mcp.json
{
"servers": {
"xml": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Instalar Sezzlee XML MCP en VS Code CLI
$ code --add-mcp '{"name":"xml","type":"stdio","command":"npx","args":["-y","@sezzlee/xml-mcp"]}'Instalar Sezzlee XML MCP en Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Instalar Sezzlee XML MCP en Codex
$ codex mcp add xml -- npx -y @sezzlee/xml-mcpInstalar Sezzlee XML MCP en Codex config.toml
~/.codex/config.toml
[mcp_servers.xml] command = "npx" args = ["-y", "@sezzlee/xml-mcp"]
Instalar Sezzlee XML MCP en Gemini CLI
$ gemini mcp add -s user xml npx -- -y @sezzlee/xml-mcpInstalar Sezzlee XML MCP en Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Herramientas de Sezzlee XML MCP 7
Detectado desde el READMElist_documentsdescribe_documentread_nodefind_in_documentselect_xpathproject_recordsaggregate_document
| list_documents | — | |
| describe_document | — | |
| read_node | — | |
| find_in_document | — | |
| select_xpath | — | |
| project_records | — | |
| aggregate_document | — |
Verificaciones automáticas
Ejecutado 13 nov 2026Informe completo →Pasó nuestras verificaciones automáticas. Esto no es una auditoría de seguridad: lee el código y dale al servidor el acceso más limitado que necesite. Cómo funcionan las verificaciones
- Repositorio de origen vinculado y accesiblesezzlee/mcp is public and reachablegithub.com/sezzlee/mcp ↗Aprobado
- El paquete indica este repositorio como su origen@sezzlee/xml-mcp names sezzlee/mcp as sourcenpmjs.com/package/@sezzlee/xml-mcp ↗Aprobado
- Procedencia de la compilación (atestación de Sigstore)Sigstore attestation for @sezzlee/xml-mcpnpmjs.com/package/@sezzlee/xml-mcp/v/0.5.1#provenance ↗Aprobado
- Licencia de código abierto (OSI)MITspdx.org/licenses/MIT.html ↗Aprobado
- Commit o lanzamiento en el último añoLast commit or release 2026-11-09github.com/sezzlee/mcp ↗Aprobado
- OpenSSF ScorecardNo verificado
- El nombre del paquete no es similar a un paquete popularNo popular package one edit away from @sezzlee/xml-mcpAprobado
- No hay avisos críticos en el paquete ni en sus dependencias8 resolved dependencies checked; no critical advisoryosv.dev ↗Aprobado
- Sin instrucciones ocultas para el modelo7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersAprobado
- Las herramientas destructivas están etiquetadasNo tool named like delete, drop or execAprobado
- El endpoint remoto responde al handshake de MCPNo verificado
README
Ver en GitHub@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.
Preguntas sobre Sezzlee XML MCP
¿Cómo agrego Sezzlee XML MCP a Claude Code?
Ejecuta claude mcp add xml -- npx -y @sezzlee/xml-mcp en tu terminal. Añade --scope user para que esté disponible en todos los proyectos.
¿Cómo agrego Sezzlee XML MCP a Cursor?
Abre ~/.cursor/mcp.json y añade el servidor en mcpServers, usando la configuración de Cursor que se muestra en la sección de instalación de arriba.
¿Qué herramientas proporciona Sezzlee XML MCP?
Expone 7 herramientas, incluidas list_documents, describe_document, read_node, find_in_document, select_xpath.
¿Qué extensiones de archivo puede leer este servidor?
El servidor es compatible con .xml, .xsd, .xhtml, .svg, .csproj, .props, .targets, .config y .resx.
¿Cómo gestiona el servidor los archivos XML muy grandes?
Los documentos que superan el límite de 8 MiB en memoria se leen en un modo de 'fragmentos' (chunked) con capacidades reducidas, donde select_xpath, find_in_document y aggregate_document no están disponibles.
¿Es el servidor capaz de modificar mis archivos?
No, el servidor está diseñado para ser de solo lectura y funciona en un entorno sandboxed limitado a una única carpeta.