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, 任务规划, 合规框架, 请求拦截, 逆向工具