サンドボックス化された読み取り専用環境で、XPathや構造化ツールを使用してローカルのXMLドキュメントをクエリします。
別名 sezzlee/mcp, xml, @sezzlee/xml-mcp
- スター
- 1
- ツール
- 7
- ダウンロード数(30日間)
- —
- 最新バージョン
- 0.5.1
- 最終コミット
- 2026年11月13日
- ライセンス
- MIT
Sezzlee XML MCPとは
Sezzlee XMLはMCPサーバーです。 サンドボックス化された読み取り専用環境で、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 の制限を超える非常に大きなファイルの場合、サーバーはチャンクモードに入ります。この状態では、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を開き、上記のインストールセクションに示すCursor設定を使ってmcpServersの下にサーバーを追加します。
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 の制限を超えるドキュメントは、機能制限のある「チャンク」モードで読み込まれます。このモードでは、select_xpath、find_in_document、および aggregate_document は利用できません。
サーバーはファイルを変更できますか?
いいえ、このサーバーは読み取り専用として設計されており、単一のフォルダ内にサンドボックス化されています。