Granola MCP Server
README.md
> [!WARNING]
> **This repository is archived and no longer maintained.**
>
> This MCP server has been removed from the [mpak registry](https://mpak.dev). Granola now provides a native remote MCP endpoint — use that instead.
---
# Granola MCP Server
[](https://github.com/NimbleBrainInc/mcp-granola/actions/workflows/ci.yml)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/modelcontextprotocol/mcpb)
[](https://mpak.dev)
MCP server for searching your local [Granola](https://granola.ai) meeting notes.
- Search across notes, titles, and AI summaries
- Filter by date range or attendee
- Pull transcripts when available
- Read AI panels (summaries, action items) when available
- Supports Granola cache v3 through v6
- Reloads automatically when Granola updates its cache
## Installation
### With mpak
```bash
mpak bundle run @nimblebraininc/granola
```
### Local Development
```bash
uv sync --dev
uv run python -m mcp_granola.server
```
## Tools
| Tool | Description |
| ------------------- | ----------------------------------------------------------- |
| `search_meetings` | Search notes by keyword with optional date/attendee filters |
| `get_meeting` | Get full meeting details including notes and AI panels |
| `list_meetings` | List meetings with pagination and filtering |
| `search_by_person` | Find all meetings with a specific person |
| `get_transcript` | Get transcript segments with timestamps |
| `get_meeting_stats` | Get statistics about your meeting data |
## Data Source
Auto-detects the newest Granola cache file (`cache-v6.json` through `cache-v3.json`) from `~/Library/Application Support/Granola/` (macOS only). Cached in memory, reloads when the file changes.
## Development
```bash
make check # Run all checks (format, lint, typecheck, test)
make test # Run tests
make test-cov # Run tests with coverage
make format # Format code
make lint # Lint code
make typecheck # Type check with ty
```
## License
MIT
TDQS
A3.7/5.0
Scored across 8 tools
Disambiguation3/5
Most tools are distinct, but `list_meetings` and `search_by_person` both return lists of meetings with attendee filters, creating potential confusion. Descriptions help differentiate but overlap exists.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern using snake_case (e.g., `list_meetings`, `get_meeting`, `search_meetings`). No mixed conventions or vague verbs.
Tool Count5/5
8 tools is well-scoped for a meeting notes query server. Each tool serves a clear purpose without unnecessary bloat or insufficiency.
Completeness4/5
Covers core querying needs: retrieve, list, search, summarize, extract action items, stats. Missing update/delete (likely out of scope) and a combined view of all action items, but minor gaps agents can work around.
Maintenance
ActivityInactive
ResponsivenessNo issues