内容
# 事件事后总结服务器
用于事件事后总结的 MCP 服务器,使用 Rust 和 `rmcp` 通过标准输入输出构建。
[](https://crates.io/crates/living-postmortem-mcp)
[](https://docs.rs/living-postmortem-mcp)
[](https://github.com/Zandelok/living-postmortem-mcp/blob/main/LICENSE)
它将事件以 Markdown 文件存储在您的 vault 中,并提供 4 种工具:
- `创建事件`
- `添加时间线条目`
- `搜索类似事件`
- `解决事件`
## 功能
- 在您的 vault 中创建事件事后总结 Markdown 文件
- 在同一文件中保存时间线条目和解决方案更新
- 通过词汇重叠(标题 + 根本原因 + 模式)搜索类似事件
- 使用状态表情符号 Markdown 模板,包含以下部分:
- 时间线
- 根本原因
- 动作项(检测 / 缓解 / 预防)
- 模式
## 要求
- Rust 工具链(稳定版)
- 支持标准输入输出服务器的 MCP 主机/客户端
- 可写的 vault 目录路径
## 安装
### 选项 1:安装已发布的版本(crates.io)
```bash
cargo install living-postmortem-mcp --version 0.1.1
```
### 选项 2:从源代码构建
```bash
git clone https://github.com/Zandelok/living-postmortem-mcp.git
cd living-postmortem-mcp
cargo build --release
```
二进制文件路径:
```bash
./target/release/living-postmortem-mcp
```
### 选项 3:在开发模式下直接运行
```bash
cargo run -- --vault /绝对路径/to/vault
```
### 已发布软件包链接
- 软件包:https://crates.io/crates/living-postmortem-mcp
- API 文档:https://docs.rs/living-postmortem-mcp
- 源代码:https://github.com/Zandelok/living-postmortem-mcp
## 维护者发布(受信任的发布)
此仓库通过以下方式发布到 crates.io:
- `.github/workflows/publish.yml`
### crates.io 的一次性设置
在 crates.io 软件包设置(`living-postmortem-mcp`)中,添加一个受信任的发布者:
- 所有者/组织:`Zandelok`
- 仓库:`living-postmortem-mcp`
- 工作流文件:`publish.yml`
- 环境:留空,除非您稍后添加 GitHub Actions 环境门控
### 发布工作流使用
- 仅手动验证:运行 `Publish crate`,并设置 `dry_run=true`(默认值)。
- 真正发布:推送一个格式为 `v<version>` 的标签(例如 `v0.1.1`)。
- 安全防护:工作流在发布前检查标签版本是否与 `Cargo.toml` 中的 `version` 匹配。
## 服务器命令行界面
```bash
living-postmortem-mcp --vault <路径>
```
注意:
- `--vault` 是必需的
- 服务器自动创建 `<vault>/incidents/`
- 文件保存为 Markdown:`<vault>/incidents/<incident_id>.md`
## MCP 客户端设置
使用编译后的二进制文件,带有标准输入输出传输,并传递 `--vault`。
### 光标(`.cursor/mcp.json`)
```json
{
"mcpServers": {
"living-postmortem": {
"command": "/绝对路径/to/living-postmortem-mcp/target/release/living-postmortem-mcp",
"args": ["--vault", "/绝对路径/to/your/vault"]
}
}
}
```
### 克劳德桌面版(`claude_desktop_config.json`)
```json
{
"mcpServers": {
"living-postmortem": {
"command": "/绝对路径/to/living-postmortem-mcp/target/release/living-postmortem-mcp",
"args": ["--vault", "/绝对路径/to/your/vault"]
}
}
}
```
## 工具参考
### `创建事件`
创建新的事件 Markdown 文件。
输入:
- `标题`(字符串,必填)
- `根本原因`(字符串,选填)
- `检测动作`(字符串数组,选填)
- `缓解动作`(字符串数组,选填)
- `预防动作`(字符串数组,选填)
- `模式`(字符串数组,选填)
- `初始时间线`(字符串数组,选填)
返回:
- `incident_id`
- `文件路径`
- `状态`(`open`)
### `添加时间线条目`
将时间线条目追加到现有事件。
输入:
- `incident_id`(字符串,必填)
- `摘要`(字符串,必填)
- `时间戳`(RFC3339 字符串,选填;默认为当前时间)
返回:
- `incident_id`
- `文件路径`
- `条目`(渲染的 Markdown 时间线行)
### `搜索类似事件`
通过词汇标记重叠查找相关事件。
输入:
- `查询`(字符串,必填)
- `限制`(数字,选填,默认值 `5`,限制 `1..50`)
返回:
- `查询`
- `事件[]`,包含:
- `incident_id`
- `标题`
- `分数`
- `匹配术语`
### `解决事件`
将事件标记为已解决,并可选地追加解决方案摘要。
输入:
- `incident_id`(字符串,必填)
- `解决方案摘要`(字符串,选填)
- `resolved_at`(RFC3339 字符串,选填;默认为当前时间)
返回:
- `incident_id`
- `状态`(`resolved`)
- `resolved_at`
- `文件路径`
## Markdown 输出格式
每个事件文件包含 frontmatter 和结构化正文:
- Frontmatter:`incident_id`、`status`、`created_at`、`resolved_at`
- 标题:`# <emoji> <标题>`
- `## 时间线`
- `## 根本原因`
- `## 动作项`
- `### 检测`
- `### 缓解`
- `### 预防`
- `## 模式`
## 开发
```bash
cargo fmt
cargo clippy --all-targets -- -D warnings
cargo test
```
## 许可证
MIT(参见 `LICENSE`)。