Skip to main content
Glama

Chimera MCP Server

by Hank-coder
CLAUDE.md17.6 kB
## 开发规范 为确保项目的可维护性、可扩展性及团队协作效率,请开发成员严格遵循以下规范: 1. **需求导向开发** - 在开始编码前,必须认真阅读并理解相关的需求文档(PRD、技术方案、接口协议等)。 - 如有疑问,应在开发前及时与产品经理或架构师沟通确认,避免因误解导到返工。 2. **优先复用与增量修改** - **禁止盲目新建文件**:在新建模块或类文件前,必须浏览现有项目结构与历史代码。 - 若已有模块逻辑相关,应优先在现有文件中扩展或复用,避免重复造轮子与结构分裂。 3. **目录结构与命名规范** - 所有代码文件必须放置在预定义的目录中,**严禁随意创建目录或平铺文件结构**。 - 命名需符合项目约定(如:小写+下划线,CamelCase,特定前缀等),以提升可读性与一致性。 - 不得在主目录下直接新增源文件或脚本,应依据功能划分归类存放。 4. **文件与模块粒度控制** - 文件大小应合理控制,避免出现**巨型类(God Class)**或**超长脚本**,建议单文件专注单一职责。 - 拆分模块时,应保持解耦、内聚、清晰边界,避免模块间隐式依赖。 5. **代码结构要求** ⭐ - **所有与LLM交互都需要使用Pydantic格式化,统一放在 `core/models.py`** - **所有prompt模板放在 `prompts/` 文件夹,使用LangChain的PromptTemplate** - **严禁在业务逻辑代码中硬编码prompt字符串** - **所有LLM API调用必须有完整的类型提示和错误处理** # 个人AI记忆核心 (Project Chimera) - 产品设计文档 ## 快速开始 ### 环境要求 - Python 3.11+ - Neo4j 5.0+ - UV包管理器 ### 快速启动(冷启动) ```bash # 1. 克隆项目 git clone <repo-url> cd Chimera # 2. 安装依赖 uv sync # 3. 配置环境变量 cp .env.example .env # 编辑.env文件,配置必要的API密钥 # 4. 启动Neo4j数据库 # 确保Neo4j运行在localhost:7687 # 5. 启动系统 uv run python run_chimera.py ``` ### 配置项说明 (.env文件中) - `NOTION_TOKEN`: Notion API密钥 - `NEO4J_PASSWORD`: Neo4j数据库密码 - `GEMINI_API_KEY`: Google Gemini API密钥 - `CHIMERA_API_KEY`: 系统Bearer认证密钥(可选) - `GEMINI_MODEL`: 默认使用的llm模型 ## 1. 项目愿景与核心原则 ### 1.1 项目愿景 打造一个与我共生的、可进化的个人认知中枢。它不仅是过去记忆的存储器,更是未来创造的加速器,让 AI 成为真正懂我、助我成长的"第二大脑"。 ### 1.2 核心设计原则 - 图谱即索引 (Graph as Index): 本项目的核心哲学。Notion 是唯一的事实源头和内容载体;图数据库是其上的一层智能关系网络。系统通过查询图谱找到"路",然后回到Notion读取详细内容。 - 不重复原则 (No Duplication): 严格遵守数据极简,图数据库不存储Notion页面正文,仅存储关系和元数据,从根本上避免数据一致性问题。 - 用户无感 (Seamless Experience): 所有后台同步和索引工作对用户透明,用户只需在Notion中自然地记录和组织。 ## 2. 数据模型 ### 2.1 统一节点模型::NotionPage 整个图谱只使用一种核心节点,通过属性来区分其具体类型和状态。 | 属性 | 类型 | 来源 | 作用 | |------|------|------|------| | notionId | String | Notion API | 唯一主键,连接图谱与Notion的桥梁。 | | title | String | Notion API | 方便识别和基础搜索。 | | type | String | Notion API | 区分对象类型 (page, database, block)。 | | tags | List<String> | Notion API | 页面的标签,用于主题聚类。 | | embedding | Vector | AI生成 | AI导航核心,基于标题和摘要生成,用于语义搜索。 | | lastEditedTime | DateTime | Notion API | 增量同步的关键,判断页面是否需要更新。 | | url | String | Notion API | 方便从任何工具直接跳转回Notion源页面。 | ### 2.2 核心关系模型 通过精炼的关系类型,捕捉Notion中的结构与语义。 | 关系类型 | 模型 | 来源 | 作用 | |----------|------|------|------| | CHILD_OF | (:Page)-[:CHILD_OF]->(:Page) | 页面parent属性 | 结构骨架,映射Notion的页面层级。 | 待扩展: | LINKS_TO | (:Page)-[:LINKS_TO]->(:Page) | 页面内链[[...]] | 显式引用,连接您手动关联的两个想法。 | | RELATED_TO | (:Page)-[:RELATED_TO]->(:Page) | Database的relation属性 | 结构化关联,利用Notion Database的强大功能。 | | MENTIONS | (:Page)-[:MENTIONS]->(:Page) | 页面内@提及 | 实体提及,常用于连接到人员或特定项目页面。 | | HAS_TAG | (:Page)-[:HAS_TAG]->(:Tag) | 页面的tags属性 | 主题聚类,将不同层级的页面按主题连接起来。 | ## 3. 系统架构与工作流 ### 3.1 精简双服务架构 uv管理 - **后台同步服务 (The Archivist - 档案保管员)**: 独立、低频运行的进程。唯一职责是忠实地读取Notion,并使用Graphiti根据数据模型更新Neo4j图谱索引。 - 同步策略:智能混合同步(增量+全量) - 增量同步:默认30分钟间隔,检测变化后更新 - 全量同步:隔天北京时间4:00-4:30自动执行,或超过3天强制执行 - 包含删除检测:全量同步时会清理Notion中已删除的页面 - **MCP检索服务 (The Navigator - 导航员)**: 轻量、快速、无状态的服务。唯一职责是响应LLM的请求,在图谱中快速搜索,并返回一个notionId列表。 - 基于FastMCP实现,支持Graphiti的语义搜索 - 包含意图搜索系统,使用Gemini 2.0 Flash进行查询优化 ### 3.2 核心查询工作流 1. 查询发起: 用户向集成了本系统的AI应用提问。 2. 关系导航: MCP检索服务接收查询,在图数据库中通过 LLM 和关系遍历(CHILD_OF, LINKS_TO等)找到最相关的一批页面的notionId。 3. 返回ID列表: MCP服务将去重和排序后的notionId列表返回给AI应用。 4. 内容获取: AI应用根据ID列表,通过Notion API实时、并发地获取这些页面的最新原文。 5. 上下文构建: AI应用将"关系摘要"(例如:"找到项目A,它提到了张三")和"页面原文"组合成一个丰富的上下文。 6. 生成回答: AI应用将此上下文连同原始问题一起发送给大语言模型(LLM),获得精准、深刻的回答。 7. 输出和输入必须格式化 使用pydantic ## 4. "一步到位"的实施计划 ### 4.1 核心同步逻辑 后台同步服务需严格遵循以下步骤: 1. 通过Notion API获取所有需要索引的页面元数据。 2. 遍历列表,在本地JSON缓存及Neo4j NotionPage节点更新属性 (分全量和增量同步) 3. 对每个页面,根据其parent_id、[[...]]内链、relation属性、@提及和tags属性,分别MERGE对应的五种核心关系。 ### 4.2 MCP工具集(已完整实现)✅ #### 1. **🧠 个人记忆搜索(Notion)** - intent_search **核心功能**: 从第二大脑(Notion)中查找相关笔记、记录、项目、总结等内容。 **参数列表**: - `query` (str, 必填): 搜索关键词或短语,支持时间信息,例如:"上周碳中和计划" - `confidence_threshold` (float, 默认0.8): 最低置信度阈值,范围0.5-1.0,用于过滤搜索结果 - `search_results` (int, 默认3): 返回的最大搜索结果条数 - `expansion_depth` (int, 默认1): 路径扩展深度,决定关联更多上下游页面的层级 - `max_file_content_length` (int, 默认8000): 单个文档文件内容最大字符数限制 - `max_page_content_length` (int, 默认10000): 单个Notion页面内容最大字符数限制 **技术实现**: - 使用Gemini 2.0 Flash进行意图理解和查询优化 - 基于Graphiti的语义搜索和关系遍历 - 支持置信度评估和路径扩展 - 自动提取文档文件内容(PDF、Word等) - 返回完整路径内容和时间戳信息 **返回结果**: ```json { "success": true, "data": { "paths": [ { "path": "Hank -> 项目管理 -> 碳中和计划", "confidence": 0.95, "last_edited_time": "2024-01-15T10:30:00Z", "path_contents": [/* 路径中所有页面的详细内容 */], "total_pages": 3 } ], "search_summary": "找到 3 条相关路径", "intent_keywords": ["碳中和", "计划", "项目管理"] }, "message": "找到 3 个相关结果" } ``` #### 2. **🌐 社交关系搜索(微信)** - relationship_search **核心功能**: 从微信聊天记录中查找人际关系、群组成员、活动参与等社交信息。 **参数列表**: - `query` (str, 必填): 关系查询问题,可以是人名、项目名或关系问题 - `max_results` (int, 默认3, 最大10): 返回的最大搜索结果数量 **典型查询**: - 人名查询:例如 "敏哥"、"JZX" - 项目查询:例如 "GREEN项目"、"研发项目" - 关系查询:例如 "谁参与了GREEN项目"、"肥猫是什么角色" **技术实现**: - 基于实体识别和关系图谱的智能搜索 - 支持模糊匹配和别名识别 - 自动分析查询类型(人物、项目、关系) - 生成结构化的关系摘要 **返回结果**: ```json { "success": true, "data": { "relationships": [/* 匹配的关系实体数组 */], "formatted_answer": "敏哥在GREEN研发项目中担任核心开发角色,参与了架构设计和技术选型...", "query_analysis": { "query_type": "person_role", "entities": ["敏哥", "GREEN项目"], "intent": "查询人物在项目中的角色" }, "processing_time_ms": 150 }, "message": "找到 3 个相关关系" } ``` #### 3. **🔬 智能深度研究** - deep_research ✨**新功能** **核心功能**: 基于根页面进行深度研究分析,生成大模型可直接使用的结构化研究上下文。 **参数列表**: - `page_id` (str, 必填): 研究起点页面ID - `purpose` (str, 必填): 研究目的和关注点(后期用于工蜂判断内容关联度) - `max_pages` (int, 默认10, 范围5-20): 返回的最大页面数量 - `research_complexity` (str, 默认"standard"): 研究复杂度级别 **研究复杂度级别**: - `overview`: 高层概览,突出核心结论和趋势(压缩率30%,目标长度800字符) - `standard`: 平衡分析,核心观点+支撑证据(压缩率50%,目标长度1200字符) - `detailed`: 深度分析,包含方法论和案例(压缩率60%,目标长度1800字符) - `comprehensive`: 学术级分析,完整理论框架(压缩率80%,目标长度2500字符) **系统架构**: - **固定遍历深度**: 4层子页面(发现更多候选页面) - **固定Worker数量**: 4个并发智能体(优化并发性能) - **语义分簇**: 基于内容相似性自动分组 - **关联度过滤**: 基于研究目的过滤无关内容(阈值0.2,降级0.1) - **KV Cache优化**: 稳定前缀设计,最大化缓存命中率 **技术实现**: - **Director-Worker架构**: 1个总控智能体 + 4个处理工蜂 - **多Agent协作**: 语义分簇 → 并发处理 → 关联度过滤 → 综合分析 - **Purpose-driven过滤**: 每个Worker根据研究目的评估内容关联度 - **结构化压缩**: 保持信息完整性的同时优化token使用 - **错误恢复**: 完整的降级策略和容错机制 **返回结果**: ```json { "success": true, "data": { "research_context": { "executive_summary": "基于standard模式的综合摘要,整合了6个主题簇的核心观点...", "topic_clusters": [ { "cluster_id": "worker_0", "theme": "主题簇_1", "pages": [/* 页面分析结果数组 */], "cluster_synthesis": "该簇的400-600字综合分析...", "representative_quotes": ["代表性引用1", "代表性引用2"], "cross_references": ["与其他主题的关联说明"] } ], "top_pages": [/* 按重要性排序的顶级页面分析 */], "key_insights": [ "洞察1:跨主题的重要发现或趋势", "洞察2:具有指导意义的核心原则" ], "supporting_evidence": [/* 支撑证据数组 */], "research_framework": { "problem_definition": "基于内容总结的核心研究问题", "theoretical_foundation": "理论基础和概念框架", "methodology_insights": "从内容中提炼的方法论指导", "expected_contributions": "可能的学术和实践贡献" }, "future_directions": [/* 后续研究方向建议 */] }, "complexity_applied": "standard", "pages_analyzed": 10, "processing_metadata": { "workers_used": 6, "depth_traversed": 3, "api_calls_made": 25, "processing_time_seconds": 45.2, "clusters_formed": 4, "top_pages_selected": 10 } }, "message": "研究完成:standard级分析,10个顶级页面,4个主题簇" } ``` **典型用途场景**: - **学术研究**: 从大量资料中提取结构化研究框架 - **项目分析**: 深度分析项目文档,生成洞察报告 - **知识整合**: 将分散的笔记整合成系统性知识 - **决策支持**: 为复杂决策提供全面的背景分析 - **内容创作**: 为写作提供深度研究素材 ### 4.3 MCP工具优势特性 - **智能意图理解**: 使用Gemini 2.0 Flash进行查询优化 - **多模态内容**: 支持文本、文档、图片等多种格式 - **关联度过滤**: 基于目的的智能内容筛选 - **并发处理**: 多Agent并发架构,高效处理大量内容 - **容错机制**: 完整的错误处理和降级策略 - **Token优化**: KV Cache优化,降低API调用成本 - **实时同步**: 内容永远从Notion实时获取,保证最新性 - **结构化输出**: 严格的Pydantic模型,确保数据质量 ### 4.3 项目进展状态 ✅ 项目已完成核心功能开发,当前状态: - ✅ **第一周完成**:核心同步服务 - Notion API连接与数据提取 - 智能同步调度器(增量+全量混合策略) - Graphiti客户端集成 - ✅ **第二周完成**:MCP检索服务 - FastMCP服务器实现 - 语义搜索与意图理解 - 文件内容提取与处理 - ✅ **第三周完成**:集成优化 - 端到端系统测试 - 日志监控与错误处理 - 配置管理与部署脚本 ## 5. 项目优势 - 开发极简: 关系提取逻辑清晰,不依赖复杂的NLP,完美复用Notion的结构化数据。 - 维护轻松: 单向数据流,图谱作为无状态索引,无需担心数据同步冲突。 - 实时一致: 内容永远从Notion实时获取,保证了信息的最新性。 - 高度可扩展: 未来若发现新的关联模式,只需在同步逻辑中增加一种关系提取规则即可,核心架构保持不变。 ## 项目目录结构(实际版本) ``` Chimera/ ├── README.md ├── requirements.txt ├── pyproject.toml # uv项目配置和依赖管理 ├── uv.lock # 依赖锁定文件 │ ├── config/ # 配置管理 │ ├── __init__.py │ ├── settings.py # 环境变量和配置 │ └── logging.py # 日志配置 │ ├── core/ # 核心业务逻辑 │ ├── __init__.py │ ├── models.py # 数据模型定义 (包含所有LLM交互的Pydantic模型) │ ├── graphiti_client.py # Graphiti封装客户端 │ ├── notion_client.py # Notion API客户端 │ ├── file_extractor.py # 文件内容提取器 │ └── correct_mcp_chain.py # MCP链式调用处理 │ ├── sync_service/ # 后台同步服务 │ ├── __init__.py │ ├── sync_service.py # 同步服务主体(包含智能同步策略) │ ├── notion_scanner.py # Notion结构扫描 │ ├── graph_updater.py # 图数据库更新器 │ └── scheduler.py # 定时任务调度 │ ├── agents/ # 智能Agent系统 │ ├── __init__.py │ └── intent_search.py # 意图搜索系统 (使用Gemini 2.0 Flash) │ ├── prompts/ # 提示词模板管理 ⭐ │ ├── __init__.py │ └── intent_evaluation.py # 意图评估提示词 │ ├── utils/ # 工具函数 │ ├── __init__.py │ └── fastmcp_utils.py # FastMCP工具函数 │ ├── scripts/ # 脚本工具 │ ├── __init__.py │ └── setup_database.py # 数据库初始化 │ ├── tests/ # 测试代码 │ ├── __init__.py │ ├── notion/ # Notion相关测试 │ ├── sync_service/ # 同步服务测试 │ ├── mcp_server/ # MCP服务器测试 │ └── demo_intent_search.py # 意图搜索演示 │ ├── logs/ # 日志文件 ├── llm_cache/ # LLM缓存 ├── docs/ # 技术文档 │ ├── fastmcp_server.py # FastMCP服务器入口 ├── run_chimera.py # 系统启动脚本 └── server_config.md # 服务器配置文档 ```

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Hank-coder/chimera_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server