Microsoft 365 CLI工具

Flok是一个通过Microsoft Graph API提供邮件、日历、联系人和OneDrive访问的CLI工具和MCP服务器。

  • by RyanLisse
  • Swift
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 RyanLisse/flok

使用说明

🐦 组

您的Microsoft 365运营商失败了。 Swift CLI+MCP服务器,适用于邮件、日历、联系人和OneDrive-全部通过Microsoft Graph API。


它的作用

Flok为您(和您的AI代理)提供了对Microsoft 365的完全访问权限:

  • 📬 邮件 --列出、阅读、发送、回复、搜索、移动、删除
  • 📅 日历 --事件、日程安排、忙/闲、接受/拒绝
  • 👤 联系人 --CRUD+搜索
  • 📁 OneDrive --浏览、下载、搜索文件
  • 🔓 认证 --设备代码流+钥匙链令牌存储
  • 🤖 MCP服务器 --通过stdio为AI代理提供20多种工具

建筑

Sources/
├── Core/           # Graph client, auth, models (zero CLI deps)
│   ├── Auth/       # Device code flow, Keychain storage, token manager
│   ├── Graph/      # HTTP client with retry, pagination
│   └── Models/     # Mail, Calendar, Contact, Drive types
├── CLI/            # Commander subcommands
├── MCP/            # MCP server, tools, resources, prompts
│   ├── Tools/      # Handler per operation (mail, calendar, etc.)
│   ├── Resources/  # Context injection (inbox summary, today's calendar)
│   └── Prompts/    # Workflow templates (triage, schedule, brief)
└── Executable/     # Entry point

关键决策:

  • URL会话 对于HTTP(不是AsyncHTTPClient)——更简单、足够
  • 钥匙扣优先 令牌存储——macOS原生、安全
  • 设备代码流 --适用于任何终端、无头、SSH
  • Swift 6 严格货币,存在主义
  • 处理器模式 对于MCP工具, 提供者模式 用于Graph API

快速开始

1.注册Azure AD应用程序

  1. 首选 Azure门户→ 应用注册
  2. 新注册→ 名称:“Flok”→ 个人+工作账户
  3. 允许公共客户端流 =是
  4. 复制 应用程序(客户端)ID

2.安装并验证

# Clone and build
git clone https://github.com/RyanLisse/Flok.git
cd Flok
swift build

# Set your client ID
export FLOK_CLIENT_ID="your-app-client-id"

# Login (opens browser for device code)
flok auth login

# Verify
flok auth status

3.使用CLI

flok mail list              # List inbox
flok auth status            # Check auth
flok serve                  # Start MCP server

4.用作MCP服务器

添加到MCP客户端配置中:

{
  "mcpServers": {
    "flok": {
      "command": "/path/to/flok",
      "args": ["serve"],
      "env": {
        "FLOK_CLIENT_ID": "your-client-id"
      }
    }
  }
}

MCP工具

工具 描述 写吗?
list-mail 列出收件箱/文件夹中的邮件 否
read-mail 获取完整消息内容 否
send-mail 发送新电子邮件 是
reply-mail 回复消息 是
search-mail 搜索邮件 否
move-mail 移动到文件夹 是
delete-mail 删除消息 是
list-events 列出日历事件 否
get-event 获取事件详细信息 否
create-event 创建日历事件 是
respond-event 接受/拒绝/暂定 是
check-availability 忙/闲查找 否
list-contacts 列出/搜索联系人 否
get-contact 获取联系方式 否
create-contact 创建新联系人 是
list-files 浏览OneDrive 否
get-file 获取文件元数据 否
search-files 搜索OneDrive 否
graph-api 原始图形API转义填充 取决于

代理本机功能

  • MCP资源 --自动注入上下文: flok://inbox/summary, flok://calendar/today, flok://me/profile
  • MCP提示 --可组合的工作流程:分类收件箱、安排会议、起草和审查、每日简报、联系人查找
  • 逃生舱口 — graph-api 该工具直接调用ANY Graph端点
  • 完工信号 --每个工具结果包括 nextActions 建议
  • 只读模式 --设置 FLOK_READ_ONLY=true 禁用所有写入操作

配置

设置 CLI 环境变量 默认值
客户端ID -- FLOK_CLIENT_ID (必填)
租户ID -- FLOK_TENANT_ID common
账户 FLOK_ACCOUNT default
只读 -- FLOK_READ_ONLY false
API版本 - FLOK_API_VERSION v1.0

所需的Azure权限

Mail.ReadWrite
Calendars.ReadWrite
Contacts.ReadWrite
Files.ReadWrite
User.Read
offline_access

依赖项

包装 用途
steipete/指挥官 CLI框架
modelcontextprotocol/swift-sdk MCP服务器

许可证

麻省理工学院