SharePoint MCP Server
A Model Context Protocol (MCP) server that provides Claude with access to Microsoft SharePoint via the Microsoft Graph API.
Features
Folder Management: List, create, delete folders and view folder tree structure
Document Operations: Upload, download, read, update, and delete documents
Metadata Support: Get and update file metadata fields
OAuth 2.0 Authentication: Secure user-based authentication via browser flow
Consistent Architecture: Same modular pattern as Outlook MCP for easy maintenance
Quick Start
1. Install Dependencies
cd sharepoint-mcp
npm install2. Azure AD Setup
Go to Azure Portal > App registrations > New registration
Name:
sharepoint-mcp(or your preferred name)Supported account types: "Accounts in this organizational directory only"
Redirect URI:
Web>http://localhost:3334/auth/callbackClick Register
After registration:
Copy the Application (client) ID
Copy the Directory (tenant) ID
Go to Certificates & secrets > New client secret
Copy the Value (not the Secret ID!)
Go to API permissions > Add a permission > Microsoft Graph > Delegated permissions
Add:
Sites.ReadWrite.All,Files.ReadWrite.All
Click Grant admin consent (requires admin)
3. Configure Environment
Create a .env file:
SHAREPOINT_CLIENT_ID=your-client-id
SHAREPOINT_CLIENT_SECRET=your-client-secret-value
SHAREPOINT_TENANT_ID=your-tenant-id
SHAREPOINT_SITE_URL=https://your-tenant.sharepoint.com/sites/your-site
SHAREPOINT_DOC_LIBRARY=Shared Documents4. Authenticate
# Start the auth server
npm run auth-server
# Open http://localhost:3334 in your browser and complete authentication5. Run the Server
npm startClaude Desktop Integration
Add to your Claude Desktop config:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"sharepoint-assistant": {
"command": "node",
"args": ["/path/to/sharepoint-mcp/index.js"],
"env": {
"SHAREPOINT_CLIENT_ID": "your-client-id",
"SHAREPOINT_CLIENT_SECRET": "your-client-secret",
"SHAREPOINT_TENANT_ID": "your-tenant-id",
"SHAREPOINT_SITE_URL": "https://your-tenant.sharepoint.com/sites/your-site",
"SHAREPOINT_DOC_LIBRARY": "Shared Documents"
}
}
}
}Available Tools
Authentication
Tool | Description |
| Start the OAuth authentication flow |
| Check current authentication status |
| Clear stored tokens |
Folder Operations
Tool | Description |
| List folders in a directory |
| Create a new folder |
| Delete an empty folder |
| Get recursive folder structure |
Document Operations
Tool | Description |
| List documents in a folder |
| Read document content |
| Upload content as a new document |
| Upload a local file |
| Update an existing document |
| Delete a document |
| Download to local filesystem |
| Get file metadata fields |
| Update metadata fields |
Development
# Run with MCP Inspector for testing
npm run inspect
# Run in test mode (mock data)
npm run test-mode
# Run tests
npm testArchitecture
sharepoint-mcp/
├── index.js # Main MCP server entry point
├── config.js # Configuration settings
├── sharepoint-auth-server.js # OAuth callback server
├── auth/ # Authentication module
│ ├── index.js
│ ├── token-manager.js # Token storage & refresh
│ └── tools.js # Auth tools
├── folder/ # Folder operations
│ ├── index.js
│ └── tools.js
├── document/ # Document operations
│ ├── index.js
│ └── tools.js
└── utils/ # Shared utilities
├── index.js
└── graph-api.js # Graph API clientTroubleshooting
"Authentication required" error
Ensure you've run the auth server and completed browser authentication
Check that tokens are stored in
~/.sharepoint-mcp-tokens.json
"AADSTS7000215" error
You're using the Secret ID instead of the Secret Value
Go back to Azure and copy the actual secret value
"Access denied" error
Ensure admin consent was granted for the API permissions
Verify the site URL is correct
Port 3334 in use
npx kill-port 3334License
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.