内容
# 小改进MCP
[](https://github.com/kylehoehns/small-improvements-mcp/actions/workflows/ci.yml)
一个本地的、只读的MCP服务器,用于拉取您自己的小改进数据(赞扬、目标、360度反馈、评论),以便MCP客户端帮助您撰写“今年我做了什么” / 年终自我评估。
## 前提条件
- **Node.js 24+**
- 一个MCP客户端(Claude Code、Claude Desktop、Cursor等)
- 具有API访问权限的小改进账户
## 设置
克隆并安装 — 安装步骤会自动构建:
```bash
git clone https://github.com/kylehoehns/small-improvements-mcp.git
cd small-improvements-mcp
npm install
```
这会生成 `dist/index.js` — 您在下面指向MCP客户端的入口点。
(要重新构建,请在更改源代码后运行 `npm run build`。)
在小改进中创建个人访问令牌:
**个人资料 → 管理 → API访问令牌 → 创建令牌**。该令牌继承您的权限;服务器只会读取关于您的数据。
## 在MCP客户端中注册
这是一个标准的stdio MCP服务器 — 任何MCP客户端(Claude Code、Claude Desktop、Cursor等)都以相同的方式启动它:使用您的令牌在 `SI_API_TOKEN` 环境变量中运行 `node dist/index.js`。将类似下面的代码块放入客户端的MCP配置中,使用 **您克隆的绝对路径** `dist/index.js`:
```json
{
"mcpServers": {
"small-improvements": {
"command": "node",
"args": ["/绝对路径/to/small-improvements-mcp/dist/index.js"],
"env": { "SI_API_TOKEN": "您的令牌" }
}
}
}
```
> **像对待密码一样处理令牌。** `SI_API_TOKEN` 是一个具有您完全读取权限的凭证。保持字面值不出现在您可能共享的文件中,**永远不要提交包含真实令牌的配置**,如果令牌被泄露,请更换它。
### 提供令牌
客户端在启动服务器和处理机密方面有所不同,因此请选择适合您的:
- **直接在配置中** (最简单)。可以先这样做 — 只要将该文件放在任何存储库之外,并 `chmod 600`。
- **环境变量间接。** 一些客户端在配置中扩展 `${VAR}`,因此您可以设置 `"SI_API_TOKEN": "${SI_API_TOKEN}"`,并将实际值保存在shell环境中而不是文件中。(支持因客户端而异 — 请检查您的客户端是否支持。)
- **启动时的机密管理器。** 将令牌保存在保险库中,并在服务器启动时注入,以便任何敏感信息都不会接触到配置。例如,使用1Password CLI,设置 `"command": "op"`,`"args": ["run", "--", "node", "…/dist/index.js"]`,以及 `"SI_API_TOKEN": "op://<vault>/<item>/credential"`;一个读取macOS Keychain(或任何机密工具)并执行node的小包装脚本也可以。
**注意:** 通过GUI启动的客户端通常不会继承您的shell `PATH`,并且可能不会扩展 `${VAR}`。如果 `node` 来自版本管理器(nvm、fnm等)或者服务器无法启动,请使用 **绝对路径** 到 `node` 和 `dist/index.js`(使用 `which node` 查找二进制文件)。
可选参数适用于任何客户端:`SI_BASE_URL` (默认为 `https://app.small-improvements.com/api`)。
## 验证其有效性
重启MCP客户端,使其获取新的服务器,然后询问类似:
> 运行 `whoami`
您应该会得到自己的ID、姓名、电子邮件和角色。如果是这样,您已连接 — 尝试 **"给我今年的回顾"** 以获取完整的吹嘘文档转储。如果服务器未显示,请再次检查路径是否为绝对路径,并指向已构建的 `dist/index.js`。
## 工具
| 工具 | 返回内容 |
|------|-----------------|
| `whoami` | 您的ID、姓名、电子邮件、角色。 |
| `get_praise` | 收到的/给予的赞扬(方向、开始日期、结束日期)。 |
| `get_objectives` | 具有状态、完成百分比、评级的目标(开始日期、结束日期)。 |
| `get_feedback` | 收到的/给予的360度反馈,扩展到书面答案(方向、日期)。 |
| `get_reviews` | 正式的审查周期 — 仅限结构(答案文本不通过API公开)。 |
| `get_year_in_review` | 上述所有内容合并,默认为过去12个月。 |
日期格式为 `yyyy-MM-dd`。首先使用 `get_year_in_review` 获取完整的吹嘘文档转储。
## 备注
- `test/fixtures/` 包含 **匿名化** 的捕获响应(真实姓名、电子邮件和自由文本被清理为 `Person N` / `personN@example.com` / 占位符文本)。结构与实时API匹配,以便测试保持有意义。
- 开发:`npm run dev` (tsx),`npm test`,`npm run typecheck`。