For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Contact usJoin the Discord
ManualAPI GuideAPI Reference
  • Getting started
    • Introduction
    • Quickstart
    • How it works
  • Installation Options
    • Package Install
    • Docker
    • Development
  • Configuration
    • CLI
    • Settings & Profiles
    • Model Configuration
  • Inference Providers
    • Overview
    • Ollama
    • LM Studio
    • LlamaCPP Server
    • vLLM
  • Integrations
    • Overview
    • Claude Code
    • Claude Desktop
    • Claude for Microsoft 365
    • OpenCode
  • Built-in Tools
    • Web Tools
    • Database Tools
  • Storage Providers
    • Vector Store
    • Object Storage
  • User Interface
    • Workbench
  • Observability
    • Observability
  • Reference
    • Troubleshooting
LogoLogo
Contact usJoin the Discord
On this page
  • Compatibility
  • Prerequisites
  • Setup
  • CORS
  • Troubleshooting
Integrations

Claude for Microsoft 365

Was this page helpful?
Previous

OpenCode

Next
Built with

This page was last updated and tested on 2026-06-02. Claude Desktop updates can change configuration fields or UI labels without notice — if something stops working, check this page for an updated guide.

Please verify that your context window is more than 40k tokens to use it. Otherwise, you may encounter errors or degraded performance. If your model supports a smaller context window, consider using a compatible model or adjusting your configuration accordingly.

The official Claude add-ins for Word, Excel, PowerPoint, and Outlook support third-party LLM gateways. Because private-gpt exposes a native Anthropic-compatible API, it works as a drop-in gateway — no adapter or proxy needed.

For the official Anthropic documentation, see Use Claude for Microsoft 365 with third-party platforms.

Compatibility

Tested against private-gpt on 2026-05-27.

FeatureStatusNotes
Chat with documents, spreadsheets, decks✅
Read / edit cells, slides, formulas✅
File uploads✅
Skills✅
MCP connectors✅
Financial connectors (S&P, FactSet)✅Requires MCP connectors configured to proxy those APIs
Web search✅Requires MCP connectors configured to proxy search APIs
Working across apps❌Requires a Claude account

Prerequisites

  • Claude add-ins installed from Microsoft AppSource or deployed by your IT admin
  • Microsoft 365 with Entra ID
  • private-gpt server running and reachable from end-user machines (see serve)

Setup

1

Open the add-in

Launch the Claude add-in from the ribbon in Word, Excel, PowerPoint, or Outlook.

2

Select Enterprise gateway

On the connection screen choose Enterprise gateway.

3

Enter gateway details

FieldValue
Gateway URLhttp://localhost:<port>/<root_path>
API tokenserver.auth.secret (any value if auth is disabled)

If root_path is empty:

http://localhost:8080

The add-in tests the connection automatically. Credentials are stored locally in the browser sandbox and never sent to Anthropic.

4

Pick your model

The add-in discovers available models from GET /v1/models. Select the model you want to use.


CORS

The add-in calls private-gpt directly from the browser, so your server must allow the origin. The required origin may change between Claude Desktop versions — using a wildcard is the safest default:

1server:
2 cors:
3 enabled: true
4 allow_origins:
5 - "*"

If you prefer to restrict the origin, check the exact value in the network tab of your browser’s developer tools when the add-in connects.


Troubleshooting

ErrorCause & Fix
Connection refused / network errorVerify the gateway URL is reachable from the user’s machine; check firewall or VPN
401 UnauthorizedInvalid or expired token — confirm server.auth.secret is correct
403 ForbiddenToken valid but server returned forbidden — check auth settings
404 Not foundUse the base URL without a path suffix (e.g. http://localhost:8080, not /v1/messages)
No models availableConfirm GET /v1/models returns a non-empty list
Streaming failsVerify your reverse proxy (if any) passes Server-Sent Events through without buffering
CORS error in browser consoleSet server.cors.allow_origins: ["*"] and restart