Skip to main content
Glama
zacco16

Gmail MCP Server

by zacco16

Gmail MCP 服务器

用于 Gmail API 集成的模型上下文协议 (MCP) 服务器实现,使 AI 助手能够与 Gmail 服务进行交互。

特征

核心功能

  • 电子邮件操作

    • 使用高级过滤功能列出电子邮件

    • 阅读特定电子邮件的完整内容

    • 创建和发送新电子邮件

  • 草稿管理

    • 创建新草稿

    • 列出现有草稿

    • 阅读草稿内容

    • 更新草稿内容和收件人

    • 删除草稿

  • 日历操作

    • 列出即将发生的日历事件

    • 阅读详细的活动信息

    • 创建新的日历事件

    • 事件过滤和搜索

    • 时区支持

    • iOS 日历同步支持

搜索和过滤

  • Gmail 搜索查询支持

  • 基于标签的过滤

  • 可定制的结果限制

  • 日历事件搜索功能

安全

  • Google OAuth2.0 集成

  • 安全凭证管理

  • 刷新令牌处理

  • 多范围授权支持

Related MCP server: Enhanced Gmail MCP Server

快速入门

先决条件

  • Node.js(v14 或更高版本)

  • npm(v6 或更高版本)

  • 已启用 Gmail 和日历 API 的 Google Cloud Platform 帐户

  • 具有适当范围的 OAuth 2.0 凭据

安装

  1. 克隆并安装依赖项:

    git clone [repository-url]
    cd gmail-mcp-server
    npm install
  2. 配置环境:

    # Create .env file
    cp .env.example .env
    
    # Add your credentials:
    GOOGLE_CLIENT_ID="your_client_id"
    GOOGLE_CLIENT_SECRET="your_client_secret"
    REDIRECT_URI="http://localhost:4100/code"
    GOOGLE_REFRESH_TOKEN="your_refresh_token"
  3. 构建并运行:

    npm run build
    npm start

发展

可用脚本

  • npm run dev - 使用监视模式构建并运行

  • npm run build构建项目

  • npm run clean - 清理构建产物

  • npm run watch - 观察变化

项目结构

gmail-mcp-server/
├── src/
│   ├── config/         # Configuration and setup
│   ├── services/       # Core business logic
│   │   ├── gmail/      # Gmail services
│   │   └── calendar/   # Calendar services
│   ├── tools/          # MCP tool implementations
│   │   ├── calendar/   # Calendar tools
│   │   ├── drafts/     # Draft management tools
│   │   └── messages/   # Email tools
│   ├── types/          # TypeScript definitions
│   └── index.ts        # Server entry point
├── dist/              # Compiled JavaScript
└── tests/             # Test files (pending)

API接口

列出消息

listEmails({
  maxResults?: number,    // Default: 10
  query?: string,         // Gmail search query
  labelIds?: string[],    // Filter by labels
  verbose?: boolean       // Include details
})

阅读消息

readEmail({
  messageId: string    // Message ID to fetch
})

草案操作

// List Drafts
listDrafts({
  maxResults?: number,    // Default: 10
  query?: string,         // Search query
  verbose?: boolean       // Include details
})

// Read Draft
readDraft({
  draftId: string        // Draft ID to fetch
})

// Create Draft
draftEmail({
  to: string[],
  subject: string,
  body: string,
  cc?: string[],
  bcc?: string[],
  isHtml?: boolean
})

// Update Draft
updateDraft({
  draftId: string,       // Draft ID to update
  to?: string[],         // New recipients
  cc?: string[],         // New CC recipients
  bcc?: string[],         // New BCC recipients
  subject?: string,      // New subject
  body?: string,         // New body content
  isHtml?: boolean       // Content type flag
})

// Delete Draft
deleteDraft({
  draftId: string        // Draft ID to delete
})

发送电子邮件

sendEmail({
  to: string[],
  subject: string,
  body: string,
  cc?: string[],
  bcc?: string[],
  isHtml?: boolean,
  draftId?: string    // Optional: send existing draft
})

日历操作

// List Events
listEvents({
  maxResults?: number,    // Default: 25
  timeMin?: string,       // Start time (ISO 8601)
  timeMax?: string,       // End time (ISO 8601)
  query?: string,         // Text search term
  timeZone?: string      // Default: Australia/Brisbane
})

// Read Event Details
readEvent({
  eventId: string,       // Event ID to fetch details
  timeZone?: string     // Default: Australia/Brisbane
})

// Create Event
createEvent({
  summary: string,       // Event title
  start: {
    dateTime: string,    // ISO 8601 start time
    timeZone?: string    // Start time timezone
  },
  end: {
    dateTime: string,    // ISO 8601 end time
    timeZone?: string    // End time timezone
  },
  description?: string,  // Optional event description
  location?: string,     // Optional event location
  attendees?: Array<{    // Optional attendees
    email: string,
    displayName?: string,
    optional?: boolean
  }>,
  status?: 'confirmed' | 'tentative' | 'cancelled',
  sendNotifications?: boolean
})

错误处理

服务器实现了全面的错误处理:

  • 身份验证失败

  • API 速率限制

  • 无效请求

  • 网络问题

  • 日历同步问题

  • 事件 ID 验证

  • 时区验证

贡献

请参阅CONTRIBUTING.md了解指南。

变更日志

请参阅CHANGELOG.md了解版本历史和更新。

路线图

请参阅Backlog.md了解计划的功能和改进。

执照

MIT 许可证 - 详情请参阅许可证

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zacco16/gmail-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server