Skip to content
Agentmart
Submit a tool

Microsoft 365 MCP Server

Interact with Microsoft 365 and Office services through the Microsoft Graph API.

Connector by Softeria · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 1,072
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/softeria-ms-365-mcp-server

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Interact with Microsoft 365 and Office services through the Microsoft Graph API.

Use cases: email, file-management, scheduling

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
7 read · 6 write · 2 delete · 2 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Tools by what they do 17

Read from the source code; the running server may list different tools.

Read 7 · Look things up without changing anything.

  • get-download-url
  • get-tool-schema
  • list-accounts
  • parse-teams-url
  • read-mail-text
  • search-tools
  • verify-login

Write 6 · Create, change, send or run things.

  • download-bytes
  • download-bytes-to-file
  • login
  • logout
  • select-account
  • upload-attachment-from-file

Delete 2 · Delete, drop, revoke or wipe things.

  • execute-tool
  • remove-account

Not yet classified 2 · We could not tell from the name and description.

  • body
  • get-upload-url

Tools (17)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • body

    New navigation property

  • download-bytes

    Download binary content from Microsoft Graph and return it as base64. Single tool for any binary read: drive file content, mail attachment, profile photo, Teams hosted content, meeting recording. Returns { contentType, encoding: "base64", contentLength, contentBytes }. For large drive/SharePoint file content, prefer get-download-url, which returns a pre-authenticated URL to stream bytes out-of-band instead of base64 through the agent context. With the server's blob output on, the bytes come back as a file resource instead (capped by the server's download limit); pass fileName to name it.

  • download-bytes-to-file

    Write authenticated Microsoft Graph byte content to a local file on the server, returning { path, contentType, bytesWritten } instead of base64. The only out-of-band way to save mail attachments and meeting recordings, whose bytes are exposed solely through authenticated endpoints. Also handles profile photos and Teams hosted content. Writes to an absolute outputPath and never overwrites an existing file. stdio mode, or HTTP with --http-local-file-tools. For OneDrive or SharePoint file content, get-download-url is preferred — it returns a pre-authenticated URL for fully out-of-band download wi…

  • execute-toolcan change or delete data

    Execute a Microsoft Graph API tool by name. Workflow: search-tools → get-tool-schema → execute-tool. Call get-tool-schema first for any tool you have not seen before — passing the wrong shape to parameters will fail validation or return a Graph 400. For list endpoints, prefer modest $top plus $select.

  • get-download-url

    Resolve a short-lived, pre-authenticated download URL for Microsoft Graph binary content that exposes one (drive/SharePoint file content). The returned URL streams the bytes with NO Authorization header, so the client can fetch it straight to disk (e.g. curl) without round-tripping base64 through the agent context. Prefer this over download-bytes for any file above a few KB or any bulk download. Returns { downloadUrl, name?, size?, contentType? }. Mail file attachments (/messages/{id}/attachments/{id}/$value), meeting recordings and other $value byte endpoints have no pre-authenticated URL fro…

  • get-tool-schemaread-only

    Returns the full parameter schema (name, placement, required, JSON Schema) for a tool discovered via search-tools. Call this before execute-tool so you know what parameters to pass and what enum values are valid.

  • get-upload-url

    Mint a short-lived, single-use URL that this server serves for uploading a file as an attachment to a draft message or an event, so the bytes go straight from the caller to Microsoft Graph instead of passing as base64 through the agent context. target is the attachments collection of the item: /me/messages/{message-id}/attachments (a draft; create it first) or /me/events/{event-id}/attachments. PUT the raw file bytes to the returned uploadUrl with a Content-Length (e.g. curl -T file "<uploadUrl>"); the response confirms the attachment. Files under 3 MB are attached directly, larger ones (up to…

  • list-accountsread-only

    List all Microsoft accounts configured in this server. Use this to discover available account emails before making tool calls. Reflects accounts added mid-session via --login.

  • login

    Authenticate with Microsoft account

  • logout

    Log out from Microsoft account

  • parse-teams-url

    Converts any Teams meeting URL format (short /meet/, full /meetup-join/, or recap ?threadId=) into a standard joinWebUrl. Use this before list-online-meetings when the user provides a recap or short URL.

  • read-mail-text

    Triage view of up to 20 mail messages at once, as text with the bulk junk removed: invisible padding, image placeholders and quoted reply history (forwards keep theirs). Links are kept: Safe Links, Proofpoint and Google redirects are unwrapped to the real address and tracking parameters (utm_* and similar) dropped; only an address still over 300 characters (a tracking redirect) is shortened to ⟦link: domain⟧. Everything else (signatures, footers, whitespace) is left as the message has it; line endings become \n and ⟦ ⟧ in the body itself appear as [ ]. Use get-mail-message for the raw body or …

  • remove-account

    Remove a Microsoft account from the cache. Accepts email address (e.g. user@outlook.com) or account ID. Use list-accounts to discover available accounts.

  • search-toolsread-only

    Description is built at runtime.

  • select-account

    Select a Microsoft account as the default. Accepts email address (e.g. user@outlook.com) or account ID. Use list-accounts to discover available accounts.

Show 2 more tools
  • upload-attachment-from-file

    Attach a local file on the server to a draft message or an event, read straight from disk instead of passing as base64 through the agent context. target is the attachments collection, e.g. /me/messages/{message-id}/attachments or /me/events/{event-id}/attachments. Files up to 150 MB; the server picks an inline upload or an upload session by size. filePath must be absolute and inside a directory listed in MS365_MCP_UPLOAD_DIRS. stdio mode, or HTTP with --http-local-file-tools.

  • verify-login

    Check current Microsoft authentication status

Signals

Stars
1,072
Forks
397
Open issues
9
Last commit
Oct 24, 2026 (6 days ago)
Last release
Oct 25, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.Softeria/ms-365-mcp-server
Version
0.172.0
Auth
No auth
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 26, 2026
Cite this page

Microsoft 365 MCP Server. Agent Mart. https://agentmart.dev/connectors/softeria-ms-365-mcp-server (last updated 2026-10-26)