In application mode every request carries the app's own Graph rights, so whatever the registration was granted is what the agent can reach, for everybody. Delegated mode passes the signed-in user's token instead, and SharePoint's own permissions apply — which is usually what you want when several people share the agent. Two documented limits to plan around: partial document updates are not supported (an update replaces the whole file), and files over 4MB need upload sessions, which are not implemented yet.
A SharePoint server built for agents rather than for people. Every operation goes through Microsoft Graph with deterministic inputs and outputs, and the server has no access to the local filesystem — a document arrives as content, not as a path.
- Folders — `getFolders` lists them at a path, `createFolder` adds one, `deleteFolder` removes an empty one, `getFolderTree` returns the structure
- Documents — `getDocuments` lists them, `getDocumentContent` reads PDF, Word, Excel and PowerPoint content, `uploadDocument` adds text or binary, `updateDocumentContent` replaces a whole file, `deleteDocument` removes one
- `searchDocumentsByKeywords` finds documents without walking the tree
- Two authentication modes on the same tools, selected per request with `authMode`: `application` acts with the app's own Graph permissions, `delegated` acts as the signed-in user
- Paths use forward slashes on every platform, including Windows
Node.js, a Microsoft 365 tenant, and an app registered in Microsoft Entra ID. Published on npm as @memori.ai/mcp-sharepoint version 1.2.0. The recommended Graph permissions are `Sites.Read.All`, `Sites.ReadWrite.All`, `Files.Read.All` and `Files.ReadWrite.All`; both application and delegated permissions are supported. In application mode each request carries `tenantId`, `clientId` and `clientSecret`; in delegated mode it carries `accessToken` from the user's login. Either way it also needs `siteId`, `driveId` and `listId`, which the README walks you through obtaining with three Graph calls.
One command plus a key — npx -y mcp-sharepoint, then supply credentials
