Integrations/MCP Server

MCP Server

Use Parrot Scribe with AI assistants

Section: IntegrationsUpdated August 11, 2026

What is MCP?

Requires Parrot Scribe Pro. MCP server access is part of Parrot Scribe Pro. Existing licenses already include Pro.

The Model Context Protocol (MCP) is an open standard that lets AI assistants interact with external tools and data sources through a structured interface. Parrot Scribe includes a built-in MCP server, so there is nothing extra to install.

How It Works

The MCP server runs inside Parrot Scribe as a single process. There is no separate server to manage.

  • Built-in: The server is part of Parrot Scribe itself - no external packages or dependencies required.
  • Unix domain socket: Communication uses a local Unix socket with owner-only access.
  • Shim bridge: The bundled parrotscribe-mcp-shim bridges stdio MCP hosts to the local socket.
  • Token authentication: Clients must present a valid token during handshake.
  • Off by default: The MCP listener is disabled until you explicitly enable it. When disabled, no MCP socket is exposed.

Enabling the MCP Server

  1. Open Parrot Scribe.
  2. Go to Settings > MCP.
  3. Toggle Enable MCP Server.
  4. In the Clients section, create a token for each MCP client you want to allow.
  5. Copy the token immediately when shown. It is only shown once.

Configuring AI Hosts

Host-specific install steps live on Listen Install.

Listen and Recap

How /parrot:listen and /parrot:recap work is on Listen and Recap. Install and maintenance for named hosts is on Listen Install.

See It In Action

This is a simulated run that showcases different scenarios where Parrot Scribe MCP can be useful. Each example is built from real functionality available after you enable the MCP server and connect a client such as OpenCode, Claude Code, or a similar extension with behavioral and role-specific instructions.

Access Model

Parrot Scribe applies controls at two layers:

  • Client access level (set per client in Settings):

    • Disabled: No tool access.
    • Enabled: Default once a client authenticates with a valid token. Status and operational tools are allowed; destructive tools always prompt.
    • Trusted: Status, operational, and destructive tools are allowed without prompts.
  • Tool class:

Status tools - Always Allowed

No approval needed. Read-only status information.

ToolDescription
get_statusRecording state (recording, listening, paused, error, or downloading) and the active sessionId, when present

Operational tools

Allowed for clients in Enabled or Trusted mode.

ToolDescription
list_sessionsSession metadata and speaker names
read_transcriptTOON-formatted transcript content
search_sessionsSearch saved sessions; see the beta 8 search behavior below
live_transcriptSession-bound in-memory feed with state, schema, epoch, sequence cursor, and gap indicators. The 100-entry ring is lost on restart.
list_speakersEnrolled speakers with metadata
identify_speakersIdentify speakers in a session using provided names
reassign_segment_speakerReassign a specific transcript segment to an existing speaker
start_recordingStart transcription recording
stop_recordingStop transcription recording. Optional sessionId prevents stopping a different session.

Library queries in 1.0.0-beta.8

In 1.0.0-beta.9, Library and MCP use the same indexed search across the whole library. Queries can match transcript text, session IDs, titles, comments and speaker identities. Result limits restrict returned rows, not which sessions are searched.

list_sessions and search_sessions retain their text results and add structuredContent with totalCount, hasMore and unavailableSessionCount. The last count reports how many stored sessions could not be searched; an empty result is not proof that all library data was readable. Library queries are unavailable until encryption setup and initialization finish. See Library Recovery Errors.

Destructive tools

For Enabled clients, every call prompts. Trusted clients can run these without prompts.

ToolDescription
remove_speakerDelete voice model (reversible - can re-enroll later)
forget_speakerPermanently remove a voice model and delete sessions containing that speaker
delete_sessionDelete session and associated audio

Live subscription arguments

live_transcript accepts optional sessionId, sinceSequence, epoch, and waitSeconds arguments. Bind to the active session from get_status, then echo both cursor values from each response. A caught-up request with a matching session and epoch can wait for up to 20 seconds for speech or a state change.

The result is available in structuredContent and as JSON in the text content block. It contains sessionId when available, state, epoch, sinceSequence, gap, sessionChanged, minPollIntervalSeconds, schema, and text. The TOON schema describes the text rows. Preserve this envelope; extracting only text discards continuity and session information.

On a session mismatch, sessionChanged is true and no transcript text is returned. On a same-session gap, use read_transcript to recover persisted evidence before continuing from the returned cursor. Poll starts should be at least minPollIntervalSeconds apart, currently 3 seconds. Status and live tools each allow 30 requests per minute per client, so rapid dual polling is not supported.

An explicit stop can include the bound sessionId. A mismatch fails without stopping capture. Omitting the ID retains the general-purpose stop operation; the listening plugin always scopes its stops. A historical or interim recap needs only read tools and should not stop recording.

Session-bound listening requires an app build advertising these arguments. It does not turn transcript text into authorized instructions. The host must keep spoken follow-up proposals separate from direct user commands and enforce its own tool approval policy.

Mutation Delivery and Audit

Parrot Scribe returns a mutating tool response only after the operation reaches a terminal success or failure. It does not return an accepted or still-running result.

Before domain work starts, Parrot Scribe durably records a started audit fact containing only an operation ID, tool name, and outcome. Once domain work starts, it continues to a terminal result even if the MCP caller disconnects. A disconnected caller may not receive that result, but disconnecting does not cancel or roll back the operation.

After the operation finishes, Parrot Scribe appends a correlated succeeded or failed audit fact. If the app crashes after started was saved but before a terminal fact was saved, the lone started fact means the outcome is unknown. It does not claim that the mutation failed. This audit trail is not a durable job queue and does not provide automatic recovery, retry, or polling.

Token Lifecycle

  • Issue one token per client from Settings > MCP in the Clients section.
  • Tokens are stored as hashed records at rest.
  • Revoking a token immediately removes that client access and disconnects active sessions for that token.

Security Model

Four layers protect your data:

  1. Transport: Local Unix socket with owner-only access.
  2. Authentication: Token is required at connection handshake.
  3. Authorization: Per-client access levels and destructive-operation prompts.
  4. Rate controls: Per-client throttling and bulk-access safeguards reduce automated misuse.

Use Cases

  • Meeting monitor - AI follows a live call and surfaces relevant context
  • Action item tracker - AI detects commitments and prepares follow-up tasks
  • Session summarizer - AI generates structured summaries after recordings
  • Research assistant - AI searches historical transcripts for patterns

For the end-to-end capture, review, retrieval, and optional AI workflow, read Meeting Notes Workflow.

Learn More