SharePoint MCP Server
Provides Claude with access to Microsoft SharePoint via the Microsoft Graph API, enabling folder management, document operations (upload, download, read, update, delete), and metadata management with secure OAuth 2.0 authentication.
README
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 install
2. 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/callback - Click 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
- Add:
- 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 Documents
4. Authenticate
# Start the auth server
npm run auth-server
# Open http://localhost:3334 in your browser and complete authentication
5. Run the Server
npm start
Claude 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 |
|---|---|
authenticate |
Start the OAuth authentication flow |
check_auth_status |
Check current authentication status |
logout |
Clear stored tokens |
Folder Operations
| Tool | Description |
|---|---|
list_folders |
List folders in a directory |
create_folder |
Create a new folder |
delete_folder |
Delete an empty folder |
get_folder_tree |
Get recursive folder structure |
Document Operations
| Tool | Description |
|---|---|
list_documents |
List documents in a folder |
get_document_content |
Read document content |
upload_document |
Upload content as a new document |
upload_document_from_path |
Upload a local file |
update_document |
Update an existing document |
delete_document |
Delete a document |
download_document |
Download to local filesystem |
get_file_metadata |
Get file metadata fields |
update_file_metadata |
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 test
Architecture
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 client
Troubleshooting
"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 3334
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.