Microsoft 365集成服务器

一个基于模型上下文协议(MCP)的Microsoft 365集成服务器,提供邮件、日历、OneDrive、任务、Teams等多种功能支持,适用于企业协作和办公自动化。

  • by makhatib
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 makhatib/mcp-microsoft365

使用说明

MCP微软365服务器

用于Microsoft 365集成的MCP(模型上下文协议)服务器。建于 规范驱动开发 方法论。

✨ 特性

📧 邮件(Outlook)

  • m365_mail_list -列出收件箱/文件夹中的电子邮件
  • m365_mail_read -阅读特定电子邮件
  • m365_mail_send -发送电子邮件(支持HTML)
  • m365_mail_reply -回复电子邮件
  • m365_mail_forward -转发电子邮件
  • m365_mail_move -将电子邮件移动到文件夹
  • m365_mail_flag -标记/取消标记以供后续跟进
  • m365_mail_mark_read -标记为已读/未读
  • m365_mail_folders -列出邮件文件夹
  • m365_mail_create_draft -创建电子邮件草稿
  • m365_mail_search -搜索电子邮件
  • m365_mail_delete -删除电子邮件
  • m365_mail_attachments_list -列出电子邮件附件
  • m365_mail_attachment_get -获取附件内容

📅 日历

  • m365_calendar_list -列出事件
  • m365_calendar_get -获取活动详细信息
  • m365_calendar_create -创建活动(团队会议支持)
  • m365_calendar_update -更新事件
  • m365_calendar_respond -接受/拒绝邀请
  • m365_calendar_delete -删除事件
  • m365_calendar_availability -检查忙/闲状态
  • m365_calendar_find_meeting_times -查找可用的会议时段

📁 OneDrive

  • m365_files_list -列出文件/文件夹
  • m365_files_get -获取文件元数据
  • m365_files_read -读取文件内容
  • m365_files_search -搜索文件
  • m365_files_upload -上传文件
  • m365_files_delete -删除文件
  • m365_files_share -创建共享链接
  • m365_files_create_folder -创建新文件夹
  • m365_files_move -移动文件/文件夹
  • m365_files_copy -复制文件/文件夹

✅ 任务(待办事项)

  • m365_tasks_lists -列出任务列表
  • m365_tasks_list -列出任务
  • m365_tasks_create -创建任务
  • m365_tasks_update -更新任务
  • m365_tasks_complete -标记任务完成
  • m365_tasks_delete -删除任务
  • m365_tasks_create_list -创建新任务列表

💬 团队

  • m365_teams_chats -列出聊天记录
  • m365_teams_messages -阅读聊天信息
  • m365_teams_send -发送消息
  • m365_teams_create_chat -创建新聊天
  • m365_teams_create_online_meeting -创建团队会议
  • m365_meetings_list -列出在线会议
  • m365_meeting_transcripts -列出会议记录
  • m365_meeting_transcript_content -获取成绩单内容
  • m365_call_records -列出通话记录
  • m365_meeting_by_join_url -按URL查找会议

📇 联系人

  • m365_contacts_list -列出联系人
  • m365_contacts_get -获取联系方式
  • m365_contacts_create -创建联系人
  • m365_contacts_update -更新联系人
  • m365_contacts_search -搜索联系人
  • m365_contacts_delete -删除联系人

👥 用户

  • m365_users_list -列出组织用户
  • m365_users_get -获取用户资料
  • m365_users_search -搜索用户

🚀 快速开始

1.Azure Entra ID设置

在中创建应用程序 Azure门户:

  1. 首选 微软Entra ID → 应用程序注册 → 新注册
  2. 添加 应用程序权限 对于Microsoft Graph:
    • Mail.Read, Mail.Send, Mail.ReadWrite
    • Calendars.Read, Calendars.ReadWrite
    • Files.Read.All, Files.ReadWrite.All
    • Sites.Read.All
    • Tasks.Read.All, Tasks.ReadWrite.All
    • Chat.Read.All, Chat.ReadWrite.All
    • Contacts.Read, Contacts.ReadWrite
    • User.Read.All
    • OnlineMeetings.Read.All, OnlineMeetings.ReadWrite.All (适用于团队会议)
    • OnlineMeetingTranscript.Read.All (用于成绩单)
  3. 授予管理员同意 为您的组织

2.安装

git clone https://github.com/malkhatib/mcp-microsoft365.git
cd mcp-microsoft365
npm install

3.配置

创建 .env 文件:

TENANT_ID=your-tenant-id
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret
DEFAULT_USER=user@yourdomain.com

4.构建和运行

npm run build
npm start

5.与mcporter一起使用

# Add to mcporter config
mcporter config add m365 --stdio "node /path/to/dist/index.js"

# Test
mcporter call m365.m365_mail_list top:5

📖 用法示例

# List recent emails
mcporter call m365.m365_mail_list top:10

# Send an email
mcporter call m365.m365_mail_send \
  to:"someone@example.com" \
  subject:"Hello" \
  body:"<p>Hi there!</p>"

# List calendar events
mcporter call m365.m365_calendar_list top:5

# Create event with Teams meeting
mcporter call m365.m365_calendar_create \
  subject:"Meeting" \
  start:"2024-01-30T10:00:00" \
  end:"2024-01-30T11:00:00" \
  isOnline:true

# Search files
mcporter call m365.m365_files_search query:"report" top:10

# Create a task
mcporter call m365.m365_tasks_create \
  listId:"xxx" \
  title:"Review document" \
  importance:"high"

🏗️ 项目结构

mcp-microsoft365/
├── src/
│   ├── index.ts          # Entry point
│   ├── core/
│   │   ├── auth.ts       # OAuth2 token management
│   │   ├── config.ts     # Environment configuration
│   │   ├── errors.ts     # Custom error classes
│   │   ├── graph-client.ts # Microsoft Graph API client
│   │   └── logger.ts     # Structured logging
│   ├── tools/
│   │   ├── mail.ts       # Mail tools
│   │   ├── calendar.ts   # Calendar tools
│   │   ├── files.ts      # OneDrive tools
│   │   ├── tasks.ts      # Tasks tools
│   │   ├── teams.ts      # Teams tools
│   │   └── users.ts      # Users tools
│   └── types/            # TypeScript interfaces
├── CONSTITUTION.md       # Project principles
├── SPEC.md              # Specifications
├── PLAN.md              # Technical plan
└── TASKS.md             # Task breakdown

🔧 发展

# Install dependencies
npm install

# Build
npm run build

# Watch mode
npm run dev

# Run tests
npm test

# Lint
npm run lint

📋 采用规范驱动开发构建

该项目遵循 规格套件 方法论:

  1. 宪法 -项目原则和标准
  2. 规格 -我们正在建造什么以及为什么
  3. 计划 -技术架构
  4. 任务 -实施分解
  5. 实施 -干净的模块化代码

🔒 安全

  • 没有硬编码的秘密
  • 配置的环境变量
  • 带有自动刷新功能的令牌缓存
  • 使用Zod进行输入验证

📄 许可证

MIT许可证-请参阅 许可证 文件。

👤 作者

马哈茂德·阿尔哈提卜

🙏 致谢