
微软图形
STDIO微软Graph API助手工具包
微软Graph API助手工具包
Powerful MCP server for Microsoft Graph API - a complete AI assistant toolkit for Outlook, Calendar, OneDrive, and Contacts.
# Add Microsoft MCP server (replace with your Azure app 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 # Start Claude Desktop claude
# Email examples > read my latest emails with full content > reply to the email from John saying "I'll review this today" > send an email with attachment to [email protected] # Calendar examples > show my calendar for next week > check if I'm free tomorrow at 2pm > create a meeting with Bob next Monday at 10am # File examples > list files in my OneDrive > upload this report to OneDrive > search for "project proposal" across all my files # Multi-account > list all my Microsoft accounts > send email from my work account
list_emails
- List emails with optional body contentget_email
- Get specific email with attachmentscreate_email_draft
- Create email draft with attachments supportsend_email
- Send email immediately with CC/BCC and attachmentsreply_to_email
- Reply maintaining thread contextreply_all_email
- Reply to all recipients in threadupdate_email
- Mark emails as read/unreadmove_email
- Move emails between foldersdelete_email
- Delete emailsget_attachment
- Get email attachment contentsearch_emails
- Search emails by querylist_events
- List calendar events with detailsget_event
- Get specific event detailscreate_event
- Create events with location and attendeesupdate_event
- Reschedule or modify eventsdelete_event
- Cancel eventsrespond_event
- Accept/decline/tentative response to invitationscheck_availability
- Check free/busy times for schedulingsearch_events
- Search calendar eventslist_contacts
- List all contactsget_contact
- Get specific contact detailscreate_contact
- Create new contactupdate_contact
- Update contact informationdelete_contact
- Delete contactsearch_contacts
- Search contacts by querylist_files
- Browse OneDrive files and foldersget_file
- Download file contentcreate_file
- Upload files to OneDriveupdate_file
- Update existing file contentdelete_file
- Delete files or folderssearch_files
- Search files in OneDriveunified_search
- Search across emails, events, and fileslist_accounts
- Show authenticated Microsoft accountsauthenticate_account
- Start authentication for a new Microsoft accountcomplete_authentication
- Complete the authentication process after entering device codemicrosoft-mcp
git clone https://github.com/elyxlz/microsoft-mcp.git cd microsoft-mcp uv sync
# Set your Azure app ID export MICROSOFT_MCP_CLIENT_ID="your-app-id-here" # Run authentication script uv run authenticate.py # Follow the prompts to authenticate your Microsoft accounts
Add to your Claude Desktop configuration:
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" } } } }
Or for local development:
{ "mcpServers": { "microsoft": { "command": "uv", "args": ["--directory", "/path/to/microsoft-mcp", "run", "microsoft-mcp"], "env": { "MICROSOFT_MCP_CLIENT_ID": "your-app-id-here" } } } }
All tools require an account_id
parameter as the first argument:
# List accounts to get IDs accounts = list_accounts() account_id = accounts[0]["account_id"] # Use account for operations send_email(account_id, "[email protected]", "Subject", "Body") list_emails(account_id, limit=10, include_body=True) create_event(account_id, "Meeting", "2024-01-15T10:00:00Z", "2024-01-15T11:00:00Z")
# Run tests uv run pytest tests/ -v # Type checking uv run pyright # Format code uvx ruff format . # Lint uvx ruff check --fix --unsafe-fixes .
# Get account ID first accounts = list_accounts() account_id = accounts[0]["account_id"] # List latest emails with full content emails = list_emails(account_id, limit=10, include_body=True) # Reply maintaining thread reply_to_email(account_id, email_id, "Thanks for your message. I'll review and get back to you.") # Forward with attachments 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, "[email protected]", f"FW: {email['subject']}", email["body"]["content"], attachments=attachments)
# Get account ID first accounts = list_accounts() account_id = accounts[0]["account_id"] # Check availability before scheduling availability = check_availability(account_id, "2024-01-15T10:00:00Z", "2024-01-15T18:00:00Z", ["[email protected]"]) # Create meeting with details create_event( account_id, "Project Review", "2024-01-15T14:00:00Z", "2024-01-15T15:00:00Z", location="Conference Room A", body="Quarterly review of project progress", attendees=["[email protected]", "[email protected]"] )
~/.microsoft_mcp_token_cache.json
MICROSOFT_MCP_TENANT_ID=consumers
for personal accounts~/.microsoft_mcp_token_cache.json
and re-authenticateMIT