Not-SockPuppet/anakrisis

GitHub: Not-SockPuppet/anakrisis

一个基于 MCP 协议的伦理感知型 OSINT 调查规划与风险评估服务器,通过本地 YAML 准则为情报调查提供风险分级、操作警告和结构化文档支持。

Stars: 0 | Forks: 0

# Anakrisis 协议 **作为 MCP 服务器交付的,具备伦理感知的 OSINT 调查规划与风险评估系统。** Anakrisis 是一个 [Model Context Protocol](https://modelcontextprotocol.io) 服务器,旨在为开源情报工作引入结构化、风险可见性以及文档记录规范。它会对调查进行分类,根据本地 YAML 准则对风险进行评分,标记被禁止的操作,并构建有理有据的案件文档框架——这一切都在任何查询离开你的机器之前完成。 ## 它是什么——以及它不是什么 | Anakrisis 是 | Anakrisis 不是 | |---|---| | 调查规划助手 | OSINT 数据收集工具 | | 风险分类引擎 (LOW / MEDIUM / HIGH) | 爬虫或自动化框架 | | 政策与准则解读层 | 验证或归因服务 | | 文档记录与案件结构辅助工具 | 绕过、规避或匿名化工具 | 这种咨询模型是刻意设计的:Anakrisis 会呈现警告、硬性停止和更安全的替代方案,但它不会中止执行。**操作决策——及其带来的责任——仍由调查人员承担。** ## 工具 九个 MCP 工具涵盖了从立案到发布的整个调查生命周期: | 工具 | 阶段 | 用途 | |---|---|---| | `MissionBrief` | 规划 | 对调查进行分类,分配风险等级,列出硬性停止和安全的初步步骤 | | `CourseCorrection` | 任意阶段 | 随着新工件的出现,提供针对特定阶段的指导和风险重新评估 | | `RulesOfEngagement` | 行动前 | 咨询联锁机制:标记服务条款、隐私、法律和操作风险;建议更安全的替代方案 | | `CreateCase` | 立案 | 在磁盘上搭建结构化的案件工作区 | | `TextAnalyzer` | 分析 | 根据准则对消息、帖子和其他文本工件进行分流 | | `GraphBuilder` | 分析 | 根据案件笔记,在准则指导下进行实体和关系映射 | | `AssignTools` | 收集规划 | 从本地目录推荐外部 OSINT 工具 | | `ReportTemplate` | 报告 | 带有文档记录提醒的结构化报告模板 | | `ReportRedaction` | 发布 | 具备受众意识的脱敏指导,带有可审计的脱敏日志 | ### MissionBrief 主要入口点。给定一个目标(加上可选的上下文:现有工件、限制条件、参与者角色、方法类别、司法管辖区),它会对调查类型进行分类,计算出 LOW / MEDIUM / HIGH 风险等级,列出触发的风险因素和准则驱动的硬性停止,并从匹配的剧本中提出安全的初步步骤。 ### CourseCorrection 针对五个生命周期阶段(`intake`、`planning`、`discovery`、`validation`、`reporting`)的调查中期指导。它会根据新获取的工件重新评估风险,并在出现个人标识符时发出升级警报。 ### RulesOfEngagement 在执行具有潜在风险的操作之前调用。它会扫描提议的操作是否存在服务条款、隐私、法律和操作方面的风险暴露,对整体操作风险进行分类,并建议更安全的替代方案。仅供参考——它只会进行标记,不会进行拦截。 ### 创建 Case 在 `~/anakrisis/cases//` 下创建一个案件工作区,包含标准文件(`objective.md`、`notes.md`、`report.md`、`graph.md`、`metadata.json`)和证据子目录(`Sources`、`Screenshots`、`PDFs`、`Intelligence`、`OtherEvidence`)。案件名称会经过验证以防止路径遍历。现有案件内容永远不会被修改:除非被明确要求,否则拒绝针对现有案件重新运行,而且即使这样,也只会填充缺失的文件。 ### TextAnalyzer 根据准则对文本工件(电子邮件、聊天记录、帖子)进行分析。提取高价值情报和可进行拓展的工件,高亮显示 PII,记录意图和语气,标记敏感内容,并推荐被动拓展——仅进行分析和分流,不进行收集。 ### GraphBuilder 根据调查笔记在准则指导下进行关系映射。识别实体和关系链,分配保守的置信度级别,将事实与推论区分开来,并生成对调查人员友好且兼容 Obsidian 的图谱笔记。 ### AssignTools 从位于 `doctrine/assigntools.yaml` 的静态目录中推荐外部 OSINT 工具,根据工件类型(用户名、电子邮件、电话、域名、公司等)和关键词重叠度进行评分。它只负责推荐工具;从不运行它们。 ### ReportTemplate ### ReportRedaction 准备将报告公开发布、交付给客户或进行受控披露。应用特定于受众的脱敏配置文件,识别 PII / SPII / 来源敏感材料,输出结构化的替换 token 而不是静默删除,并生成带有残余重标识风险评估的脱敏日志。 ## 架构 ``` MCP client (desktop app, agent CLI, or any MCP-capable host) │ stdio (JSON-RPC / MCP) ▼ Anakrisis MCP server (anakrisis.py, FastMCP) │ deterministic classification + heuristic risk scoring ▼ Local YAML doctrine (doctrine/, playbooks/, report_templates/) ``` **默认静默。** 咨询工具(`MissionBrief`、`CourseCorrection`、`RulesOfEngagement`)仅在输入确实触发了某个条件(实质性的风险因素、来自 `doctrine/disallowed_actions.yaml` 的硬性停止规则,或操作安全关键字)时,才会显示警告、硬性停止和审批清单。常规的规划调用会返回干净的规划输出,而不会包含繁琐的警告。这仅仅是对显示进行控制;风险评估本身不会改变。 ## 仓库布局 ``` anakrisis/ ├── anakrisis.py # MCP server (FastMCP, stdio transport) ├── anakrisis # Optional terminal launcher (see below) ├── doctrine/ # All decision doctrine (YAML) │ ├── risk_rules.yaml # Risk factors, scoring, tier thresholds │ ├── disallowed_actions.yaml # Hard-stop rules │ ├── jurisdiction_rules.yaml # Jurisdiction risk modifiers │ ├── actor_profiles.yaml # Actor role definitions │ ├── method_classes.yaml # Method classification schema │ ├── assigntools.yaml # OSINT tool catalog │ ├── text_analyzer.yaml # Text analysis doctrine │ ├── graph_builder.yaml # Relationship-mapping doctrine │ ├── report_redaction.yaml # Redaction profiles and rules │ └── output_policy.yaml # Output formatting / brevity policy ├── playbooks/ # Investigation-type playbooks (YAML) ├── report_templates/ # Report templates (Markdown) ├── Dockerfile ├── .mcp.json # Project-scoped MCP registration └── requirements.txt ``` ## 快速开始 ### 前置要求 - Python 3.10+ - `pip install -r requirements.txt`(安装 `mcp` 和 `pyyaml`) ### 直接运行服务器 ``` python3 anakrisis.py ``` 服务器通过 stdio 进行 MCP 通信并等待客户端连接——单独运行它仅仅是为了确认它能正常启动(缺失的准则文件会被记录为警告,并回退到内置的默认值)。 ### 在 MCP 客户端中注册 对于其他客户端或全局注册,请使用绝对路径将客户端指向该服务器: ``` { "mcpServers": { "anakrisis": { "type": "stdio", "command": "python3", "args": ["/path/to/anakrisis/anakrisis.py"], "env": {} } } } ``` ### Docker ``` docker build -t anakrisis . docker run -i --rm anakrisis ``` 该镜像捆绑了服务器、准则、剧本和报告模板,并以非 root 用户身份运行。由于 MCP 是通过 stdio 运行的,因此在运行命令中请保留 `-i`(或者配置你的 MCP 客户端 / 网关来启动该容器)。为了持久化由 `CreateCase` 创建的案件工作区,请在容器用户的 home 目录上挂载一个卷: ``` docker run -i --rm -v ~/anakrisis:/home/mcpuser/anakrisis anakrisis ``` ## 可选启动器 仓库根目录中的 `anakrisis` 脚本是一个小型的终端启动器(需要 `rich` 包),专为 Docker MCP Gateway + CLI 工作流而设计。它会: 1. 验证它是否是从项目检出中运行的 2. 检查 Docker 是否正在运行,`claude` CLI 是否在 `PATH` 中,以及 Docker MCP Gateway 是否有响应 3. 从 `~/anakrisis/cases` 列出你最近的案件工作区 4. 从项目根目录启动 MCP 客户端 CLI ``` ./anakrisis ``` 它仅仅是一个为了方便而提供的包装器——服务器并不依赖于它。 ## 自定义准则 服务器应用的每一条规则都存在于 YAML 文件中,而不是 Python 代码中。风险因素和等级阈值(`doctrine/risk_rules.yaml`)、硬性停止(`doctrine/disallowed_actions.yaml`)、工具目录(`doctrine/assigntools.yaml`)、分析和脱敏准则、剧本以及报告模板——所有这些都可以在不触碰服务器代码的情况下进行编辑,或者直接替换为你所在组织自己的策略。 准则文件会根据修改时间进行缓存失效处理,因此编辑内容会在下一次工具调用时生效,而无需重启服务器。 ## 设计理念 Anakrisis 遵循成熟安全工具的责任模型: - **可见性高于限制** —— 风险暴露会被呈现出来,而不是被掩盖 - **警告高于强制** —— 系统提供建议;但不会进行拦截 - **结构高于即兴发挥** —— 剧本、阶段和模板确保工作有理有据 - **用户责任高于自动控制** —— 判断力始终掌握在调查人员手中 ## 负责任地使用 Anakrisis 仅生成咨询性指导。它不验证任何操作的合法性,不构成法律建议,也不能防止滥用。风险等级和警告是启发式的辅助工具,而不是合规性判定。你有绝对的责任确保你的调查活动符合适用的法律、平台服务条款以及你所在组织的政策。不要向系统输入其不需要的实时个人数据,也永远不要将其输出视为行动的授权。 ## 许可证 [MIT](LICENSE)
标签:ESC4, MCP, OSINT, 任务规划, 合规框架, 请求拦截, 逆向工具