该项目是一个安全的MCP(模型-上下文-协议)服务器,作为大型语言模型(或其他代理)与Google Workspace服务之间的桥梁。它提供了一组工具,以只读方式与Google Drive、Gmail、Google Calendar和Google Tasks进行交互。
该服务器使用官方Python MCP SDK构建,并且可以与任何兼容MCP的主机一起使用,例如Claude for Desktop或Gemini CLI。
此服务器向代理暴露以下工具:
search_drive(query: str): 在Google Drive中搜索与查询匹配的文件。get_drive_file_details(file_id: str): 根据ID获取特定文件的元数据和内容。search_drive_by_content(search_term: str, folder_id: Optional[str] = None, file_types: Optional[List[str]] = None, case_sensitive: bool = False, use_regex: bool = False, max_results: Optional[int] = None): 搜索包含特定文本内容的文件,具有高级选项。search_within_file_content(file_id: str, search_term: str, case_sensitive: bool = False, use_regex: bool = False): 在单个文件内搜索特定内容。search_gmail(query: str, label_ids: Optional[List[str]] = None, max_results: int = 10): 在Gmail中搜索与查询匹配的电子邮件,可选地在特定标签内搜索。get_gmail_message_details(message_id: str): 根据ID获取特定电子邮件消息的全部详情。list_gmail_labels(): 列出所有可用的Gmail标签。search_gmail_labels(query: str = ""): 搜索与查询匹配的Gmail标签。get_gmail_label_details(label_id: str): 获取特定Gmail标签的详细信息。search_gmail_by_label(label_id: str, query: str = "", max_results: int = 10): 在特定Gmail标签内搜索电子邮件。list_calendars(): 列出所有可用的日历。list_calendar_events(calendar_ids: Optional[List[str]] = None, start_time: str, end_time: str, query: Optional[str] = None, max_results: int = 100): 列出指定日历在一段时间内的所有事件,具有可选过滤器。如果没有提供calendar_ids,则使用默认配置的日历。search_calendar_events(calendar_ids: Optional[List[str]] = None, query: str, start_time: str, end_time: str): 搜索在指定时间段内与查询匹配的日历事件。如果没有提供calendar_ids,则使用默认配置的日历。get_calendar_event_details(event_id: str, calendar_id: Optional[str] = None): 获取特定日历事件的全部详情。如果没有提供calendar_id,则使用第一个配置的默认日历。list_task_lists(): 列出所有可用的任务列表。list_tasks(task_list_id: Optional[str] = None, max_results: int = 100): 列出特定任务列表中的所有任务。如果没有提供task_list_id,则使用默认配置的任务列表。search_tasks(query: str, task_list_id: Optional[str] = None, max_results: int = 50): 根据查询文本搜索任务标题和描述中的任务。search_tasks_by_period(start_date: str, end_date: str, task_list_id: Optional[str] = None, max_results: int = 50): 使用ISO 8601格式(YYYY-MM-DD)搜索特定日期范围内的任务。create_task(title: str, task_list_id: Optional[str] = None, description: Optional[str] = None, due_date: Optional[str] = None, parent_task_id: Optional[str] = None): 创建新的任务或子任务,具有可选的描述、截止日期和父任务,用于分层结构。update_task(task_id: str, task_list_id: Optional[str] = None, title: Optional[str] = None, description: Optional[str] = None, due_date: Optional[str] = None, status: Optional[str] = None): 更新现有任务属性,支持部分更新。mark_task_completed(task_id: str, task_list_id: Optional[str] = None, completed: bool = True): 将任务标记为完成或未完成,自动设置完成时间戳。Google Drive的内容搜索功能支持:
# 基本内容搜索
search_drive_by_content("项目需求")
# 大小写敏感搜索
search_drive_by_content("API", case_sensitive=True)
# 正则表达式搜索电子邮件模式
search_drive_by_content(r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", use_regex=True)
# 在特定文件夹内搜索
search_drive_by_content("预算", folder_id="folder123")
# 仅搜索特定文件类型
search_drive_by_content("报告", file_types=["application/pdf", "application/vnd.google-apps.document"])
# 在特定文件内搜索
search_within_file_content("file_id_123", "特定术语")
# 列出所有标签
list_gmail_labels()
# 搜索包含“工作”的标签
search_gmail_labels("工作")
# 获取特定标签的详细信息
get_gmail_label_details("Label_123")
# 列出所有可用的任务列表
list_task_lists()
# 列出默认任务列表中的任务
list_tasks()
# 搜索包含“会议”的任务
search_tasks("会议")
# 搜索特定期间到期的任务
search_tasks_by_period("2024-01-01", "2024-01-31")
# 创建新任务
create_task("审查项目提案", description="审查第一季度项目提案文档")
# 创建子任务
create_task("准备演示", parent_task_id="task123", due_date="2024-01-15")
# 更新任务描述
update_task("task123", description="更新项目提案审查,添加新要求")
# 标记任务为已完成
mark_task_completed("task123", completed=True)
Google Cloud凭证:
步骤1:创建Google Cloud项目
步骤2:启用所需API
步骤3:配置OAuth同意屏幕
https://www.googleapis.com/auth/drive.readonly(查看Google Drive中的文件)https://www.googleapis.com/auth/gmail.readonly(阅读所有资源及其元数据)https://www.googleapis.com/auth/calendar.readonly(查看您所有日历上的事件)https://www.googleapis.com/auth/tasks(管理您的任务)步骤4:创建OAuth 2.0凭证
credentials.json并保存在项目的根目录中。本地环境(开发用途):
python3 -m venv .venv
./.venv/bin/pip install -r requirements.txt
您可以配置默认日历ID,当没有提供特定日历时将使用这些ID。这对于设置常用日历非常有用。
环境变量:DEFAULT_CALENDAR_IDS
示例:
export DEFAULT_CALENDAR_IDS="primary,work@公司.com,personal@gmail.com"
您可以使用环境变量配置内容搜索行为:
环境变量:
MAX_CONTENT_SEARCH_RESULTS: 搜索结果的最大数量(默认:50)CONTENT_SEARCH_SNIPPET_LENGTH: 搜索结果片段的字符长度(默认:200)示例:
export MAX_CONTENT_SEARCH_RESULTS=100
export CONTENT_SEARCH_SNIPPET_LENGTH=300
您可以使用环境变量配置Google任务的行为:
环境变量:
DEFAULT_TASK_LIST_ID: 默认任务列表ID(默认:'@default')MAX_TASK_SEARCH_RESULTS: 任务搜索结果的最大数量(默认:1[END_OF_TEXT]