mcpField
S
Sezzlee XML

Sezzlee XML

本地服务
docs.sezzlee.app开发工具1今天更新

关于 Sezzlee XML

Sezzlee XML 是只读 MCP 服务,可在沙箱目录中查询本地 XML 文档。它将 XPath 选择与结构检查、记录投影和聚合工具结合起来。

主要功能

  1. 01列出支持的 XML 文档
  2. 02检查文档结构和命名空间
  3. 03读取有界的树结构片段
  4. 04搜索文本和属性值
  5. 05使用 XPath 1.0 选择节点
  6. 06投影重复元素并聚合数据

适用场景

  1. 01在本地 XML 中查找文本或属性值
  2. 02通过 XPath 表达式选择节点
  3. 03将重复 XML 元素转换为行和列
  4. 04按组计数或汇总 XML 记录

MCP 相关

向 MCP 客户端提供列出、描述、读取、搜索和查询本地 XML 文档的工具。文档访问范围限制在配置的根目录内。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sezzlee-xml": {
"command": "npx",
"args": [
"-y",
"@sezzlee/xml-mcp"
]
}
}
}
启动命令npx -y @sezzlee/xml-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@sezzlee/xml-mcp0.5.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

@sezzlee/xml-mcp

一个只读、沙箱隔离的 MCP 服务,用于读取本地 XML 文档。 它基于 @sezzlee/file-core 构建;不依赖 @sezzlee/core,也不从 packages/lab/xml-lab 导入任何内容。

文档:https://docs.sezzlee.app/docs/xml-mcp/introduction — 本包生成的教程、任务指南,以及工具、错误代码和限制参考。

快速开始

根目录是唯一的参数,必须为绝对路径;没有用于指定根目录的环境变量。

{
  "mcpServers": {
    "xml": {
      "command": "npx",
      "args": ["-y", "@sezzlee/xml-mcp", "/path/to/xml/root"]
    }
  }
}

使用 Claude Code:

claude mcp add xml -- npx -y @sezzlee/xml-mcp /path/to/xml/root

可读取的扩展名:.xml、.xsd、.xhtml、.svg、.csproj、.props、.targets、.config、 .resx。.config 这类扩展名并不保证文件内容是 XML;出现解析错误属于预期行为。 需要在 macOS(x64、arm64)、glibc Linux(x64、arm64)或 Windows x64 上使用 Node.js 22 或 24。

工具

工具功能
list_documents列出根目录下可读取的 XML 文档,不进行解析
describe_document提供文档元素、带有稳定别名的所有命名空间、结构计数、重复元素候选项,以及 read_node 接受的地址
read_node以扁平的深度优先记录形式返回有界、按序排列的树切片
find_in_document在文本节点、属性值或两者中查找字面文本
select_xpath执行一个 XPath 1.0 表达式,完全按原样处理,并返回带类型的结果
project_records将重复元素作为行和命名列返回,并为每个单元格提供状态
aggregate_document按组统计数量、不同值数量,以及在 numericMode: binary64 下的总和与平均值

所有参数、错误代码和限制均列于参考文档。

超过 8 MiB 常驻内存上限的文档会以功能受限的 chunked 模式读取: 此模式下无法使用 select_xpath、find_in_document 和 aggregate_document,但仍可使用 project_records。

配置

createXmlMcpServer(root, options) 接受两个可选设置;CLI 始终使用默认值。

选项默认值含义
documentCacheSize4同时保留在内存中的文档数量(1–64)
maxConcurrentListings4并发 list_documents 调用数量
createXmlMcpServer(root, {
  documentCacheSize: 4,
  maxConcurrentListings: 4,
});

documentCacheSize(S)是唯一的调节参数;工作池容量按 W = 2S 推导,且由测试固定的 不变量 W >= 2S-1 必须成立——工作线程会在存储仍保留文档时继续持有该文档,因此其映射必须能容纳存储中的每个条目,以及正在接收的那个条目。这是预算,而非强制限制:worker.resourceLimits 限制的是 JS 堆,而不是 WASM 线性内存,因此超出预算会导致进程崩溃,而不是返回正常的 resource_limit 错误。实测成本为源文件字节数的 9.25-10.08 倍,因此在 8 MiB 上限下,每个文档的常驻内存约为 81 MiB;默认值 S=4 在配置最低的受支持主机上也安全。

规则

解析在工作线程中进行。 主进程始终只持有可序列化的句柄;WASM 指针不会跨越边界。因此,@sezzlee/file-core 的文档存储不需要释放钩子。

目录结构遵循工作线程/宿主边界。 engine/ 是工作线程侧的图结构,不会引用 host/ 或 tools/;model/ 和 primitives/ 是两侧共用的词汇。index.ts、cli.ts、xml-worker.ts 和 server.ts 保留在根目录——tarball 入口点、bin、CI tarball 检查以及对 ../package.json 的读取分别要求它们位于此处。

工作线程入口不会导入宿主侧接口。 src/xml-worker.ts 只会接触 node:worker_threads、node:buffer、libxml2-wasm 和纯类型协议;Lint 规则会强制执行这一点。工作线程返回代码字符串,由宿主侧构造错误对象。

解析前拒绝 DOCTYPE。 前言扫描器在主进程中运行;doc.dtd 仅是第二道检查。实测:XML_PARSE_NO_XXE 不会阻止内部 DTD 子集。

工作线程的 stdout 不会混入父进程的 fd 1。 通过 stdout: true 隔离 stdout;对于 stdio MCP,任何多余的一行都会破坏 JSON-RPC。

生产环境中关闭 diag,且无法通过环境变量启用:它会带来 24.9% 的开销,而且其原始报告包含引擎指针。

解析前拒绝不支持的编码。 前言扫描器会应用 XML 1.0 附录 F 的四字节自动检测;UCS-4 和 EBCDIC 系列会返回 unsupported_encoding。实测:之前的扫描器会漏掉这些系列中的 DOCTYPE。

libxml2-wasm 固定为精确版本 0.7.2。 使用插入符版本范围会悄然使 F0-01 完整性记录失效;CI tarball 检查器会强制执行此要求。

开发

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

通过 Turbo 运行测试,而不是使用 pnpm --filter @sezzlee/xml-mcp test:裸过滤器会跳过 dependsOn: ["^build"]。

更改工具参数、错误代码或限制会影响 apps/docs 中生成的参考文档;运行 pnpm --filter @sezzlee/docs gen 并提交生成结果,否则 pnpm turbo run validate --filter=@sezzlee/docs 会失败。

大型文档测试默认选择加入且默认跳过;设置 SEZZLEE_XML_LARGE=1 可运行这些测试。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。