使用说明
Granola MCP服务器
一个MCP(模型上下文协议)服务器,包装了Granola API,提供了搜索和检索会议笔记和文档的工具。
特性
- 统一搜索:在单个工具中按参与者、时间范围或主题搜索会议笔记
- 完整文档检索:以Markdown格式获取完整的会议笔记
- 列出文档集合:查看所有文档列表及其元数据
先决条件
- Ruby 3.0或更高版本
- 具有API访问权限的Granola帐户
- 您的Granola Bearer代币
安装
- 克隆此存储库:
git clone <repository-url>
cd granola-mcp
- 安装依赖项:
bundle install
配置
- 复制示例环境文件:
cp .env.example .env
- 编辑
.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许可证