个人助理工具包
*一次谈话。你一天中的每一个信号。无应用程序切换。*
本地托管 模型上下文协议(MCP) 该服务器将Claude Desktop连接到您的个人生产力堆栈(日历、任务、提醒、电子邮件和天气),并将其合成为一个单一的智能每日简报。
建造于 阿努拉格·伯曼 ·MIT许可证·macOS
______________________________________________________________________
它做什么
大多数人在开始一天的工作时,会打开6到8个应用程序,只是为了了解未来会发生什么。个人助理工具包消除了这一点。在Claude Desktop中问一个问题——它同时从每个来源提取信息,并在几秒钟内返回结构化的简报。
You: "Good morning. What does my day look like?"
→ Weather • Schedule • Tasks • Reminders • Email______________________________________________________________________
它与什么有关
| # | 来源 | 它提供了什么 |
|---|---|---|
| 1 | 天气 | 当前状况、预报、紫外线指数、警报 |
| 2 | 谷歌日历 | 会议、假期、共享日历--跨所有链接帐户 |
| 3 | 工作表 | 待处理任务、截止日期、逾期项目、标记完成——所有账户 |
| 4 | Gmail | 未读+重要电子邮件,按类别分组——所有帐户 |
| 5 | Apple提醒 | 今天到期的提醒+过去30天逾期的提醒,所有列表 |
你的数据完全是你自己的。 此工具包连接到 *你的* 使用您自己创建的凭据的Google帐户。该仓库不包含任何个人信息——没有电子邮件、没有日历事件、没有令牌、没有凭据。任何下载此仓库的人都只会得到代码,而不会得到其他任何东西。
完全支持多个Google帐户。 添加任意数量的帐户(个人、工作、副项目)——日历、任务和Gmail都会自动提取和合并。
______________________________________________________________________
你可以问什么
"Good morning. What does my day look like?"
"Any important emails I haven't read?"
"What tasks and reminders are due today?"
"Any overdue items I've been putting off?"
"Should I bring an umbrella today?"
"Mark the Ikea task as done."______________________________________________________________________
简报会是什么样子的
Weather: 30°C, feels like 34°C. Partly cloudy. UV peaks at 9 — apply sunscreen.
High 34 / Low 25. Sunrise 07:08 · Sunset 19:15.
Schedule: 10:00 – Call with Tanmay
19:30 – Massage at Natureland, Liat Towers
22:00 – AI session (Google Meet · 1 pending RSVP)
Tasks: Due today: Visit Ikea (get steamer) · Water plants — Pachira and Fern
Reminders: Overdue (3): Review eval starter kit · Check MCF · Cancel swiggyone
Due today: Check stich
Email: No important unread in the last 24h.______________________________________________________________________
需求
| 要求 | 注意事项 |
|---|---|
| macOS 14(Sonoma)或更高版本 | Swift/EventKit(苹果提醒)需要 |
| 克劳德桌面版 | MCP工具需要付费计划 |
| Node.js 18+ | node --version 检查;从...下载 |
| Xcode命令行工具 | 适用于Swift;安装方式 xcode-select --install |
| Google帐户 | 用于日历、任务、Gmail |
______________________________________________________________________
多个Google帐户
这是一个一流的功能。您可以连接任意数量的Google帐户。他们所有的日历、任务和电子邮件都是同时提取和合并的——每个项目都标记了其源帐户。
要添加第二个(或第三个)帐户:
- 从Google Cloud Console下载每个帐户的JSON凭据(相同的项目也可以——您可以使用相同的OAuth应用程序)
- 重命名每个文件:
credentials-personal.json,credentials-work.json,credentials-side.json等等。 - 将它们放置在项目根目录中
- 为每个对象运行身份验证流:
npm run auth:personal # connects anuraag@gmail.com
npm run auth:google -- --account=work # connects anuraag@company.com
npm run auth:google -- --account=side # connects anuraag@sideproject.com就是这样。该工具包在每次运行时都会自动发现所有经过身份验证的帐户,无需更改配置。
______________________________________________________________________
设置
根据您对航站楼的舒适程度选择您的路线。
______________________________________________________________________
路径A——不是开发人员(逐步)
如果您以前从未在终端中运行过命令,则此路径适合您。
第一步——安装Node.js
首选 → click 长期支持 → 运行安装程序。完成。
步骤2--下载此项目
点击绿色 代码 此页面顶部的按钮→ 下载ZIP → 解压缩它→ 将文件夹移动到 /Users/YOUR_NAME/ (您的主文件夹)。
步骤3--打开终端
按 Cmd + Space,类型 Terminal,按Enter键。
步骤4——安装和构建
一次键入一个命令,然后按Enter键。等待每一个完成。
cd ~/personal-assistant-toolkit
npm install
npm run build步骤5--设置Google凭据
- 首选 console.cloud.google.com --使用您的Google帐户登录
- 创建一个名为的新项目
personal-assistant-toolkit - 在搜索栏中,搜索并启用以下三个API:
- 谷歌日历API - Gmail API - 谷歌任务API
- 首选 API和服务→ OAuth同意屏幕
- 观众:选择 外部的 → 单击“创建” - 应用程序名称: Personal Assistant Toolkit - 用户支持电子邮件:您的Gmail - 开发者联系人:您的Gmail - 单击“保存并继续”(再单击两次,跳过范围) - 将您的Gmail添加为 测试用户 → Save
- 首选 凭证→ + 创建凭据→ OAuth 2.0客户端ID
- 应用程序类型: 桌面应用程序 - 姓名: personal-assistant-toolkit - 单击“创建”→ 下载JSON
- 将下载的文件重命名为
credentials-personal.json - 把它移到
personal-assistant-toolkit文件夹
步骤6--连接您的Google帐户(一次性)
在终端:
npm run auth:personal浏览器窗口打开。使用您的Google帐户登录→ 单击“允许”→ 您将看到“已验证!”→ 关闭选项卡。
你只做一次。 令牌安全地保存在您的Mac上。Claude Desktop每次都会自动重用它——除非您在Google帐户设置中自行撤销访问权限,否则您将永远不会被再次询问。
第7步——找到你的坐标
在谷歌上搜索你的城市名称+“坐标”(例如“新加坡坐标”)。你会得到两个数字,比如 1.3521, 103.8198 --把这些记下来。
常见城市:
| 城市 | 纬度 | 经度 |
|---|---|---|
| 新加坡 | 1.3521 | 103.8198 |
| 伦敦 | 51.5074 | -0.1278 |
| 纽约 | 40.7128 | -74.0060 |
| 孟买 | 1960年7月19日 | 8777年7月72日 |
| 悉尼 | -33.8688 | 151.2003 |
| 迪拜 | 25.2048 | 55.2708 |
步骤8--配置Claude桌面
- 按
Cmd + Space,类型TextEdit,打开它 - 首选 File → Open → 粘贴此路径:
~/Library/Application Support/Claude/claude_desktop_config.json - 将整个文件内容替换为(填写您的详细信息):
{
"mcpServers": {
"personal-assistant-toolkit": {
"command": "/usr/local/bin/node",
"args": ["/Users/YOUR_NAME/personal-assistant-toolkit/dist/index.js"],
"env": {
"WEATHER_LAT": "YOUR_LATITUDE",
"WEATHER_LON": "YOUR_LONGITUDE"
}
}
}
}替换:
YOUR_NAME→ 您的Mac用户名(键入whoami在终端中查看)YOUR_LATITUDE/YOUR_LONGITUDE→ 从步骤7开始
- 保存文件(Cmd+S)
步骤9——授予提醒权限(一次性)
Claude第一次阅读您的Apple提醒时,macOS将显示一个权限对话框。点击 允许.
这是一次性提示。单击“允许”后,权限将永久保存在macOS中。除非在“系统设置”中手动撤销,否则您将永远不会被再次询问→ 隐私和安全→ 提醒。
步骤10--重新启动Claude Desktop并测试
退出克劳德桌面(Cmd + Q)然后重新打开它。然后问:
What does my day look like?______________________________________________________________________
路径B——开发人员
先决条件: Node.js 18+,macOS 14+,克劳德桌面
git clone https://github.com/anuraagburman/personal-assistant-toolkit.git
cd personal-assistant-toolkit
npm install
npm run build设置Google OAuth凭据(请参阅路径A,步骤5--相同的过程),放置 credentials-personal.json 在项目根目录中,然后:
npm run auth:personalClaude桌面配置 (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"personal-assistant-toolkit": {
"command": "/usr/local/bin/node",
"args": ["/absolute/path/to/personal-assistant-toolkit/dist/index.js"],
"env": {
"WEATHER_LAT": "1.3521",
"WEATHER_LON": "103.8198"
}
}
}
}跑 pwd 在项目文件夹中获取绝对路径。
重新启动克劳德桌面。验证:
ping → pong
What's the weather today? → live weather data______________________________________________________________________
权限是如何工作的
| 许可 | 当你被问到时 | 它会持续多久 |
|---|---|---|
| 谷歌OAuth(日历、任务、Gmail) | 一次,当你运行 npm run auth:personal | 永久--令牌自动静默刷新。仅当您在Google帐户设置中手动撤销时才会过期 |
| macOS提醒 | 克劳德第一次阅读提醒 | 永久-存储在macOS隐私和安全设置中 |
| Weather | Never-无需帐户 | 始终有效(使用Open-Meteo,一个免费的公共API) |
底线:设置一次,永远使用。
______________________________________________________________________
隐私和安全
- 所有数据均已提取 本地 在Mac上,任何内容都不会通过任何第三方服务器
- 谷歌API调用直接从你的Mac到谷歌的服务器(与使用应用程序相同)
- 天气用途 开放天气 --免费,无账户,不发送个人数据
- Apple提醒通过Swift/EventKit读取——数据永远不会离开你的机器
- OAuth令牌存储在
.tokens/--通过git排除.gitignore,只能由您的用户帐户读取 - Apple Notes和WhatsApp不是通过设计连接的 --敏感信息过多
| 保护 | 它是如何工作的 |
|---|---|
| 默认情况下为只读 | 无法发送消息、删除事件或修改数据(标记任务完成除外) |
| 输入验证 | 在调用任何API之前,每个工具调用都要使用Zod模式进行验证 |
| 速率限制 | 每个工具都有每分钟的调用限制,以防止失控循环 |
| 安全令牌存储 | 使用受限文件权限存储的令牌——只有您的用户可以读取它们 |
| 最低限度的OAuth范围 | 日历只读,仅限Gmail元数据(无电子邮件正文),任务读写 |
______________________________________________________________________
建筑
Claude Desktop (MCP Client)
│ JSON-RPC over stdio (local)
▼
Personal Assistant Toolkit MCP Server (Node.js + TypeScript)
│
├── Input Validation (Zod) → Rate Limiter → Tool Handler
│
├── Google APIs — Calendar, Tasks, Gmail
├── Swift/EventKit — Apple Reminders (local, no app bridge)
└── Open-Meteo API — Weather (no auth)______________________________________________________________________
项目结构
personal-assistant-toolkit/
├── README.md
├── package.json
├── tsconfig.json
├── .gitignore
├── scripts/
│ └── auth-personal.ts # Google OAuth2 setup
├── src/
│ ├── index.ts # MCP server entry point
│ ├── security/
│ │ ├── rate-limiter.ts
│ │ ├── input-validator.ts
│ │ └── token-manager.ts
│ └── tools/
│ ├── weather.ts # Open-Meteo
│ ├── calendar.ts # Google Calendar
│ ├── tasks.ts # Google Tasks
│ ├── gmail.ts # Gmail
│ └── reminders.ts # Apple Reminders (Swift/EventKit)
└── dist/ # Compiled output (auto-generated, not committed)______________________________________________________________________
故障排除
锤子图标未出现在Claude Desktop中
- 跑
npm run build并检查错误 - 验证中的路径
claude_desktop_config.json是完整的绝对路径(否~快捷方式) - 完全退出克劳德桌面
Cmd+Q并重新开放
Google身份验证错误或令牌已过期
- 删除
.tokens/google-personal.json并重新运行npm run auth:personal
Apple提醒不返回任何内容
- 转到系统设置→ 隐私和安全→ 提醒事项→ 确保已启用访问
- 确保已安装Xcode命令行工具:
xcode-select --install
天气显示错误的位置
- 更新
WEATHER_LAT和WEATHER_LON在claude_desktop_config.json并重新启动克劳德桌面
检查MCP服务器日志
cat ~/Library/Logs/Claude/mcp*.log______________________________________________________________________
许可证
MIT——免费使用、修改和分发。
______________________________________________________________________
*建造于 阿努拉格·伯曼.* *如果这能为你每天节省20分钟,那么它就完成了它的工作。*
