内容
# griply-mcp
[](https://codecov.io/github/vinayh/griply-mcp)
一个适用于 [Griply](https://griply.app) 的 [MCP](https://modelcontextprotocol.io) 服务器,通过Firebase/Firestore API为AI助手提供直接访问您的目标、任务和习惯的功能。
> **免责声明:** 这是一个非官方的个人项目。它不被Griply认可、批准或关联。使用风险自负。
## 安装
```bash
bun install
```
### Firebase 配置
在 `src/firebase/config.ts` 中创建您的Griply Firebase项目配置(此文件被git忽略):
```typescript
export const firebaseConfig = {
apiKey: "...",
authDomain: "...",
projectId: "...",
storageBucket: "...",
messagingSenderId: "...",
appId: "...",
};
```
您可以从Griply网页应用的JavaScript包中提取这些值。
### 身份验证密钥
使用Bun的密钥API存储您的Griply身份验证凭证:
```bash
bun -e 'await Bun.secrets.set({ service: "griply-mcp", name: "GRIPLY_EMAIL", value: "your-email@example.com" })'
bun -e 'await Bun.secrets.set({ service: "griply-mcp", name: "GRIPLY_PASSWORD", value: "your-password" })'
```
Bun将这些存储在您的操作系统凭证存储中:macOS上的钥匙串,Linux上的libsecret,Windows上的凭证管理器。
如果未设置Bun密钥,服务器将回退到环境变量。如果您更喜欢这种方式或需要在CI/部署中使用,请创建一个`.env`文件:
```
GRIPLY_EMAIL=your-email@example.com
GRIPLY_PASSWORD=your-password
GRIPLY_TIMEZONE=Europe/London # 可选,IANA时区名称;默认为America/New_York
```
`GRIPLY_TIMEZONE`用于编码截止日期(Griply将它们锚定在用户本地时区的午夜),并格式化`startDate`/`deadline`输出为用户选择的日期。将其设置为您的Griply客户端使用的时区。
## 与Claude Code一起使用
将以下内容添加到 `~/.claude/settings.json`:
```json
{
"mcpServers": {
"griply": {
"command": "bun",
"args": ["/path/to/griply-mcp/src/index.ts"]
}
}
}
```
如果您使用`.env`备用方案而不是Bun密钥,请在启动服务器之前导出`GRIPLY_`变量。
## 工具
### 目标
| 工具 | 描述 |
|------|-------------|
| `list_goals` | 列出目标,可选地按生活领域过滤 |
| `get_goal` | 获取具有关联任务的目标 |
| `create_goal` | 创建新目标 |
| `complete_goal` | 将目标标记为已完成 |
| `get_goal_progress` | 根据任务完成情况计算目标进度 |
### 任务
| 工具 | 描述 |
|------|-------------|
| `list_tasks` | 列出任务并使用筛选器(`today`、`upcoming`、`inbox`、`all`、`completed`) |
| `create_task` | 创建新任务,可选地设置优先级、截止日期、时间段和目标链接 |
| `update_task` | 更新现有任务的名称、优先级、日期或时间段 |
| `complete_task` | 将任务标记为已完成 |
| `delete_task` | 硬删除任务。Griply移动应用通过云函数软删除,我们无法从客户端SDK访问;读取过滤掉移动应用软删除(`deletedAt`),因此结果对称。 |
### 习惯
| 工具 | 描述 |
|------|-------------|
| `list_habits` | 列出具有计划元数据和今日完成状态的活跃习惯 |
| `add_habit_occurrence` | 记录给定日期的习惯完成情况 |
### 概要
| 工具 | 描述 |
|------|-------------|
| `get_today_summary` | 获取今日的任务、习惯和完成计数 |
## 开发
```bash
bun dev # 运行并监听
bun test # 运行测试(需要.env + 配置)
```
直接使用 `bun` 运行 `src/index.ts` - 这里没有打包步骤。针对此代码库运行 `bun build` 会生成一个非功能性产物,因为打包器会将Firestore的gRPC传输替换为浏览器端的gRPC-Web传输,它无法从Node打开Firestore的监听流,并静默回退到离线模式。
## 架构
服务器使用Firebase JS SDK直接连接到Griply的Firestore数据库,完全绕过Web UI。身份验证通过 `signInWithEmailAndPassword` 处理。