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添加新工具
- 在中实现工具功能
src/weaver/tools/ - 在中添加Pydantic输入模型
src/weaver/schemas/tool_inputs.py - 在中注册工具
src/weaver/server.py(list_tools()和call_tool()) - 在中添加测试
tests/ - 更新此自述文件
设计原则
- 数据超过代码 -返回结构化JSON,让代理/工具渲染
- 可组合工具 -每个工具都能很好地完成一件事
- 开发者优先 -优化终端/笔记本电脑工作流程
- 性能意识 -在可能的情况下取样,记录权衡
- 可解释性 -每个比赛决定都可以被追踪和理解
贡献
欢迎投稿!请打开一个问题来讨论重大更改。
许可证
麻省理工学院
