Microsoft 365 MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ENABLE_EMAIL | No | 是否启用邮件模块 | true |
| ENABLE_TASKS | No | 是否启用待办模块 | true |
| ENABLE_CALENDAR | No | 是否启用日历模块 | true |
| MS_GRAPH_CLIENT_ID | Yes | Azure 应用客户端 ID (必填) | |
| MS_GRAPH_TOKEN_PATH | No | Token 缓存文件的绝对路径 | graph_token.json |
| MS_GRAPH_REDIRECT_URI | No | 注册时填写的重定向 URI | https://login.microsoftonline.com/common/oauth2/nativeclient |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {
"tasks": {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
}
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_calendar_eventsA | 列出用户主日历中的事件。
[注意] 调用前请务必先执行 参数: start_date (str, 可选): 查询范围的开始时间。ISO 8601 格式 (如 '2025-12-23T00:00:00')。必须是本地时间。 end_date (str, 可选): 查询范围的结束时间。ISO 8601 格式 (如 '2025-12-23T23:59:59')。必须是本地时间。 |
| create_calendar_eventA | 在主日历中创建新日程 (UTC+8)。 参数: subject (str): 日程标题。 start (str): 开始时间。ISO 8601 格式 (如 '2025-12-25T09:00:00')。必须是本地时间。 end (str): 结束时间。ISO 8601 格式 (如 '2025-12-25T10:00:00')。必须是本地时间。 body (str, 可选): 日程内容描述。 body_type (str, 可选): 内容类型,可选 'Text' 或 'HTML'。默认为 'HTML'。 location (str, 可选): 地点名称。 is_all_day (bool, optional): 是否为全天事件。默认为 False。 importance (str, optional): 重要程度:'low' (低), 'normal' (普通), 'high' (高)。默认为 'normal'。 categories (List[str], optional): 关联的分类名称列表。 is_reminder_on (bool, optional): 是否设置提醒。默认为 True。 reminder_minutes (int, optional): 开始前多少分钟发出提醒。默认为 15。 |
| update_calendar_eventA | 更新现有的日历事件 (UTC+8)。仅更新提供的字段。 参数: event_id (str): 待更新事件的唯一 ID。 subject (str, 可选): 新标题。 start (str, 可选): 新开始时间 (ISO 8601)。必须是本地时间。 end (str, 可选): 新结束时间 (ISO 8601)。必须是本地时间。 body (str, 可选): 新内容描述。 body_type (str, 可选): 'Text' 或 'HTML'。 location (str, 可选): 新地点。 is_all_day (bool, 可选): 是否更新为全天事件。 importance (str, 可选): 重要程度:'low', 'normal', 'high'。 categories (List[str], 可选): 新的分类列表。 is_reminder_on (bool, 可选): 是否开启提醒。 reminder_minutes (int, 可选): 提醒提前分钟数。 |
| delete_calendar_eventC | 删除日历事件。 参数: event_id (str): 待删除事件的唯一 ID。 |
| get_user_schedulesA | [首选] 检查当前用户在特定时间段内是否有空 (UTC+8)。 当用户询问“我是否有空?”、“是否有冲突?”或“检查我的忙闲”时,请务必【优先】使用此工具而非 list_calendar_events。 它能更高效、更直观地提供时间段的占用情况。 参数: start (str): 查询范围的开始时间。ISO 8601 格式 (如 '2025-12-23T00:00:00')。必须是本地时间。 end (str): 查询范围的结束时间。ISO 8601 格式 (如 '2025-12-23T23:59:59')。必须是本地时间。 availability_view_interval (int, 可选): 响应中每个时间槽的持续分钟数。默认为 30。 |
| list_tasksB | 列出用户默认待办事项列表中的任务。 |
| create_taskA | 在 Microsoft To Do 中创建新任务 (UTC+8)。 参数: title (str): 任务标题。 body (str, 可选): 任务内容描述。 body_type (str, 可选): 'text' (纯文本) 或 'html'。默认为 'text'。 categories (List[str], 可选): 任务关联的分类。 due_date (str, 可选): 截止日期。ISO 8601 格式 (如 '2025-12-31T23:59:59')。必须是东八区本地时间 (UTC+8)。 start_date (str, 可选): 开始日期。ISO 8601 格式。必须是东八区本地时间 (UTC+8)。 reminder_date (str, 可选): 提醒日期/时间。ISO 8601 格式。必须是东八区本地时间 (UTC+8)。 importance (str, 可选): 重要程度:'low' (低), 'normal' (普通), 'high' (高)。 status (str, 可选): 任务状态:'notStarted', 'inProgress', 'completed', 'waitingOnOthers', 'deferred'。 completed_date (str, 可选): 任务完成日期。ISO 8601 格式。必须是东八区本地时间 (UTC+8)。 |
| update_taskB | 更新 Microsoft To Do 中现有的任务 (UTC+8)。 参数: task_id (str): 待更新任务的唯一 ID。 title (str, 可选): 新标题。 body (str, 可选): 新内容描述。 body_type (str, 可选): 'text' 或 'html'。 categories (List[str], 可选): 新分类列表。 due_date (str, 可选): 新截止日期 (ISO 8601)。必须是东八区本地时间 (UTC+8)。 start_date (str, 可选): 新开始日期 (ISO 8601)。必须是东八区本地时间 (UTC+8)。 reminder_date (str, 可选): 新提醒日期 (ISO 8601)。必须是东八区本地时间 (UTC+8)。 importance (str, 可选): 'low', 'normal', 'high'。 status (str, 可选): 'notStarted', 'inProgress', 'completed' 等。 completed_date (str, 可选): 新完成日期 (ISO 8601)。必须是东八区本地时间 (UTC+8)。 |
| complete_taskC | 将任务标记为已完成。 参数: task_id (str): 待完成任务的唯一 ID。 |
| delete_taskC | 删除任务。 参数: task_id (str): 待删除任务的唯一 ID。 |
| list_emailsB | 列出收件箱中的最近邮件 (UTC+8)。 参数: limit (int, 可选): 返回邮件的最大数量。默认为 10。 |
| send_emailC | 发送电子邮件。 参数: to (str): 收件人邮箱地址。 subject (str): 邮件主题。 body (str): 邮件正文内容。 |
| delete_emailC | 删除电子邮件。 参数: message_id (str): 待删除邮件的唯一 ID。 |
| get_current_timeA | 获取当前本地时间 (UTC+8)。处理相对时间请求时,请【必须】先调用此工具以获取参考时间。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| m365-assistant | 在调用本MCP的任何工具或资源前先阅读以下须知内容 |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_time_resource | 获取当前的系统时间与时区信息 (UTC+8)。 |
TDQS
Scored across 14 tools
Calendar and task CRUD tools are clearly separated by resource and action. However, complete_task overlaps with update_task (which can set status to completed), and list_calendar_events overlaps with get_user_schedules for schedule queries, creating minor ambiguity.
All tool names use consistent snake_case verb_noun patterns (list_*, create_*, update_*, delete_*, get_*). Minor pluralization differences (list_calendar_events vs update_calendar_event) follow common conventions.
14 tools cover calendar, tasks, email, and time, which is well within the ideal 3-15 range. No tool appears redundant or trivial.
Calendar and task surfaces provide create/list/update/delete, but lack get-by-id. Email coverage is notably thin: only list, send, and delete; missing read/get by ID, reply, forward, mark read, and update operations, which are core to an email domain.