会议智能API服务器

一个用于集成Granola.ai会议智能与Claude桌面的模型上下文协议(MCP)服务器,支持API回退获取会议记录。

  • by antonber
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 antonber/granola-mcp

使用说明

GranolaAI MCP服务器(Fork with API Support)

用于将Granola.ai会议智能与Claude Desktop集成的模型上下文协议(MCP)服务器。

此分支为转录本添加了API回退。 原始proofgeist版本仅从Granola的本地缓存中读取,这意味着在Granola UI中查看转录之前,转录本不可用(延迟加载)。当转录本不在本地缓存中时,这个fork会自动从Granola的API中获取转录本。

特性

  • 会议搜索:按标题、内容、参与者和记录内容搜索会议
  • 会议详细信息:通过本地时区显示获取全面的会议元数据
  • 完整成绩单访问:检索带有演讲者标识的完整会议对话
  • 丰富的文档内容:访问实际的会议笔记、摘要和结构化内容
  • 模式分析:分析会议模式(参与者、频率、主题)
  • 时区情报:所有时间戳都会自动显示在您的本地时区
  • 实时集成:无缝连接到您的实际Granola会议数据

快速开始

先决条件

  • Python 3.12+
  • 紫外线 包管理器
  • 安装了Granola.ai的macOS
  • Granola缓存文件位于 ~/Library/Application Support/Granola/cache-v3.json

Cursor一键安装(推荐)

单击上面的按钮,将Granola MCP服务器自动添加到Cursor。

注: 这需要 紫外线 Granola.ai将在macOS上运行。

手动安装(Claude桌面版)

Click to expand manual setup instructions
  1. 将存储库克隆到主目录:

    cd ~
    git clone https://github.com/proofgeist/granola-ai-mcp-server
    cd granola-ai-mcp-server
    

    重要提示: 克隆到您的主目录(~)而不是 ~/Documents 以避免Claude Desktop的macOS权限问题。

  2. 使用uv安装依赖项:

    uv sync
    
  3. 测试安装:

    uv run python test_server.py
    
  4. 配置Claude桌面 通过添加到您的 claude_desktop_config.json:

    {
      "mcpServers": {
        "granola": {
          "command": "/Users/YOUR_USERNAME/granola-ai-mcp-server/.venv/bin/granola-mcp-server",
          "args": [],
          "env": {}
        }
      }
    }
    

    重要提示:

    • 替换 YOUR_USERNAME 使用您的实际macOS用户名
    • 使用虚拟环境脚本的直接路径(不是 uv run)避免工作目录问题
    • 路径应指向您的主目录安装
  5. 重新启动克劳德桌面 加载MCP服务器:

    # Quit Claude completely
    osascript -e 'quit app "Claude"'
    # Reopen Claude
    open -a "Claude"
    

可用工具

搜索_留言

按查询字符串搜索会议。

Parameters:
- query (string): Search query for meetings
- limit (integer, optional): Maximum number of results (default: 10)

get_meeting_details

获取特定会议的详细信息。

Parameters:
- meeting_id (string): Meeting ID to retrieve details for

get_meeting_transcript

获取特定会议的记录。 如果不在本地缓存中,则返回到Granola API。

Parameters:
- meeting_id (string): Meeting ID to get transcript for

注: Granola仅在您在UI中查看时才会将转录本延迟加载到本地缓存中。这个fork添加了自动的API后退,当转录本没有缓存在本地时,可以直接从Granola的服务器获取转录本。

get_meeting_documents

获取与会议相关的文档。

Parameters:
- meeting_id (string): Meeting ID to get documents for

分析会议模式

分析多个会议的模式。

Parameters:
- pattern_type (string): Type of pattern to analyze ('topics', 'participants', 'frequency')
- date_range (object, optional): Date range for analysis with start_date and end_date

用法示例

一旦配置了Claude Desktop,您就可以使用自然语言与Granola会议进行交互:

基本查询

  • “搜索有关季度规划的会议”
  • “显示昨天的会议”
  • “查找本周与David的会面”

成绩单访问

  • “获取昨天ProofChat会议的记录”
  • “Float回滚计划会议讨论了什么?”
  • “向我展示David Tibbi会议的完整对话”

内容分析

  • “分析上个月的参与者模式”
  • “哪些文件与产品评审会议相关?”
  • “搜索会议记录中提到的‘模式标签’”

最近的会议情报

服务器自动检测并提供对以下内容的访问:

  • 完整成绩单 来自最近的会议(25000+个字符)
  • 会议内容 包括注释和摘要
  • 参与者信息 以及说话者识别
  • 本地时区显示 适用于所有会议时间

发展

运行测试

uv run python test_server.py

直接运行服务器

uv run granola-mcp-server

添加依赖关系

uv add package-name

配置

Claude桌面配置位置

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

格兰诺拉麦片缓存位置

服务器从Granola的缓存文件中读取:

~/Library/Application Support/Granola/cache-v3.json

安全与隐私

  • ✅ 本地优先处理 -首先从本地缓存读取
  • ✅ API用于转录的回退 -仅当转录未在本地缓存时从Granola API获取(使用您现有的Granola auth令牌)
  • ✅ 尊重格兰诺拉麦片许可 -使用现有的Granola.ai访问控制
  • ✅ 只读访问 -服务器只读取数据,从不修改

性能和能力

  • 快速加载:为数百个会议加载低于2秒的缓存
  • 丰富的内容:提取25000多个字符的文字记录和会议笔记
  • 有效搜索:跨标题、内容、参与者和成绩单的多字段搜索
  • 内存优化:使用智能内容解析进行延迟加载
  • 时区智能:自动本地时区检测和显示
  • 生产就绪:成功处理真实的Granola数据(11.7MB缓存文件)
  • 可扩展的:处理每次会议包含500多个转录片段的大型数据集

当前状态

🚀 生产就绪 -已成功使用真实的Granola.ai数据进行测试,包括:

  • ✅ 39+次会议 解析和搜索
  • ✅ 28份完整成绩单 完整的对话
  • ✅ 丰富的会议内容 来自笔记、摘要和结构化数据
  • ✅ 时区情报 显示类似“17:04”而不是“21:04 UTC”的时间
  • ✅ 说话人辨认 和对话流
  • ✅ 昨天的会议 内容详尽,完全可访问

故障排除

常见问题

“找不到缓存文件”

  • 确保Granola.ai已安装并处理了一些会议
  • 检查缓存文件是否存在: ls -la "~/Library/Application Support/Granola/cache-v3.json"

“未找到uv命令”

  • 安装紫外线: curl -LsSf https://astral.sh/uv/install.sh | sh
  • 或者在Claude配置中使用pip回退: "command": "python"

“权限被拒绝”或“不允许操作”

  • macOS上最常见的问题:当服务器安装在 ~/Documents 或其他受保护的文件夹

  • 解决方案1(推荐):将安装移动到主目录:

    mv ~/Documents/granola-ai-mcp-server ~/granola-ai-mcp-server
    cd ~/granola-ai-mcp-server
    uv sync  # Rebuild venv with correct paths
    

    然后更新路径 claude_desktop_config.json

  • 解决方案2:授予Claude桌面全磁盘访问权限:

    1. 打开系统设置→ 隐私和安全→ 全磁盘访问
    2. 单击锁图标并进行身份验证
    3. 点击“+”并添加 /Applications/Claude.app
    4. 将克劳德切换到“打开”
    5. 重新启动克劳德桌面

“当前目录不存在”

  • 使用时会出现此错误 uv run 随着 --directory 旗帜
  • 请改用venv脚本的直接路径(请参阅安装步骤4)

服务器未出现在Claude Desktop中

  • 验证Claude配置中的绝对路径
  • 检查克劳德桌面日志: ~/Library/Logs/Claude/mcp-server-granola.log
  • 在日志中查找Python错误
  • 确保路径不包含空格或特殊字符
  • 配置更改后重新启动Claude Desktop

“生成进程失败”或“没有这样的文件或目录”

  • venv脚本中的Python shebang指向了错误的位置
  • 跑 uv sync 在项目目录中重建venv
  • 验证脚本是否存在: ls -la ~/granola-ai-mcp-server/.venv/bin/granola-mcp-server

Claude中的会议记录显示为空

  • 格兰诺拉麦片有时会在里面储存丰富的钞票 documentPanels 而不是 notes_plain
  • 此服务器现在默认读取这些面板;集 GRANOLA_PARSE_PANELS=0 在环境中禁用
  • 跑 python test_real_cache.py 验证面板支持的笔记是否产生内容