文档管理器MCP服务器
一种智能模型上下文协议(MCP)服务器,可在所有Documenters网络数据中提供AI驱动的搜索。该服务器支持对来自19个以上城市的数千个地方政府会议进行语义和混合搜索。
特性
- 混合搜索:结合语义(Gemini嵌入)和关键字搜索
- 综合数据:所有历史会议记录、作业和文件
- 实时同步:每2小时从生产数据库自动同步一次
- 丰富的上下文:程序/城市、机构和时间过滤
- MCP兼容:与Claude和其他启用MCP的客户合作
建筑
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Production │ │ Supabase │ │ MCP Client │
│ Database │───▶│ (Sync + RAG) │───▶│ (Claude) │
│ (Heroku) │ │ │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌──────────────────┐
│ Ask Docsy Web │
│ (Vercel) │
└──────────────────┘快速开始
1.部署基础设施
# Clone and navigate to the project
cd /Users/j/GitHub/docs-ai/documenters-mcp
# Run deployment script (requires supabase CLI)
./deploy.sh2.运行MCP服务器
# Install dependencies
pip install mcp httpx
# Run the server
python src/server.py3.与Claude一起使用
添加到您的Claude MCP配置中:
{
"mcpServers": {
"documenters": {
"command": "python",
"args": ["/path/to/documenters-mcp/src/server.py"],
"env": {
"SUPABASE_URL": "https://gvluxfxoxiauztcpkznh.supabase.co",
"SUPABASE_ANON_KEY": "your_anon_key"
}
}
}
}MCP工具可用
search_documenters
使用筛选器搜索所有Documenter内容:
- 怎么翻译:自然语言或关键字搜索
- 程序:按城市筛选(例如,\[“芝加哥”、“底特律”\])
- 机构:按机构类型筛选(例如,\[“市议会”\])
- date_from/date_to:时间范围过滤器
- 搜索方法:“语义”、“关键字”或“混合”
get_agency_timeline
获取代理活动的时间轴:
- 机构:要跟踪的机构名称
- 程序:要筛选的特定城市
- 月基准:要搜索多远(默认值:12)
- 话题:可选主题焦点
track_topic_across_cities
比较各城市讨论主题的方式:
- 话题:取决于轨道(例如,“住房”、“警察改革”)
- 程序:要比较的城市(留空)
- 时间周期:“最后一个月”、“最后三个月”等。
get_meeting_insights
具体会议的详细分析:
- 会议_查询:查找会议的描述
- 分析类型:“摘要”、“关键决策”、“公开意见”、“行动项目”
compare_policies
比较各城市的政策方法:
- 政策主题:要比较的政策领域
- 城市:要比较的城市(留空)
数据同步
系统自动同步生产数据库中的数据:
表已同步
- 程序:所有Documenters项目/城市
- 机构:政府机构和部门
- 任务:会议报道任务
- 角色:个人文档管理员角色
- 提交:会议记录和清单数据
- 文件:附加文件和内容
同步时间表
- 每2小时:更改数据的增量同步
- 每天凌晨3点:健康检查和验证
- 每6小时:为新内容生成嵌入
监控
检查同步运行状况:
SELECT * FROM sync_health_check();查看最近的同步日志:
SELECT * FROM sync_logs ORDER BY started_at DESC LIMIT 10;矢量嵌入
使用Gemini embedding-001进行语义搜索:
- 3072维度 向量
- 基于块 文本处理(1000个字符,200个重叠)
- 元数据 用于过滤(程序、机构、日期)
- 混合搜索 结合语义相似性和关键字相关性
查询示例
询问MCP服务器:
- “芝加哥正在讨论哪些住房政策?”
- “向我展示最近各城市的警察改革讨论”
- “底特律市议会对削减预算做出了什么决定?”
- “比较所有城市的气候变化举措”
- “过去6个月里,人们提到了‘经济适用房’”
发展
项目结构
documenters-mcp/
├── sql/ # Database migrations and functions
│ ├── 01_comprehensive_schema.sql
│ └── 02_sync_functions.sql
├── supabase/functions/ # Edge functions
│ ├── generate-embeddings/
│ └── mcp-search/
├── src/ # MCP server code
│ └── server.py
├── deploy.sh # Deployment script
└── README.md地方发展
- 设置环境变量:
export SUPABASE_URL="https://gvluxfxoxiauztcpkznh.supabase.co"
export SUPABASE_ANON_KEY="your_anon_key"
export GEMINI_API_KEY="your_gemini_key"- 安装依赖项:
pip install mcp httpx supabase- 在本地运行:
python src/server.py生产部署
该系统部署在Supabase上,具有:
- 数据库:带有pgvector扩展名的PostgreSQL
- 边缘功能:基于Deno的无服务器函数
- 工作排程:自动同步调度
- 安全套接层:与生产数据库的安全连接
故障排除
同步问题
-- Check for failed syncs
SELECT * FROM sync_logs WHERE status = 'failed' ORDER BY started_at DESC;
-- Reset sync if needed
UPDATE sync_metadata SET sync_status = 'ready' WHERE sync_status = 'running';嵌入问题
-- Check embedding counts
SELECT COUNT(*) FROM document_embeddings;
-- Manually trigger embedding generation
SELECT net.http_post(
'https://gvluxfxoxiauztcpkznh.supabase.co/functions/v1/generate-embeddings',
'{"batch_size": 50}'
);搜索问题
- 检查Supabase日志中的边缘函数错误
- 验证Gemini API密钥设置正确
- 直接通过curl测试搜索功能
贡献
- 分叉存储库
- 创建要素分支
- 通过适当的测试进行更改
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
支持
对于问题和疑问:
- 检查上面的故障排除部分
- 查看Supabase项目日志
- 联系开发团队
