186 lines
5.1 KiB
Markdown
186 lines
5.1 KiB
Markdown
|
|
# Plaud MCP Plugin — Setup & Renewal Guide
|
||
|
|
|
||
|
|
**Version:** 0.1.2
|
||
|
|
**Last updated:** 2026-05-12
|
||
|
|
|
||
|
|
This guide covers everything needed to set up the Plaud MCP plugin and keep it running. The old docx guide is superseded by this file.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Prerequisites
|
||
|
|
|
||
|
|
- macOS (token decryption uses the macOS login keychain)
|
||
|
|
- [Plaud desktop app](https://www.plaud.ai/download) installed and logged in
|
||
|
|
- Python 3.10+
|
||
|
|
- `uv` installed (`brew install uv` or `pip install uv`)
|
||
|
|
- Access to the Claude CoWork folder
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## How the Token Works
|
||
|
|
|
||
|
|
The Plaud desktop app (Electron) stores a long-lived `authToken` JWT in the macOS keychain via Chromium's `safeStorage` API. This token is valid for approximately **6 months** and is the only reliable way to authenticate with the Plaud API from a script.
|
||
|
|
|
||
|
|
There is no public OAuth flow. Web-based tokens (`wtToken`) expire in 24 hours and are not practical for an MCP server.
|
||
|
|
|
||
|
|
**Token file:** `~/.plaud/tokens-mcp.json`
|
||
|
|
**Field used:** `access_token`
|
||
|
|
**Current expiry:** approximately 2026-11-25
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## First-Time Setup
|
||
|
|
|
||
|
|
### Step 1 — Ensure Plaud desktop app is installed and logged in
|
||
|
|
|
||
|
|
Download from [plaud.ai/download](https://www.plaud.ai/download). Log in with your Plaud account. Let the app sync at least once so the token is written to the keychain.
|
||
|
|
|
||
|
|
### Step 2 — Run the token extraction script
|
||
|
|
|
||
|
|
From the Claude CoWork folder:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd ~/Library/CloudStorage/GoogleDrive-bryan@messagepoint.media/My\ Drive/Claude\ CoWork
|
||
|
|
python3 plaud_decrypt_tokens.py
|
||
|
|
```
|
||
|
|
|
||
|
|
Expected output:
|
||
|
|
```
|
||
|
|
✅ Token written to /Users/<you>/.plaud/tokens-mcp.json
|
||
|
|
access_token: eyJ... (truncated)
|
||
|
|
Expires: ~2026-11-25 (estimated)
|
||
|
|
```
|
||
|
|
|
||
|
|
If you see an error about the keychain, make sure the Plaud desktop app has been run at least once while logged in, then try again.
|
||
|
|
|
||
|
|
### Step 3 — Verify the token file
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cat ~/.plaud/tokens-mcp.json
|
||
|
|
```
|
||
|
|
|
||
|
|
Should contain:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"access_token": "eyJ..."
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 4 — Install the plugin in Claude CoWork
|
||
|
|
|
||
|
|
Drop `plaud-mpm-v0.1.2.plugin` into Claude CoWork's plugin manager (Settings → Plugins → Install from file). The `.plugin` and `.dxt` files are identical zip archives — use whichever extension your Claude version accepts.
|
||
|
|
|
||
|
|
### Step 5 — Verify the connection
|
||
|
|
|
||
|
|
In Claude CoWork, ask: *"check my Plaud connection"*
|
||
|
|
|
||
|
|
Or trigger `plaud_user_info` directly. You should see:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"region": "us",
|
||
|
|
"api_base": "https://api.plaud.ai",
|
||
|
|
"token_loaded": true
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Token Renewal
|
||
|
|
|
||
|
|
Renew the token when it expires (~every 6 months) or if you see `token_loaded: false` or API auth errors.
|
||
|
|
|
||
|
|
### Renewal steps
|
||
|
|
|
||
|
|
1. **Open the Plaud desktop app** and make sure you are logged in. The app refreshes its internal token on login.
|
||
|
|
|
||
|
|
2. **Close the Plaud desktop app** (quit it fully — not just minimize). This ensures the keychain entry is accessible.
|
||
|
|
|
||
|
|
3. **Run the decryption script:**
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd ~/Library/CloudStorage/GoogleDrive-bryan@messagepoint.media/My\ Drive/Claude\ CoWork
|
||
|
|
python3 plaud_decrypt_tokens.py
|
||
|
|
```
|
||
|
|
|
||
|
|
4. **Verify** the new token was written:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cat ~/.plaud/tokens-mcp.json
|
||
|
|
```
|
||
|
|
|
||
|
|
5. **Restart Claude** (or reload the plugin) so the MCP server picks up the new token.
|
||
|
|
|
||
|
|
No reinstall of the plugin is required — the server reads `tokens-mcp.json` fresh on every startup.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Environment Variable Override
|
||
|
|
|
||
|
|
If you need to use a specific token without running the decryption script:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
export PLAUD_TOKEN="eyJ..."
|
||
|
|
```
|
||
|
|
|
||
|
|
Set this in `~/.zshrc` or your shell profile if you want it to persist. The environment variable takes priority over `tokens-mcp.json`.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Region Configuration
|
||
|
|
|
||
|
|
The plugin defaults to the US API (`api.plaud.ai`). For EU accounts:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
export PLAUD_REGION=eu
|
||
|
|
```
|
||
|
|
|
||
|
|
This switches the base URL to `api.plaud.eu`. Set in the `.mcp.json` `env` block if you want it permanent:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"mcpServers": {
|
||
|
|
"plaud-mpm": {
|
||
|
|
"command": "uv",
|
||
|
|
"args": ["run", "--with", "mcp[cli]", "${CLAUDE_PLUGIN_ROOT}/server/plaud_mcp.py"],
|
||
|
|
"env": {
|
||
|
|
"PLAUD_REGION": "eu"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### `token_loaded: false`
|
||
|
|
The token file is missing or empty. Run `plaud_decrypt_tokens.py` to regenerate it.
|
||
|
|
|
||
|
|
### `invalid auth header` / API returning status -3900
|
||
|
|
The token has expired. Follow the renewal steps above.
|
||
|
|
|
||
|
|
### `Plaud Keys` not found in keychain
|
||
|
|
The Plaud desktop app hasn't been run on this machine, or was installed under a different user account. Log in to the desktop app, let it sync, then try the script again.
|
||
|
|
|
||
|
|
### `curl exit 22` errors when fetching recordings
|
||
|
|
Usually an auth issue — verify `token_loaded: true` first. If token is loaded but you still get 22, the API may have rate-limited the request; wait 30 seconds and retry.
|
||
|
|
|
||
|
|
### Plugin shows as `Plaud_MCP` vs `plaud-mpm`
|
||
|
|
Two registrations exist: the `.dxt` extension installs as `Plaud_MCP`; the `.plugin` file installs as `plaud-mpm`. Both use the same `plaud_mcp.py` server. Use whichever is currently active — they are functionally identical once running v0.1.2.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Uninstall / Clean Up
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Remove token files
|
||
|
|
rm -rf ~/.plaud
|
||
|
|
|
||
|
|
# Remove plugin from CoWork via Settings → Plugins → Remove
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*Setup guide for Plaud MCP Plugin v0.1.2 — Message Point Media*
|