샌드박스 형태의 읽기 전용 환경에서 XPath와 구조화된 도구를 사용하여 로컬 XML 문서를 쿼리합니다.
다른 이름 sezzlee/mcp, xml, @sezzlee/xml-mcp
- 스타
- 1
- Tools
- 7
- 다운로드, 30일
- —
- 최신 버전
- 0.5.1
- 마지막 커밋
- 2026년 11월 13일
- 라이선스
- MIT
Sezzlee XML MCP란?
Sezzlee XML은(는) MCP server입니다. 샌드박스 형태의 읽기 전용 환경에서 XPath와 구조화된 도구를 사용하여 로컬 XML 문서를 쿼리합니다. 7개 도구를 제공합니다. 예: list_documents, describe_document, read_node.
프로젝트 README에서 생성된 요약
Sezzlee XML MCP server 정보
Sezzlee XML은 로컬 XML 파일을 쿼리할 수 있는 샌드박스 기반의 읽기 전용 환경을 제공합니다. .xml, .xsd, .svg, .config와 같은 파일 내의 구조화된 데이터를 검사해야 하는 개발자를 위해 설계되었습니다. 이 서버는 macOS, Linux 또는 Windows에서 Node.js를 통해 로컬에서 실행되며, 설정 시 명령줄 인수로 루트 디렉터리의 절대 경로를 전달해야 합니다.
사용자는 XPath 1.0 표현식을 실행하는 select_xpath나 반복되는 요소를 행과 열로 변환하는 project_records와 같은 특정 도구를 통해 서버와 상호작용합니다. 또한 문서 목록 표시, 구조 설명, 일반 텍스트 검색, 합계 또는 평균과 같은 집계 수행을 위한 도구도 포함되어 있습니다. 안정성을 유지하기 위해 서버는 파싱 작업이 별도의 스레드에서 수행되는 워커 기반 아키텍처를 사용합니다.
성능은 정해진 수의 파일을 메모리에 유지하는 문서 캐시를 통해 관리됩니다. 8 MiB 상주 제한을 초과하는 매우 큰 파일의 경우 서버는 chunked 모드로 전환됩니다. 이 상태에서는 select_xpath 및 aggregate_document와 같은 일부 도구를 사용할 수 없지만, 데이터 검사를 계속할 수 있도록 project_records 기능은 유지됩니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Sezzlee XML MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Sezzlee XML MCP 설치
$ claude mcp add xml -- npx -y @sezzlee/xml-mcpCursor에 Sezzlee XML MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}VS Code에 Sezzlee XML MCP 설치
.vscode/mcp.json
{
"servers": {
"xml": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}VS Code CLI에 Sezzlee XML MCP 설치
$ code --add-mcp '{"name":"xml","type":"stdio","command":"npx","args":["-y","@sezzlee/xml-mcp"]}'Claude Desktop에 Sezzlee XML MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Codex에 Sezzlee XML MCP 설치
$ codex mcp add xml -- npx -y @sezzlee/xml-mcpCodex config.toml에 Sezzlee XML MCP 설치
~/.codex/config.toml
[mcp_servers.xml] command = "npx" args = ["-y", "@sezzlee/xml-mcp"]
Gemini CLI에 Sezzlee XML MCP 설치
$ gemini mcp add -s user xml npx -- -y @sezzlee/xml-mcpGemini settings.json에 Sezzlee XML MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}Sezzlee XML MCP 도구 7
README에서 감지됨list_documentsdescribe_documentread_nodefind_in_documentselect_xpathproject_recordsaggregate_document
| list_documents | — | |
| describe_document | — | |
| read_node | — | |
| find_in_document | — | |
| select_xpath | — | |
| project_records | — | |
| aggregate_document | — |
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능sezzlee/mcp is public and reachablegithub.com/sezzlee/mcp ↗통과
- 패키지가 이 저장소를 소스로 명시@sezzlee/xml-mcp names sezzlee/mcp as sourcenpmjs.com/package/@sezzlee/xml-mcp ↗통과
- 빌드 출처(Sigstore 증명)Sigstore attestation for @sezzlee/xml-mcpnpmjs.com/package/@sezzlee/xml-mcp/v/0.5.1#provenance ↗통과
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-09github.com/sezzlee/mcp ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from @sezzlee/xml-mcp통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음8 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음7 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
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.
Sezzlee XML MCP 질문
Sezzlee XML MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add xml -- npx -y @sezzlee/xml-mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Sezzlee XML MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Sezzlee XML MCP는 어떤 도구를 제공하나요?
7개 도구를 제공합니다. 예: list_documents, describe_document, read_node, find_in_document, select_xpath.
이 서버가 읽을 수 있는 파일 확장자는 무엇인가요?
.xml, .xsd, .xhtml, .svg, .csproj, .props, .targets, .config, .resx 파일을 지원합니다.
매우 큰 XML 파일은 어떻게 처리하나요?
8 MiB 상주 제한을 초과하는 문서는 'chunked' 모드로 읽어 들입니다. 이 모드에서는 select_xpath, find_in_document, aggregate_document 기능을 사용할 수 없습니다.
서버가 파일을 수정할 수 있나요?
아니요, 이 서버는 읽기 전용으로 설계되었으며 단일 폴더 내에서 샌드박스 형태로 작동합니다.