数据统一与实体解析工具

Weaver MCP是一款数据统一与实体解析工具,通过多阶段流程将异构数据源转换为去重后的黄金记录,支持自动化管道和交互式调试。

  • by adrianmoses
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 adrianmoses/weaver-mcp

使用说明

Weaver MCP

MCP服务器 数据统一和实体解析.将异构数据源转换为统一的、重复数据消除的黄金记录。

概述

Weaver提供了一个完整的实体解析管道作为MCP工具,让Claude(或任何MCP客户端)编排:

  • 配置文件数据源 -了解数据质量、空值、基数和模式对齐
  • 生成候选配对 -高效阻塞以避免O(n²)比较
  • 得分比赛 -具有可解释性的可配置匹配规则
  • 解析实体 -基于图的统一实体聚类
  • 创造黄金纪录 -完整来源的幸存者规则
  • 分析结果 -LLM驱动的洞察和异常检测

建筑

Sources (CSV/Parquet/JSON)
        │
        ▼
  ┌─────────────┐
  │  1. Ingest   │  ← Schema detection, normalization, profiling
  │  & Profile   │
  └──────┬──────┘
         ▼
  ┌─────────────┐
  │ 2. Blocking  │  ← Candidate pair generation
  └──────┬──────┘
         ▼
  ┌─────────────┐
  │ 3. Matching  │  ← Pairwise scoring with explainability
  └──────┬──────┘
         ▼
  ┌─────────────┐
  │ 4. Resolve   │  ← Graph clustering into entities
  └──────┬──────┘
         ▼
  ┌─────────────┐
  │ 5. Golden    │  ← Survivorship rules, provenance
  │   Record     │
  └──────┬──────┘
         ▼
  ┌─────────────┐
  │ 6. Insights  │  ← LLM-powered analysis, reports
  └─────────────┘

Claude通过MCP协调这些组件,实现以下两个功能:

  • 自动化管道 -以最少的干预实现端到端的统一
  • 交互式调试 -问“为什么这些记录不匹配?”

安装

开发设置

# Clone the repository
git clone https://github.com/yourusername/weaver-mcp.git
cd weaver-mcp

# Install dependencies (requires Python 3.11+)
uv sync

# Run the server directly
uv run weaver-mcp

与Claude Desktop一起使用

添加到您的 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "weaver": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/weaver-mcp", "weaver-mcp"]
    }
  }
}

重新启动克劳德桌面。您应该看到Weaver工具可用。

使用Claude代码

适用于任何兼容MCP的客户端。检查您的工具文档以了解MCP服务器配置。

可用工具

阶段0:分析(完成)

工具 说明
profile_data_source 分析CSV/Parquet的质量指标并筛选关键候选人

第一阶段:多源支持(进行中)

工具 说明
ingest_source 使用别名和元数据注册数据源
list_sources 列出会话中所有已注册的源
analyze_schema_alignment 跨源比较模式,建议映射
profile_attribute_distribution 深入了解列值分布

第二阶段:封锁

工具 说明
suggest_blocking_keys 推荐阻断策略(精确、语音、n元语法)
generate_candidate_pairs 执行阻塞,返回带有统计信息的配对
evaluate_blocking_coverage 使用金标准样本估算召回率

第三阶段:匹配

工具 说明
configure_matching_rules 定义每个字段的加权比较
score_candidate_pairs 使用阈值过滤进行批量评分
explain_match_score 特定配对的详细细分

第四阶段:解决

工具 说明
resolve_entities 图聚类(连通分量,Louvain)
inspect_cluster 查看所有记录并匹配群集中的边
split_cluster 循环中的人类:分解一个坏集群
merge_clusters 循环中的人:组合相关集群
visualize_match_graph 以JSON格式返回节点/边以进行渲染

第五阶段:金唱片

工具 说明
configure_survivorship_rules 定义字段级合并策略
build_golden_records 应用规则,输出为拼花游戏
audit_golden_record 显示来源:哪个来源贡献了什么

第6阶段:分析

工具 说明
summarize_unification 管道统计(来源、记录、实体)
detect_anomalies 标记数据或匹配中的可疑模式
query_unified_data 通过Claude将自然语言转换为SQL
generate_report 结构化数据质量报告

示例用法

分析数据源

Can you profile the data in examples/sample_data/music_tracks.csv?

退货:

  • 记录计数和重复统计
  • 列级分析(类型、空值、基数)
  • 建议屏蔽按适合性排名的关键候选人
  • 数据质量标志和警告

阻止关键评分

在比较之前,阻止密钥将记录分组。好的键平衡了选择性(不太宽)和覆盖率(不太窄)。

基数比 得分 解读
0.01 - 0.50 cardinality × 2 (最大1.0) 理想范围
>0.50 0.30 太独特-使用前缀或n-gram
<0.01 排除 不同值太少

空值大于20%的列被排除在外。

项目结构

weaver-mcp/
├── src/weaver/
│   ├── server.py           # MCP server entry point
│   ├── state.py            # Session state management (Phase 1+)
│   ├── tools/
│   │   ├── profiling.py    # Data profiling tools
│   │   ├── blocking.py     # Blocking tools (Phase 2+)
│   │   ├── matching.py     # Matching tools (Phase 3+)
│   │   └── ...
│   ├── db/
│   │   └── duckdb.py       # DuckDB analytical queries
│   ├── blocking/           # Blocking strategies (Phase 2+)
│   ├── matching/           # Matching engine (Phase 3+)
│   ├── graph/              # Graph clustering (Phase 4+)
│   ├── golden/             # Golden record builder (Phase 5+)
│   ├── analytics/          # Insights engine (Phase 6+)
│   └── schemas/
│       └── tool_inputs.py  # Pydantic validation
├── examples/
│   └── sample_data/        # Test datasets
├── tests/                  # Test suite
└── pyproject.toml

当前状态

第0阶段:基础 -完成

  • profile_data_source 工具加工
  • 用于CSV/Parquet的DuckDB集成
  • 阻止关键候选人建议

第一阶段:多源支持 -进行中

  • 会话状态管理
  • 跨源的架构对齐

看 ROADMAP.md 完整的6阶段开发计划。

发展

运行测试

uv run pytest

添加新工具

  1. 在中实现工具功能 src/weaver/tools/
  2. 在中添加Pydantic输入模型 src/weaver/schemas/tool_inputs.py
  3. 在中注册工具 src/weaver/server.py (list_tools() 和 call_tool())
  4. 在中添加测试 tests/
  5. 更新此自述文件

设计原则

  1. 数据超过代码 -返回结构化JSON,让代理/工具渲染
  2. 可组合工具 -每个工具都能很好地完成一件事
  3. 开发者优先 -优化终端/笔记本电脑工作流程
  4. 性能意识 -在可能的情况下取样,记录权衡
  5. 可解释性 -每个比赛决定都可以被追踪和理解

贡献

欢迎投稿!请打开一个问题来讨论重大更改。

许可证

麻省理工学院