会议文档检索服务器

一个基于Granola API的MCP服务器,提供搜索和检索会议笔记和文档的工具,适用于团队协作和知识管理场景。

  • by cjse
  • Ruby
  • 本地部署
  • 更新于
在 GitHub 查看 cjse/granola-mcp

使用说明

Granola MCP服务器

一个MCP(模型上下文协议)服务器,包装了Granola API,提供了搜索和检索会议笔记和文档的工具。

特性

  • 统一搜索:在单个工具中按参与者、时间范围或主题搜索会议笔记
  • 完整文档检索:以Markdown格式获取完整的会议笔记
  • 列出文档集合:查看所有文档列表及其元数据

先决条件

  • Ruby 3.0或更高版本
  • 具有API访问权限的Granola帐户
  • 您的Granola Bearer代币

安装

  1. 克隆此存储库:
git clone <repository-url>
cd granola-mcp
  1. 安装依赖项:
bundle install

配置

  1. 复制示例环境文件:
cp .env.example .env
  1. 编辑 .env 并添加您的Granola Bearer代币:
GRANOLA_BEARER_TOKEN=your-bearer-token-here

或者,您可以将其导出为环境变量:

export GRANOLA_BEARER_TOKEN="your-bearer-token-here"

用法

运行服务器

ruby granola_mcp_server.rb

或者使其可执行:

chmod +x granola_mcp_server.rb
./granola_mcp_server.rb

可用工具

1.搜索会议笔记工具

使用多个条件搜索会议笔记。您可以按参与者、日期范围、主题或这些条件的任意组合进行搜索。

参数:

  • participant (可选):要搜索的参与者的姓名或电子邮件
  • start_date (可选):ISO格式的开始日期(YYYY-MM-DD)
  • end_date (可选):ISO格式的结束日期(YYYY-MM-DD)
  • topic (可选):要搜索的主题或关键字
  • search_content (可选):是在文档内容中搜索(速度较慢)还是仅搜索标题(默认值:false)
  • limit (可选):返回的最大结果数(默认值:20)

注意:必须至少提供一个搜索条件。如果使用日期范围,则start_date和end_date都是必需的。

示例搜索:

  • 查找与特定人员的所有会议
  • 查找日期范围内的会议
  • 查找关于特定主题的会议
  • 合并标准以缩小结果范围

2.获取会议笔记工具

以Markdown格式检索特定会议笔记的完整内容。

参数:

  • document_id (必填):要获取的文档的ID

返回完整的Markdown表示形式,包括:

  • 会议标题和日期
  • 与会者名单
  • 会议纪要
  • 完整的笔记内容,格式正确

3.GetDocumentListsTool

检索所有文档集合/列表。

无需参数。

返回每个列表的元数据,包括:

  • 列表ID和标题
  • 文档计数
  • 可见性设置
  • 会员信息
  • 时间戳

响应格式

所有工具都以以下格式返回响应:

搜索结果

{
  "success": true,
  "count": 5,
  "documents": [
    {
      "id": "document-uuid",
      "title": "Meeting Title",
      "date": "2025-01-15T10:00:00Z",
      "updated_at": "2025-01-15T11:30:00Z",
      "participants": [
        {
          "name": "John Doe",
          "email": "john@example.com",
          "role": "creator"
        }
      ],
      "preview": "Meeting notes preview..."
    }
  ]
}

完整文档

{
  "success": true,
  "document": {
    "id": "document-uuid",
    "title": "Meeting Title",
    "created_at": "2025-01-15T10:00:00Z",
    "updated_at": "2025-01-15T11:30:00Z",
    "content_markdown": "# Meeting Title\n\n**Date:** January 15, 2025...\n\n## Participants\n\n..."
  }
}

MCP客户端配置

要将此服务器与MCP客户端一起使用,请将其添加到MCP设置中:

{
  "mcpServers": {
    "granola": {
      "command": "ruby",
      "args": ["/path/to/granola_mcp_server.rb"],
      "env": {
        "GRANOLA_BEARER_TOKEN": "your-bearer-token"
      }
    }
  }
}

错误处理

服务器处理常见错误:

  • 缺少不记名代币
  • API请求失败
  • 日期格式无效
  • 文档未找到错误
  • 速率限制

错误以以下格式返回:

{
  "success": false,
  "error": "Error message"
}

发展

添加新工具

要添加新工具,请创建一个继承自的新类 FastMcp::Tool:

class MyNewTool < FastMcp::Tool
  description "Tool description"
  
  arguments do
    required(:param_name).filled(:string).description("Parameter description")
    optional(:optional_param).filled(:integer).description("Optional parameter")
  end
  
  def call(param_name:, optional_param: nil)
    # Tool implementation
  end
end

# Register it in the server setup
server.register_tool(MyNewTool)

许可证

MIT许可证