强大的Microsoft Graph API MCP服务器——适用于Outlook、日历、OneDrive和联系人的完整AI助手工具包。
# 添加Microsoft MCP服务器(替换为您的Azure应用ID)
claude mcp add microsoft-mcp -e MICROSOFT_MCP_CLIENT_ID=your-app-id-here -- uvx --from git+https://github.com/elyxlz/microsoft-mcp.git microsoft-mcp
# 启动Claude Desktop
claude
# 电子邮件示例
> 查看我最新的电子邮件内容
> 回复John的邮件说“我会今天审查这个”
> 发送带有附件的电子邮件给alice@example.com
# 日历示例
> 显示我下周的日历
> 检查我明天下午2点是否有空
> 创建与Bob在下周一上午10点的会议
# 文件示例
> 列出我的OneDrive中的文件
> 将此报告上传到OneDrive
> 在所有文件中搜索“项目提案”
# 多账户
> 列出我的所有Microsoft账户
> 从我的工作账户发送电子邮件
list_emails - 列出电子邮件,可选包含正文内容get_email - 获取特定电子邮件及其附件create_email_draft - 创建电子邮件草稿,支持附件send_email - 立即发送电子邮件,支持抄送/密送和附件reply_to_email - 维持线程上下文回复reply_all_email - 回复线程中的所有收件人update_email - 标记电子邮件为已读/未读move_email - 在文件夹之间移动电子邮件delete_email - 删除电子邮件get_attachment - 获取电子邮件附件内容search_emails - 按查询搜索电子邮件list_events - 列出日历事件及其详细信息get_event - 获取特定事件的详细信息create_event - 创建具有位置和参会者的事件update_event - 调整或修改事件delete_event - 取消事件respond_event - 接受/拒绝/暂定响应邀请check_availability - 检查空闲/忙碌时间以安排search_events - 搜索日历事件list_contacts - 列出所有联系人get_contact - 获取特定联系人的详细信息create_contact - 创建新的联系人update_contact - 更新联系人信息delete_contact - 删除联系人search_contacts - 按查询搜索联系人list_files - 浏览OneDrive中的文件和文件夹get_file - 下载文件内容create_file - 将文件上传到OneDriveupdate_file - 更新现有文件的内容delete_file - 删除文件或文件夹search_files - 在OneDrive中搜索文件unified_search - 跨电子邮件、事件和文件进行搜索list_accounts - 显示已认证的Microsoft账户authenticate_account - 开始新Microsoft账户的身份验证complete_authentication - 输入设备代码后完成身份验证过程microsoft-mcpgit clone https://github.com/elyxlz/microsoft-mcp.git
cd microsoft-mcp
uv sync
# 设置您的Azure应用ID
export MICROSOFT_MCP_CLIENT_ID="your-app-id-here"
# 运行身份验证脚本
uv run authenticate.py
# 按提示进行Microsoft账户的身份验证
添加到您的Claude Desktop配置:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"microsoft": {
"command": "uvx",
"args": ["--from", "git+https://github.com/_elyxlz/microsoft-mcp.git", "microsoft-mcp"],
"env": {
"MICROSOFT_MCP_CLIENT_ID": "your-app-id-here"
}
}
}
}
或者用于本地开发:
{
"mcpServers": {
"microsoft": {
"command": "uv",
"args": ["--directory", "/path/to/microsoft-mcp", "run", "microsoft-mcp"],
"env": {
"MICROSOFT_MCP_CLIENT_ID": "your-app-id-here"
}
}
}
}
所有工具都需要一个作为第一个参数的account_id:
# 列出账户以获取ID
accounts = list_accounts()
account_id = accounts[0]["account_id"]
# 使用账户进行操作
send_email(account_id, "user@example.com", "主题", "正文")
list_emails(account_id, limit=10, include_body=True)
create_event(account_id, "会议", "2024-01-15T10:00:00Z", "2024-01-15T11:00:00Z")
# 运行测试
uv run pytest tests/ -v
# 类型检查
uv run pyright
# 格式化代码
uvx ruff format .
# 静态分析
uvx ruff check --fix --unsafe-fixes .
# 首先获取账户ID
accounts = list_accounts()
account_id = accounts[0]["account_id"]
# 列出最新电子邮件并包含完整内容
emails = list_emails(account_id, limit=10, include_body=True)
# 维持线程回复
reply_to_email(account_id, email_id, "感谢您的消息。我会审查并回复您。")
# 带附件转发
email = get_email(email_id, account_id)
attachments = [get_attachment(email_id, att["id"], account_id) for att in email["attachments"]]
send_email(account_id, "boss@company.com", f"FW: {email['subject']}", email["body"]["content"], attachments=attachments)
# 首先获取账户ID
accounts = list_accounts()
account_id = accounts[0]["account_id"]
# 在安排前检查可用性
availability = check_availability(account_id, "2024-01-15T10:00:00Z", "2024-01-15T18:00:00Z", ["同事@公司.com"])
# 创建带有详细信息的会议
create_event(
account_id,
"项目评审",
"2024-01-15T14:00:00Z",
"2024-01-15T15:00:00Z",
location="会议室A",
body="季度项目进度评审",
attendees=["同事@公司.com", "经理@公司.com"]
)
~/.microsoft_mcp_token_cache.jsonMICROSOFT_MCP_TENANT_ID=consumers~/.microsoft_mcp_token_cache.json并重新进行身份验证MIT