- SharePoint MCP Server Node.js-Based REST API. The Most Powerful SharePoint MCP to Date
SharePoint MCP Server Node.js-Based REST API. The Most Powerful SharePoint MCP to Date
SharePoint Online MCP Server
This is a MCP server for Claude Desktop that allows you to interact with SharePoint Online using the SharePoint REST API. It is designed to be used with the Claude Desktop app, but could be used by other MCP clients as well.
Implementation
| Component | Operation | Available |
|---|---|---|
| Users | ✅ | |
| List Site Users by Role | ✅ | |
| List Site Groups | ✅ | |
| Get Group Members | ✅ | |
| Add Group Member | ✅ | |
| Remove Group Member | ✅ | |
| Sites | ✅ | |
| Get Site Details | ✅ | |
| Update Site Properties | ✅ | |
| Get Global Navigation Links | ✅ | |
| Get Quick Navigation Links | ✅ | |
| Add Navigation Link | ✅ | |
| Update Navigation Link | ✅ | |
| Delete Navigation Link | ✅ | |
| Get Subsites | ✅ | |
| Create Subsite | ❌ | |
| Delete Subsite | ✅ | |
| Lists | ✅ | |
| Get All Lists | ✅ | |
| Create List | ✅ | |
| Get List Fields | ✅ | |
| Create List Field | ✅ | |
| Update List Field | ✅ | |
| Delete List Field | ✅ | |
| Set List Field formatting | ❌ | |
| Set List View formatting | ❌ | |
| Get List Views | ✅ | |
| Create List View | ✅ | |
| Update List View | ✅ | |
| Delete List View | ✅ | |
| Delete List | ✅ | |
| List Views | ✅ | |
| Get View Fields | ✅ | |
| Add View Field | ✅ | |
| Remove View Field | ✅ | |
| Remove All View Fields | ✅ | |
| Move View Field | ✅ | |
| List Items | ✅ | |
| Get All List Items | ✅ | |
| Create List Item | ✅ | |
| Update List Item | ✅ | |
| Delete List Item | ✅ | |
| Pages | ❌ | |
| Create Modern Page | ❌ | |
| Documents | ❌ | |
| Create Document | ❌ | |
| Upload Document | ❌ | |
| Copy Document | ❌ | |
| Taxonomy | ❌ | |
| Get Taxonomy Group | ❌ | |
| Create Taxonomy Label | ❌ | |
| Update Taxonomy Label | ❌ | |
| Delete Taxonomy Label | ❌ |
Configuration steps
⚠️ You need to be a SharePoint tenant admin or a global admin to create a SharePoint app.
Allow SharePoint-only apps
- Download and install the SharePoint Online Management Shell from here.
- Open PowerShell and run the following command to make sure the SharePoint-only apps are enabled:
Connect-SPOService -Url https://<your-tenant>-admin.sharepoint.com/
Set-SPOTenant -DisableCustomAppAuthentication $false
Create SharePoint-only App
-
Open https://
-
click
Generateto create a new client ID and secret. -
Fill in the following fields:
- App Domain:
www.example.com(or any domain you own) - Redirect URL:
http://example.com
- App Domain:
-
Click
Createto create the app. -
Copy the
Client IDandClient Secretvalues to a safe place. You will need them later.
Grant App Permissions
-
Open https://
-
Paste the
Client IDvalue in theApp Idfield and clickLookup. -
Paste the following XML in the
App Permission Request XMLfield:
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>
- Click
Createand thenTrust Itto grant the app permissions.
Install Node.js
Install node.js version: 22.14.0 or later
Install and Configure Claude Desktop
-
Download Claude Desktop and install it.
-
In Claude Desktop, go to
File>Settings>Developer. -
Click Edit Config
-
Open the claude_desktop_config.json config file in the editor.
-
Paste the following to the config and update the
mcpServerssection with your own values:
{
"mcpServers": {
"server-sharepoint": {
"command": "npx",
"args": [
"-y",
"server-sharepoint"
],
"env": {
"SHAREPOINT_CLIENT_ID": "<your-client-id>",
"SHAREPOINT_CLIENT_SECRET": "<your-client-secret>",
"SHAREPOINT_TENANT_ID": "<your-tenant-id>"
}
}
}
}
- Save the config file and restart Claude Desktop. Make sure to quick the app completely via the tasks tray icon:
How to "talk" to the MCP Server
- Open Claude Desktop and ask a question like
Get me the list of lists from https://<your-tenant>.sharepoint.com/sites/Dashboard-Communication. Present the results in a table form. don't use code.
For contributors
- Build a new npm package
npm run build
npm publish
npx clear-npx-cache
npm cache clean --force
Run MCP Inspector locally
npx @modelcontextprotocol/inspector node build/index.js
Server Config
{
"mcpServers": {
"server-sharepoint": {
"command": "npx",
"args": [
"-y",
"server-sharepoint"
],
"env": {
"SHAREPOINT_CLIENT_ID": "<your-client-id>",
"SHAREPOINT_CLIENT_SECRET": "<your-client-secret>",
"SHAREPOINT_TENANT_ID": "<your-tenant-id>"
}
}
}
}