Token导航 LogoToken导航TokenDH.com
Schematron MCP logo
浏览器工具stdio官方级别未说明来源级核验

Schematron MCP

MCP Server

一个实验性的Schematron MCP服务器,使用Schematron-3B模型将HTML转换为结构化的JSON数据,适用于学习和实验目的。

工具数

2

提示词数

0

GitHub Stars

0

资源数

0
文档处理PythonClaude机器学习Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

AutumnsGrove

提供方

AutumnsGrove

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv venv

详细介绍

⚠️ 实验项目 | 🧪 学习练习 | 🐌 性能:缓慢

Schematron MCP服务器

A. 模型上下文协议(MCP)服务器 它使用 Schematron-3B 模型通过MLX在本地运行。

这个实验服务器使AI代理(如Claude)能够将杂乱的HTML转换为符合自定义模式的干净、结构化的JSON,这是一个探索基于ML的提取方法的学习练习。

⚠️ 项目状态

这是一个实验项目和学习练习,不是生产就绪的软件。

此MCP服务器旨在探索Schematron-3B模型并学习如何构建MCP服务器。虽然功能强大,但它有一些重要的局限性:

  • 演出:比传统的HTML解析/提取库慢得多
  • 实验性:使用ML模型进行结构化提取很有趣,但对于大多数用例来说并不是最佳选择
  • 学习重点:主要价值是作为MCP服务器开发的参考实现

何时使用此

  • 了解MCP服务器架构
  • 基于ML的提取实验
  • 用MLX理解局部模型推理

什么时候不使用这个

  • 需要快速、可靠提取的生产应用
  • 高吞吐量数据处理
  • 关键任务解析任务

推荐:对于生产HTML提取,请使用已建立的库,如BeautifulSoup、lxml或Scrapy。这个项目最好用作学习资源和实验场地。

🎯 特性

  • 模式优先提取:使用JSON Schema定义数据结构,得到完全符合JSON的数据
  • 局部推断:使用MLX在本地运行Schematron-3B,以实现快速、私密的处理
  • 自动HTML清理:内置预处理与Schematron的训练数据匹配
  • 长期上下文支持:最多可处理128K个标记的HTML文档
  • MCP本地:与Claude Desktop、Claude Code和Claude Agent SDK无缝集成
  • 进度报告:提取进度的实时反馈

🏗️ 建筑

┌────────────────────────────────────────────────────────────┐
│  Claude (Desktop/Code/Agent-SDK)                           │
│  "Extract product data from this e-commerce page"         │
└────────────────┬───────────────────────────────────────────┘
                 │
                 │ (via MCP protocol)
                 ▼
┌────────────────────────────────────────────────────────────┐
│  Schematron MCP Server                                     │
│  - Receives HTML and JSON Schema                           │
│  - Cleans HTML (optional)                                  │
│  - Runs MLX inference                                      │
│  - Returns validated JSON                                  │
└────────────────┬───────────────────────────────────────────┘
                 │
                 ▼
┌────────────────────────────────────────────────────────────┐
│  MLX-LM (Local Inference)                                  │
│  - Loads Schematron-3B quantized model                     │
│  - Fast, private inference on Mac Silicon                  │
└────────────────────────────────────────────────────────────┘

📋 需求

  • macOS 苹果硅(M1/M2/M3/M4)
  • Python 3.10+
  • MLX框架 (用于苹果硅推理)
  • MCP-SDK (用于协议支持)

🚀 安装

1.克隆或下载

# If you have this as a git repo
git clone https://github.com/yourusername/schematron-mcp.git
cd schematron-mcp

# Or just extract the ZIP file
cd schematron-mcp

2.安装依赖项

# Create virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate

# Install all dependencies
pip install -e .

# Or install manually
pip install mcp>=0.9.0 mlx-lm>=0.19.0 lxml>=4.9.0 pydantic>=2.0.0

3.下载模型

该模型将在首次使用时自动下载,也可以手动下载:

# The server expects this path by default:
# mlx-community/Schematron-3B-4bit

# If you want to use a different model path, set the environment variable:
export SCHEMATRON_MODEL_PATH="/path/to/your/model"

⚙️ 配置

适用于克劳德桌面

添加到 ~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "schematron": {
      "command": "python",
      "args": ["/absolute/path/to/schematron-mcp/server.py"],
      "env": {
        "SCHEMATRON_MODEL_PATH": "mlx-community/Schematron-3B-4bit"
      }
    }
  }
}

适用于克劳德代码/代理SDK

当以编程方式使用时,服务器通过stdio传输运行:

import subprocess
import json

# Start the MCP server
process = subprocess.Popen(
    ["python", "/path/to/schematron-mcp/server.py"],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True
)

# Communicate via MCP protocol
# (See MCP SDK documentation for details)

🛠️ 提供的工具

1. schematron_extract_structured_data

使用自定义模式从HTML中提取结构化JSON。

参数:

  • html (str,必填):原始HTML内容(不是URL)
  • schema (dict,必填):JSON模式定义输出结构
  • auto_clean (bool,默认值:true):提取前自动清理HTML
  • temperature (浮动,默认值:0.0):生成温度(保持为0表示确定性)
  • max_tokens (int,默认值:8000):要生成的最大令牌数
  • response_format (str,默认值:“json”):输出格式(“json”或“markdown”)

示例用法:

{
  "html": "

MacBook Pro M3

Price: $2,499.99

RAM: 16GB

",
  "schema": {
    "type": "object",
    "properties": {
      "name": {"type": "string"},
      "price": {"type": "number"},
      "specs": {
        "type": "object",
        "properties": {
          "ram": {"type": "string"}
        }
      }
    }
  },
  "auto_clean": true,
  "temperature": 0.0
}

退货:

{
  "success": true,
  "extracted_data": {
    "name": "MacBook Pro M3",
    "price": 2499.99,
    "specs": {
      "ram": "16GB"
    }
  },
  "metadata": {
    "html_length": 123,
    "was_cleaned": true
  }
}

2. schematron_clean_html

通过删除脚本、样式和JavaScript来清理HTML。

参数:

  • html (str,必填):要清理的原始HTML
  • cleaning_level (str,默认值:“标准”):“轻度”、“标准”或“攻击性”
  • response_format (str,默认值:“markdown”):输出格式

退货: 使用统计信息清理HTML

📝 示例架构

example_schemas.py 对于常见模式:

# Product extraction
PRODUCT_SCHEMA = {
    "type": "object",
    "properties": {
        "name": {"type": "string", "description": "Product name"},
        "price": {"type": "number", "description": "Price in USD"},
        "rating": {"type": "number", "description": "Star rating 1-5"},
        "in_stock": {"type": "boolean"}
    }
}

# Article extraction
ARTICLE_SCHEMA = {
    "type": "object",
    "properties": {
        "title": {"type": "string"},
        "author": {"type": "string"},
        "published_date": {"type": "string"},
        "content": {"type": "string"},
        "tags": {"type": "array", "items": {"type": "string"}}
    }
}

🎮 Claude使用示例

用户:“从此亚马逊页面提取产品信息” \[上传或获取HTML\]

克劳德 (内部):

  1. 使用web工具获取HTML
  2. 呼叫 schematron_extract_structured_data 与:

- 提取的HTML - 产品模式(名称、价格、评级等) - auto_clean: true

  1. 接收结构化JSON
  2. 向用户呈现数据

🧪 测试

测试服务器

# Test that the server starts
python server.py --help

# Test imports
python -c "from mlx_inference import SchematronModel; from html_cleaner import clean_html_content; print('OK')"

手动测试

# Start the server in one terminal
python server.py

# In another terminal, use the MCP Inspector or client to test
# (The server will wait for MCP protocol messages on stdin)

📂 项目结构

schematron-mcp/
├── server.py              # Main MCP server
├── mlx_inference.py       # MLX model loading and inference
├── html_cleaner.py        # HTML preprocessing
├── example_schemas.py     # Common schema examples
├── pyproject.toml         # Dependencies and config
├── README.md              # This file
└── LICENSE                # MIT License

🔧 故障排除

模型加载问题

问题:“找不到模型”错误 解决方案:检查MLX是否可以访问模型:

# Verify model path
export SCHEMATRON_MODEL_PATH="mlx-community/Schematron-3B-4bit"

# Or download manually with MLX
python -c "import mlx_lm; mlx_lm.load('mlx-community/Schematron-3B-4bit')"

HTML清理失败

问题:HTML清理返回原始HTML 解决方案:这是设计好的——如果lxml失败,我们将返回原始HTML以避免数据丢失。查看日志以了解详细信息。

内存问题

问题:推理时内存不足 解决方案:

  • 减少 max_tokens 参数
  • 更积极地清理HTML
  • 压缩大型文档

性能提示

  1. 预清理HTML:使用 auto_clean=True 以获得最佳效果
  2. 使用温度=0.0:用于确定性、可再现的输出
  3. 保持模式集中:不要提取超过所需的字段
  4. 重用服务器:模型加载一次并保留在内存中

🤝 贡献

欢迎投稿!需要改进的地方:

  • \[\]添加更多示例模式
  • \[\]支持流式响应
  • \[\]批量处理多个页面
  • \[\]模式验证改进
  • \[\]更好的错误消息
  • \[\]性能优化

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件。

🙏 致谢

📚 参考文献

______________________________________________________________________

为本地首批人工智能代理构建 🤖✨

目录标签

目录标签

文档处理PythonClaude机器学习HTML解析本地部署JSON转换本地推理数据提取

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP