@piyapat/sharepoint-mcp-server
v1.0.1
Published
MCP server for Microsoft SharePoint Online via Microsoft Graph API
Downloads
220
Maintainers
Readme
SharePoint MCP Server
An MCP (Model Context Protocol) server for Microsoft SharePoint Online. Provides tools to list, read, and write files via the Microsoft Graph API.
Tools
| Tool | Description |
|------|-------------|
| sharepoint_list_files | List files and folders in a SharePoint document library |
| sharepoint_read_file | Read file contents (text or binary as base64) |
| sharepoint_write_file | Upload/write a file to SharePoint |
Prerequisites
1. Register an Azure AD App
- Go to Azure Portal → Azure Active Directory → App registrations → New registration
- Name your app (e.g.,
sharepoint-mcp-server), click Register - Note the Application (client) ID and Directory (tenant) ID
2. Add API Permissions
- Go to API permissions → Add a permission → Microsoft Graph → Application permissions
- Add these permissions:
Sites.Read.All— for list and read operationsSites.ReadWrite.All— for write operations
- Click Grant admin consent for [your tenant]
3. Create a Client Secret
- Go to Certificates & secrets → New client secret
- Set an expiry and click Add
- Copy the Value immediately (it won't be shown again)
4. Find Your Site ID
Use Graph Explorer to find your site ID:
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/mysiteCopy the id field from the response (format: contoso.sharepoint.com,<site-collection-id>,<web-id>).
Usage with npx
Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"sharepoint": {
"command": "npx",
"args": ["-y", "@piyapat/sharepoint-mcp-server"],
"env": {
"SHAREPOINT_TENANT_ID": "your-tenant-id",
"SHAREPOINT_CLIENT_ID": "your-client-id",
"SHAREPOINT_CLIENT_SECRET": "your-client-secret"
}
}
}
}Claude Code / MCP CLI
SHAREPOINT_TENANT_ID=... \
SHAREPOINT_CLIENT_ID=... \
SHAREPOINT_CLIENT_SECRET=... \
npx @piyapat/sharepoint-mcp-serverUsing a .env file
Copy .env.example to .env and fill in your credentials, then run:
npx @piyapat/sharepoint-mcp-serverTool Reference
sharepoint_list_files
List files in a SharePoint folder.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| site_id | string | ✅ | — | SharePoint site ID (e.g., contoso.sharepoint.com,abc...,def...) |
| drive_id | string | ❌ | default drive | Document library drive ID; omit to use the site's default library |
| folder_path | string | ❌ | / | Folder path relative to drive root (e.g., /Documents/Reports) |
| page_size | number | ❌ | 50 | Max items to return (1–200) |
| response_format | markdown|json | ❌ | markdown | Output format |
sharepoint_read_file
Read a file from SharePoint. Maximum file size: 20 MB.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| site_id | string | ✅ | — | SharePoint site ID |
| drive_id | string | ❌ | default drive | Document library drive ID; omit to use the site's default library |
| file_path | string | ✅ | — | Path to file relative to drive root (e.g., /Documents/report.txt) |
| encoding | utf8|base64 | ❌ | utf8 | Return encoding; binary files are auto-detected and returned as base64 |
| response_format | markdown|json | ❌ | markdown | Output format |
sharepoint_write_file
Upload a file to SharePoint. Files ≤ 4 MB use simple PUT upload; files > 4 MB automatically use resumable upload sessions with 3.2 MB chunks.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| site_id | string | ✅ | — | SharePoint site ID |
| drive_id | string | ❌ | default drive | Document library drive ID; omit to use the site's default library |
| file_path | string | ✅ | — | Destination path relative to drive root (e.g., /Documents/report.txt) |
| content | string | ✅ | — | File content (plain text or base64 for binary files) |
| encoding | utf8|base64 | ❌ | utf8 | Encoding of the content parameter |
| conflict_behavior | replace|rename|fail | ❌ | replace | What to do if the file already exists |
| response_format | markdown|json | ❌ | markdown | Output format |
Development
# Install dependencies
npm install
# Build
npm run build
# Run locally
npm startRequired Graph API Permissions
| Permission | Type | Used by |
|------------|------|---------|
| Sites.Read.All | Application | sharepoint_list_files, sharepoint_read_file |
| Sites.ReadWrite.All | Application | sharepoint_write_file |
All permissions require admin consent in your Azure AD tenant.
License
MIT