# Granola Mcp Server

> An MCP server for Granola built with arcade-mcp-server

- **Type:** MCP server
- **Install:** `agentstack add mcp-arcadeai-granola-mcp-server`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [ArcadeAI](https://agentstack.voostack.com/s/arcadeai)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [ArcadeAI](https://github.com/ArcadeAI)
- **Source:** https://github.com/ArcadeAI/granola-mcp-server

## Install

```sh
agentstack add mcp-arcadeai-granola-mcp-server
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Granola MCP Server

An [Arcade](https://arcade.dev) MCP server that exposes [Granola](https://granola.ai) meeting intelligence — notes, transcripts, attendees, and calendar metadata — as tools for any MCP-compatible client (Claude Code, Cursor, etc.).

Built on [`arcade-mcp-server`](https://pypi.org/project/arcade-mcp-server/) with OAuth 2.1 Resource Server authentication via Arcade Cloud.

## Tools

| Tool | Description |
|---|---|
| `list_meetings` | List meetings with optional date-range filters and cursor pagination. Returns metadata only (no notes/transcript). |
| `get_meeting` | Get full metadata for a single meeting — attendees, calendar event, folders, duration estimate. |
| `get_meeting_transcript` | Get the verbatim transcript with speaker labels, timestamps, and optional speaker filtering. |

All tools require a `GRANOLA_API_KEY` (Enterprise API key) which is injected as a server-side secret — it is never exposed to the LLM or MCP client.

## Prerequisites

- Python 3.10+
- [uv](https://docs.astral.sh/uv/) package manager
- A [Granola Enterprise API key](https://docs.granola.ai/introduction#obtaining-an-api-key)

## Quick Start

```bash
# 1. Install dependencies
make install

# 2. Configure your API key
cp .env.example .env
# Edit .env and add your Granola API key

# 3. Start the server (HTTP on port 8000)
make dev
```

The server is now running at `http://localhost:8000/mcp`. Point your MCP client to this exact URL and start querying your meetings.

## Authentication

This server uses **OAuth 2.1 Resource Server** authentication. Incoming requests are validated against Arcade Cloud's authorization server using JWT tokens signed with Ed25519. The server:

- Validates token signatures via JWKS from `https://cloud.arcade.dev/.well-known/jwks/oauth2`
- Verifies the issuer is `https://cloud.arcade.dev/oauth2`
- Checks the audience matches the server's canonical URL
- Maps the `email` claim to the user identity for Arcade tool authorization

## Configuration

| Environment Variable | Description |
|---|---|
| `GRANOLA_API_KEY` | Granola Enterprise API key (required) |

## Development

```bash
make install   # Install all dependencies (including dev extras)
make test      # Run tests with coverage
make lint      # Run linting and type checking
make build     # Build wheel
```

## Project Structure

```
arcade_granola/
├── __main__.py          # Server entrypoint, resource server auth config
├── auth.py              # API key auth provider
├── client.py            # Async HTTP client for Granola's public API
├── models.py            # Pydantic models for API responses
└── tools/
    ├── _common.py       # Shared helpers (client factory, URL builders)
    └── meetings.py      # Meeting tools (list, get, transcript)
```

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [ArcadeAI](https://github.com/ArcadeAI)
- **Source:** [ArcadeAI/granola-mcp-server](https://github.com/ArcadeAI/granola-mcp-server)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** yes
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-arcadeai-granola-mcp-server
- Seller: https://agentstack.voostack.com/s/arcadeai
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
