MCP是的,你认识我
一台MCP服务器。您的所有个人数据。 mcpyeahyouknowme 将WhatsApp、Gmail、文档、表格、日历、任务、联系人、幻灯片、本地笔记、浏览器历史记录、实时网络搜索和谷歌位置连接到一个单独的位置 主控程序 端点——所以你的人工智能助手使用一个一致的工具集,而不是处理一堆单独的服务器。
全球搜索一切。 一个 search 该工具一次在每个连接的源(电子邮件、聊天记录、日历事件、文档、笔记、浏览器历史记录)上执行BM25关键字搜索,并根据与后续元数据的相关性进行排名,这些元数据指向正确的源特定工具进行深度阅读。
线下优先,隐私保护。 所有数据同步到本地SQLite数据库。每个读取工具都直接查询本地文件——没有网络延迟,在您明确请求之前,任何东西都不会离开您的机器。后台守护进程处理同步;MCP服务器从本地缓存读取。
*注意:* 与许多MCP服务器一样,这取决于 致命的三联征及时注入可能会导致私人数据泄露。
建筑
一个带有可插拔功能的Go二进制文件 DataSource 界面。两种长时间运行模式:
| 模式 | 命令 | 描述 |
|---|---|---|
| 核心守护进程 | mcpyeahyouknowme core | 将所有源同步到本地SQLite,维护全局搜索索引,公开用于写入的REST API |
| MCP服务器 | mcpyeahyouknowme mcp | Stdio MCP服务器——从本地SQLite读取每个查询,代理写入核心守护进程 |
所有读取都会命中本地SQLite;MCP服务器从不直接调用外部API。写操作(发送消息、下载媒体)通过核心守护进程的环回REST API代理。
请参阅 产品规格 了解全部细节。
安全
内置可选控件 ~/.local/share/mcpyeahyouknowme/config.json 在顶级之下 mcp 对象(可以省略;默认值在运行时应用,而无需重写文件)。任何正在进行的MCP连接都需要重新启动/加载才能生效。A. 完整注释模板 (所有来源+ mcp 钥匙)在里面 config.json引用 在......下面
| 字段 | 默认值 | 它的作用 |
|---|---|---|
read_only | false | 何时 true,MCP服务器注册 不 变异工具(不改变状态或命中写入路径)。 |
disabled_tools | [] | 完全省略工具名称(例如。 whatsapp_send_message). |
mutating_tools_per_min | 10 | 每个工具滑动窗口:每个 非只读 工具每分钟最多只能运行这么多次;进一步的调用返回速率限制工具错误。 |
whatsapp_send_max_runes | 1000 | 一个字符中允许的最大Unicode字符数 whatsapp_send_message 身体。省略或设置 ≤ 0 保持默认值(1000).如果您经常通过MCP发送长文本,请设置得更高。 |
审核日志: 每次MCP工具调用都会向以下对象附加一行JSON mcp-audit.log 在同一个数据目录中。敏感参数键(message, query, path, body, base64, media_path)被记录为仅限长度的编辑。文件被修剪成 core.log 当其增长超过5 MiB时(最新保持约1 MiB)。
不受信任的内容: 来自外部或用户控制的来源的结果(例如WhatsApp/Gmail消息正文、网络搜索、浏览器历史记录、笔记本阅读和全局 search / profile_about_me 当点击包含这些来源时)会以简短的安全警告作为前缀,并包括 _meta 提示支持的地方。
whatsapp_send_message 规模上限(对费率限制的补充): 不能替代 mutating_tools_per_min,但它限制了一个发送可以携带多少文本——当自动化代理可能以其他方式粘贴巨大的blob(意外或通过提示注入)时非常有用。默认 1000 每次调用的Unicode字符;用以下方式覆盖 mcp.whatsapp_send_max_runes.
2FA/OTP编辑(哪些内容会被审查): 在坚持使用SQLite之前(因此在全文索引和从本地数据库读取MCP之前),服务器会运行 保守启发式 对消息文本进行审查,以确定它是否是一次性密码消息,如果是,则进行审查。
先决条件
- macOS (苹果硅或英特尔)
- 家酿 (用于安装依赖项)
- 去 (建造)
快速开始
- 克隆仓库
git clone https://github.com/bdombro/mcpyeahyouknowme.git
cd mcpyeahyouknowme- 安装
./scripts/install.sh这将构建Go二进制文件,并将其复制到 /usr/local/bin/mcpyeahyouknowme,设置核心守护进程,并添加shell补全。
- 登录 (仅限第一次)
mcpyeahyouknowme whatsapp login使用WhatsApp应用程序扫描二维码。登录时将捕获初始历史同步。守护进程将从现在开始处理重新连接。
- 配置MCP服务器 在您的AI客户端中:
{
"mcpServers": {
"whatsapp": {
"command": "mcpyeahyouknowme",
"args": ["mcp"]
}
}
}- 克劳德桌面版: ~/Library/Application Support/Claude/claude_desktop_config.json - 光标: ~/.cursor/mcp.json
- 重新启动克劳德桌面/光标
Google套件设置
Google Suite使用带有PKCE的桌面OAuth客户端。谷歌仍然期待两者 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET 在令牌交换期间,但二进制文件仍然可以在没有它们的情况下构建。如果在构建时缺少其中之一 gsuite 在使用这两个值重新生成之前,源标记为不可用。
- Bootstrap谷歌云项目
just google-project-setup your-google-project-id这验证了 gcloud,选择项目,启用所需的API,创建受限的Places API密钥,并打印剩余的手动Google Cloud Console步骤。
- 完成Google Cloud控制台的手动步骤
- 打开 谷歌云控制台 并确认项目 - 打开 谷歌认证平台 - 配置品牌/应用程序信息 - 选择观众(External 对于公共应用程序, Internal 仅限工作区使用) - 在应用程序未经验证时添加支持/联系电子邮件并测试用户 - 审查请求的范围 - 创建类型为的OAuth客户端 桌面应用 - 复制桌面应用程序 客户端ID 和 客户端密钥
桌面应用程序客户端密钥在已发布的macOS二进制文件中不是有意义的可信密钥,但谷歌目前在令牌交换期间仍需要它。
- 设置客户端凭据
export GOOGLE_CLIENT_ID='your-desktop-client-id'
export GOOGLE_CLIENT_SECRET='your-desktop-client-secret'将它们添加到您的shell配置文件或放入 .env 在建造之前,如果你想 gsuite 二进制文件中启用了源代码。
- 构建时位置API密钥 (可选)
just google-project-setup 还将创建一个受限制的Places API密钥并将其写入 .env 作为 GOOGLE_PLACE_API_KEY.当出现在 just build,它使 google_places_* 用于实时业务和地址查找的MCP工具。
- 构建时勇敢搜索API密钥 (可选)
集 BRAVE_API_KEY 在 .env 在构建之前,启用 brave_search_* 用于实时网络搜索和URL元数据查找的MCP工具。从 勇敢搜索API仪表板.
- 验证并启用您想要的应用程序
mcpyeahyouknowme gsuite login这将打开您的浏览器进行OAuth授权,并将令牌存储在 ~/.local/share/mcpyeahyouknowme/gsuite_token.json,将帐户电子邮件存储在 ~/.local/share/mcpyeahyouknowme/gsuite_email.txt,并提示您选择要启用的Google应用程序。应用程序开始禁用,直到您明确启用它们。
- 管理已启用的应用程序
mcpyeahyouknowme gsuite管理
8. **Reset Google Suite data** (optional)
mcpyeahyouknowme gsuite reset
这将删除令牌和同步的Google数据,然后禁用源,直到您再次登录。
## 环境变量
|变量|必填|描述|
|----------|----------|-------------|
| `BRAVE_API_KEY` |可选|构建时勇敢搜索API密钥,用于启用 `brave_search_*` 工具|
| `GOOGLE_CLIENT_ID` |可选|来自谷歌云控制台的桌面OAuth客户端ID;仅当您需要时才需要 `gsuite` 来源可用|
| `GOOGLE_CLIENT_SECRET` |可选|匹配桌面OAuth客户端密钥;仅当您需要时才需要 `gsuite` 来源可用|
| `GOOGLE_PLACE_API_KEY` |可选| Build-time Places API键,用于启用 `google_places_*` 工具|
| `GOOGLE_PROJECT_ID` |可选|由使用 `scripts/google-project-setup.sh` / `just google-project-setup` |
## 管理守护进程
安装核心守护进程(登录时运行,自动重启)并对其进行管理:
mcpyeahyouknowme start mcpyeahyouknowme stop mcpyeahyouknowme restart
其他命令:
Show status and data locations
mcpyeahyouknowme status
Refresh the status view every 10 seconds
mcpyeahyouknowme status --live
Wipe WhatsApp data and session (only WhatsApp)
mcpyeahyouknowme whatsapp reset
Wipe Google Suite token and synced data
mcpyeahyouknowme gsuite reset
## 卸载
要完全删除mcpyeahyouknowme:
cd /path/to/mcpyeahyouknowme ./scripts/uninstall.sh
这将:
- 杀死所有正在运行的mcpyeahyouknowme进程
- 清理数据库锁文件
- 卸载并删除守护进程
- 删除数据目录(`~/.local/share/mcpyeahyouknowme`)
- 从以下位置移除壳体完井 `~/.zshrc`
- 从中删除二进制文件 `/usr/local/bin/mcpyeahyouknowme`
## 故障排除
- **二维码未显示**:重新启动CLI。检查您的终端是否支持QR渲染。
- **已登录**:CLI会自动重新连接,无需二维码。
- **已达到设备限制**:从手机上的WhatsApp中删除现有设备(设置>链接设备)。
- **没有消息加载**:对于大型帐户,初始历史同步可能需要几分钟。历史记录仅在第一次配对时推送。如果您的数据库为空,请运行 `mcpyeahyouknowme whatsapp login --relogin` 以重新配对并捕获初始同步。
- **不同步**:运行 `mcpyeahyouknowme whatsapp reset` 要擦除所有数据,则 `mcpyeahyouknowme whatsapp login` 重新验证。
- **会话已过期/405错误**:运行 `mcpyeahyouknowme whatsapp login --relogin` 清除过时的会话并重新配对。守护程序将自动重新启动。
有关其他Claude Desktop故障排除,请参阅 [MCP文件](https://modelcontextprotocol.io/quickstart/server#claude-for-desktop-integration-issues).
## config.json引用
**路径:** `~/.local/share/mcpyeahyouknowme/config.json` (与SQLite数据库和 `mcp-audit.log`).
守护进程会随着时间的推移使此文件正常化:每个 **注册源** 得到a `sources.` 即使在禁用时也可以输入,因此密钥可能会在配置源之前出现。这 **`mcp`** 块是可选的,由只读 **`mcpyeahyouknowme mcp`** 子流程。
### 完整参考(带注释的JSON,tsconfig样式)
**重要提示:** Go运行时使用严格 **JSON** — **`//` 和 `/* */` 不允许发表评论** 在磁盘上的真实文件中。将下面的块视为文档:复制所需的结构和值, **删除所有注释行**,然后保存。(有些编辑器可以在导出时将JSONC剥离为JSON。)
{ // --- sources: one object per integration (names are fixed) --- "sources": { "brave_search": { // Whether this source is turned on in config. Live Brave tools also need // BRAVE_API_KEY at build time; there is no API key stored here. "enabled": false, // When true, the core daemon runs source Reset() on its next loop, then // tooling normally clears this flag. You rarely set it by hand. // "reset": false, // No "auth" blob for brave_search. }, "browser_history": { "enabled": false, // "auth" selects which Chromium profile DB to snapshot (macOS). // Typical values: "chrome", "brave". Use: mcpyeahyouknowme browser_history enable
"auth": { "browser": "chrome" } }, "google_places": { "enabled": false, // Places needs GOOGLE_PLACE_API_KEY at build time; nothing stored under "auth". }, "gsuite": { "enabled": false, // "auth" only holds per-app toggles. OAuth tokens live in gsuite_token.json // next to this file (written by: mcpyeahyouknowme gsuite login). "auth": { "apps": { "docs": false, "sheets": false, "gmail": false, "calendar": false, "tasks": false, "contacts": false, "slides": false } } }, "notebook": { "enabled": false, // Local directories to index (markdown, PDF, images). Use: // mcpyeahyouknowme notebook add (populates dirs for you) "auth": { "dirs": [] } }, "whatsapp": { "enabled": false // Pairing/session files live under the data directory; login sets enabled. // No "auth" object in config.json for WhatsApp. } },
// --- mcp: optional; used only by mcpyeahyouknowme mcp (restart MCP to apply) --- "mcp": { // When true, no mutating tools are registered (no sends, downloads, etc.). "read_only": false,
// Exact tool names to hide entirely, e.g. "whatsapp_send_message". "disabled_tools": [],
// Per mutating tool name: max calls per sliding minute (default 10 if omitted or <= 0). "mutating_tools_per_min": 10,
// Max Unicode runes/words per whatsapp_send_message body (default 1000 if omitted or <= 0). "whatsapp_send_max_runes": 1000 } }
