← All articles
Guide

Connect Meeting Notes to Cursor, VS Code, or Claude Code

Speechmark's meeting archive is exposed to AI assistants through a local MCP server that speaks stdio, so any MCP-capable client can read it — not just Claude Desktop. Cursor, VS Code, and Claude Code each take a few lines of config pointing at one file inside the app bundle. Your meetings stay on your Mac; only the excerpts you ask about ever move.

The Claude Desktop guide covers the one-click route. This is the manual one, which works everywhere else.

Which MCP clients can read meeting notes?

MCP, the Model Context Protocol, is the open standard that lets an AI client call external tools. It has gone from an experiment to an ecosystem fast — the official MCP Registry grew 407% between its first batch of entries in September and the protocol's one-year mark that November.

Meeting tools have noticed. The thing to check before you wire any of them up is where the server runs, because that decides where your notes go:

Speechmark (as of September 2026) Granola MCP (as of September 2026)
Transport Local stdio, on your Mac Remote — Streamable HTTP at mcp.granola.ai/mcp
Auth None; it reads local files Browser OAuth or enterprise-managed authorization
Where notes live Your disk Granola's servers
Free-tier scope Everything you recorded Personal notes from the last 30 days
Transcript tools Included Paid plans only

Those Granola figures are from its own MCP documentation, which is also candid about what a hosted connector is:

Each connection still acts on behalf of an individual Granola user; there is no API key or service account access method for MCP.

— Granola MCP documentation, retrieved September 2026

A remote connector is not a flaw; it is how you reach notes that already live in a vendor's cloud. A local one is only possible when the notes were never sent anywhere.

What you need before you start

Two things:

1. The connector file. It ships inside the installed app. Unpack it once — a .mcpb is an ordinary zip:

mkdir -p ~/speechmark-mcp
unzip -o /Applications/Speechmark.app/Contents/Resources/speechmark.mcpb -d ~/speechmark-mcp

That gives you ~/speechmark-mcp/server/server.cjs, which is the path every client below wants. Re-run the command after a Speechmark update to pick up the newer server.

2. Node.js 22.5 or newer. Check with node --version. Claude Desktop bundles its own runtime, which is why its install needed nothing; other clients launch the command with your system Node. The server reads the archive through Node's built-in SQLite module, so on an older Node it will start and then serve you zero meetings — a confusing failure worth ruling out first.

You can sanity-check the server before touching any client:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' \
  | node ~/speechmark-mcp/server/server.cjs

A JSON line naming speechmark means you are ready. The line it prints to stderr tells you which archive file it found.

How do you add meeting notes to Cursor?

Create ~/.cursor/mcp.json for every project, or .cursor/mcp.json inside one project (Cursor's MCP docs):

{
  "mcpServers": {
    "speechmark": {
      "command": "node",
      "args": ["/Users/YOU/speechmark-mcp/server/server.cjs"]
    }
  }
}

Replace /Users/YOU with your real home directory — ~ is not expanded here. Then open Customize in the Cursor sidebar and toggle the server on. Ask the agent: "Search my meetings for the auth migration and tell me what we decided."

How do you add it to VS Code?

VS Code uses a different top-level key — servers, not mcpServers. Put this in .vscode/mcp.json, or run MCP: Open User Configuration from the command palette to edit the profile-wide file (VS Code's MCP docs):

{
  "servers": {
    "speechmark": {
      "type": "stdio",
      "command": "node",
      "args": ["/Users/YOU/speechmark-mcp/server/server.cjs"]
    }
  }
}

Copying a Cursor block straight into VS Code is the single most common failure here; the server never starts and the error is quiet.

How do you add it to Claude Code?

One command, no file editing (Claude Code's MCP docs). Everything after -- is the command Claude Code will run:

claude mcp add --transport stdio --scope user speechmark -- node ~/speechmark-mcp/server/server.cjs

--scope user makes it available in every project. Drop it for the current project only, or use --scope project to write a .mcp.json your team can commit. Verify with claude mcp list.

What about other MCP clients?

Any client that speaks stdio works — the server is not Claude-specific. It needs no arguments, no API key, and no environment variables; it defaults to reading ~/Library/Application Support/Speechmark. Give the client node as the command and the absolute path to server.cjs as the only argument, in whatever shape its config expects.

There is no hosted endpoint to point at, and no public package to install: distribution today is entirely through the app bundle. If your client only accepts a remote URL, this connector will not work with it.

What can you actually ask?

The client picks tools on its own, but knowing what exists helps you ask better. All five are reads:

Tool What it does
list_meetings Browse meetings, filtered by date range, folder, or tag
search_meetings Keyword search across titles, summaries, decisions, action items, transcripts
get_meeting One meeting in full, transcript included on request
get_decisions Decisions across meetings, each tagged with its meeting and date
find_action_items Open or completed items, filterable by owner

In an editor this pays off differently than in a chat app: "Check my meetings for what we agreed about the rate-limiter, then review this file against it." The meeting becomes context for the code, in the tool where the code already is.

What leaves your Mac, and what doesn't

The server makes zero network calls, has no telemetry, and ships no tool that writes. Its whole capability is reading files Speechmark already keeps on your disk.

But be clear about the other half. Cursor, VS Code Copilot, and Claude Code are cloud AI clients. When one retrieves an excerpt to answer you, that excerpt joins the conversation and is processed by that client's model provider under your account's terms — exactly as if you had pasted it in. What is different from a hosted meeting platform is scope and control: nothing uploads wholesale, nothing syncs in the background, and what moves is only what a question pulled.

The practical rule: don't ask a client about a meeting you wouldn't paste into that client. For anything more sensitive than that, leave it out of the question — the archive itself never moves either way. We go deeper on that dividing line in on-device vs cloud transcription.

Where a hosted connector is the better choice

Three honest cases where you should not use this:

You want it on your phone, or in ChatGPT on the web. A local stdio server only exists on the Mac it runs on. Granola's remote endpoint reaches any client anywhere, which a local file genuinely cannot.

Your team needs shared meeting memory. This reads one person's archive. Organization-wide notes with per-user permissions are what hosted connectors are built for.

You want zero setup and a free option. Folio is a free, open-source Mac meeting app (Apache-2.0) that also ships a local read-only stdio MCP server and documents Cursor and Claude Code directly. If the on-device architecture is what you're after and $79 one-time isn't in the budget, it is a real alternative, and we would rather you know that than find out later.

What Speechmark trades for its price is a finished app around the connector — on-device diarization, the archive format, and the one-click Claude Desktop route when you want it.

New here? Record a couple of meetings first with the getting-started guide, then come back — an empty archive makes for a dull conversation.

See how Speechmark works → · Pricing →

Frequently asked questions

Do I need Claude Desktop installed to use this in Cursor?

No. The connector ships inside the Speechmark app bundle as a .mcpb file, which is an ordinary zip. Unpack it once to a folder of your choice and point Cursor, VS Code, or any other MCP client at the server.cjs inside. Claude Desktop's one-click install is a convenience, not a prerequisite.

Why does this need Node.js when the Claude Desktop setup didn't?

Claude Desktop runs extensions on its own bundled Node runtime, so you never see the dependency. Other MCP clients launch the command you give them using your system Node, and the server needs Node 22.5 or newer because it reads the meeting archive through Node's built-in SQLite module.

Can Cursor or VS Code change or delete my meetings?

No. The server registers five tools and all five are reads — list, search, fetch one meeting, collect decisions, find action items. There is no write, edit, or delete tool to call, so the worst a confused agent can do is run a bad search against your own archive.

Does my meeting archive get uploaded to Cursor or GitHub?

The archive stays on your Mac; the connector is local, read-only, and makes no network calls. But whatever excerpts the client retrieves become part of that client's conversation and are processed by its model provider under your account's terms. Ask about a meeting only if you would paste it into that client by hand.

Will one config work across all my projects?

Yes, if you use the global scope. Cursor reads ~/.cursor/mcp.json for every project, Claude Code's --scope user writes a global entry in ~/.claude.json, and VS Code has a user-profile mcp.json reached via the MCP: Open User Configuration command. Per-project files are for sharing a setup with a repo.