AI apps (the MCP server)
MacParsley includes a small built-in server that lets AI apps (Claude, Cursor, LM Studio, VS Code and others that speak MCP, the Model Context Protocol) look at your library and, if you allow it, work on it. You can then ask things like:
- "What did we agree with Acme last week?"
- "List the open action items from my one-on-ones this month."
- "Summarize my last call again as an executive brief."
- "Move today's recordings into the Customers folder and tag them."
The server is off by default. It runs only while MacParsley is open, listens on this Mac only, and every request needs an API key you create.
Turn it on
- Open Settings → MCP.
- Switch on Let AI apps connect to MacParsley. The status shows a green Running at http://127.0.0.1:8721/mcp. (Change the port if something else uses 8721, then press Return.)
- Click API Keys…, then New Key…, give it a name (the app that will use it), and choose its kind.

The two kinds of key
| Read Only | Read & Write | |
|---|---|---|
| Look at meetings, summaries, transcripts, highlights, mind maps | Yes | Yes |
| Search; list folders, tags, speakers, prompts | Yes | Yes |
| See what is being transcribed or summarized | Yes | Yes |
| Rename or move meetings; folders; tags; name speakers | No | Yes |
| Move meetings to Deleted Items, restore them | No | Yes |
| Start work: transcribe, summarize, write mind maps, import audio | No | Yes |
| Write files out of the library (export) | No | Yes |
| Stop a call recording | No | Yes |
A read-only key never even sees the write tools. If an app calls one anyway, it gets a plain refusal ("this key is read only"). Because summarizing uses your AI models (which may be cloud models), it needs a Read & Write key.

Keys are kept in your Keychain. The API Keys… window shows each key's name, kind, when it was made and last used, and what it may see. You can Copy Key, Rename… or Revoke… (the app using it stops working at once).
Limit a key to some folders
In the New Key window, tick Only some folders and choose folders. The key then sees those folders and everything inside them, and nothing else: not other folders, and not meetings that aren't in a folder. It can't move things out of its folders, or make folders outside them. Use this to give a tool access to, say, only Customers.
Connect an app

In Settings → MCP, click Connect App…. Choose the app in the list, choose your key at the top, and follow the numbered steps. Each setup has a Copy button and already contains your key (it's shown shortened on screen). The apps are Claude Desktop, Claude Code, ChatGPT, Codex, Cursor, LM Studio, VS Code, Gemini CLI and Other apps.
Claude Code
Copy the command, paste it into Terminal and press Return. It looks like:
claude mcp add --transport http macparsley http://127.0.0.1:8721/mcp --header "Authorization: Bearer YOUR_KEY"
Cursor, LM Studio and other apps that take a URL
Copy the setup and paste it into the app's MCP settings (Cursor: Settings → Tools & MCP; LM Studio: Program → Install → Edit mcp.json):
{
"mcpServers": {
"macparsley": {
"url": "http://127.0.0.1:8721/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}
(Some apps call the field serverUrl or put "type": "http" beside the URL; use whatever that app's documentation shows for a remote HTTP server with a header.)
Claude Desktop
Claude Desktop only starts local programs from its config file, so MacParsley gives it a tiny bridge made of bash and curl (both part of macOS; nothing to install).
- Copy the Claude Desktop setup.
- In Claude Desktop open Settings → Developer → Edit Config. This opens
claude_desktop_config.json. - Add the copied
"mcpServers": { … }block at the top level of that file, next to anything already there (not inside"preferences"). Mind the commas between sections. If the file is otherwise empty, paste the whole thing. - Quit Claude Desktop with ⌘Q and reopen it. Start a new chat; "macparsley" should appear in the tools menu.
Codex (OpenAI)
Codex reads its servers from ~/.codex/config.toml. The key goes in an environment variable, so it isn't kept in the file.
- Add the copied block to
~/.codex/config.toml:
[mcp_servers.macparsley]
url = "http://127.0.0.1:8721/mcp"
bearer_token_env_var = "MACPARSLEY_MCP_KEY"
- Add the copied
export MACPARSLEY_MCP_KEY="…"line to~/.zshrcand open a new Terminal window. - Start Codex and type
/mcpto check thatmacparsleyis listed.
VS Code (Copilot) and Gemini CLI
VS Code: run MCP: Open User Configuration from the Command Palette and paste the copied "servers" block; then choose Agent mode in Copilot Chat. Gemini CLI: add the copied "mcpServers" block to ~/.gemini/settings.json and type /mcp to check it.
ChatGPT
ChatGPT's connectors only reach servers on the internet over HTTPS, and MacParsley's server is deliberately reachable from this Mac only, so ChatGPT can't connect to it directly. The simple route is to use Codex or Claude. If you still want ChatGPT, you would have to put the server on a public address with a tunnel (Cloudflare Tunnel, ngrok), then add it under ChatGPT's Settings → Connectors (with Developer Mode on) using the key as a bearer token. That makes your meetings reachable by anyone who gets the key: use a Read Only key limited to one folder, and turn the tunnel off when you're done.
Menu names and file locations in these apps change from version to version. If a step doesn't match, the app's own documentation for "remote MCP server with a bearer token" has the current wording.
MacParsley has to be open, with the server on, whenever the AI app uses it.
What an AI app can do
Tools: looking (every key)
| Tool | What it does |
|---|---|
library_overview | How many meetings, folders, tags, speakers; what's running now. |
list_folders, list_tags, list_speakers | The library's structure and people. |
list_prompts | The summary prompts and their ids. |
list_meetings | Meetings with filters: folder (and subfolders), tag, speaker, source, dates, has-summary, sort, paging. |
search_meetings | Words in titles, summaries and transcripts, like the app's search box. |
get_meeting | One meeting's details: folder, tags, speaker labels, attachments, what content exists. |
get_summary | The summary text, or the list of versions, or an older version. |
get_transcript | The transcript with speaker names and times, paged. |
get_highlights | Plaud highlights. |
get_mind_map | A mind map as an indented outline (concise or detailed). |
list_jobs | What is being transcribed or summarized. |
recording_status | Whether a call is being recorded, and for how long. |
Tools: changing things (Read & Write keys)
| Tool | What it does |
|---|---|
update_meeting | Change a title and/or move to a folder. |
set_tags | Add tags (creating any that don't exist) and remove tags. |
create_folder, update_folder | Make, rename or move folders. |
assign_speaker | Say who a speaker label is. Teaches MacParsley that voice. |
trash_meeting, restore_meeting | To and from Deleted Items. Never erases. |
transcribe_meeting | Queue transcription. |
summarize_meeting | Queue a new summary (optionally with a chosen prompt). It uses the app's AI model, which may be a cloud model; a sensitive recording still asks you first. |
write_mind_map | Have the AI model write the concise mind map. |
import_audio | Add an audio file from this Mac (m4a, wav, mp3, ogg). |
export_meeting | Write a summary, transcript, mind map, audio or the whole ZIP into a folder on this Mac (default Downloads). Never overwrites a file. |
stop_recording | Stop a call MacParsley is recording. |
Starting a recording is deliberately not offered. Recording people stays a decision made at the Mac.
Resources
An AI app can attach a meeting's text directly: macparsley://meeting/<id>/summary, …/transcript, …/highlights, …/mindmap, and macparsley://library/folders. The 50 newest summaries are listed for browsing; any other meeting works by its id.
Prompts
MacParsley's 60+ summary prompts are offered as MCP prompts. Pick one in the AI app, give it a meeting, and the app receives the finished prompt plus the transcript, to run with its own model. This is a way to use a different AI for one summary without adding its API key to MacParsley.
Safety
- Local only. The server binds to
127.0.0.1, and requests that appear to come from a web page are refused. - A key is required, compared in a way that doesn't leak how close a guess was.
- Recording text is labelled as data. Transcripts and summaries come back inside
<untrusted-meeting-data>tags with a reminder to the AI that they are not instructions, which helps against text hidden in a recording. - Nothing is permanently deleted. Trashing moves to Deleted Items.
- See what happened. Recent Activity in Settings lists each call: which key, which tool, when. A refused attempt is marked.
- What the AI app does with the text is up to that app and its provider. Remember that Claude, ChatGPT and similar apps send what they read to their company.
Technical notes
For people building their own client.
| Transport | MCP over HTTP: JSON-RPC 2.0 messages in the body of POST /mcp. Replies are plain JSON (no streaming, no sessions). GET returns 405. |
| Address | http://127.0.0.1:<port>/mcp (default port 8721) |
| Auth | Authorization: Bearer mpk_ro_… or mpk_rw_… |
| Protocol versions | 2025-06-18, 2025-03-26, 2024-11-05 |
| Capabilities | tools, resources, prompts (no list-changed notifications, no subscriptions) |
| Errors | 401 missing or wrong key, 403 web origin, 400 unreadable message. A tool that fails returns a normal result with isError: true and the reason. |
Tool arguments use ids from the library (meeting_id, folder_id) as shown in the list_… results; dates are ISO 8601 or yyyy-MM-dd.