
SharePoint Online
STDIOSharePoint Online integration server for seamless REST API interaction and management
SharePoint Online integration server for seamless REST API interaction and management
Most powerful SharePoint MCP server enabling seamless interaction with SharePoint Online through the SharePoint REST API.
This MCP server is designed to be used with the Claude Desktop app, but could be used by other MCP clients such as Cline as well.
Operation | Available | Notes |
---|---|---|
List Site Users | ✅ | |
List Site Groups | ✅ | |
Get Group Members | ✅ | |
Add Group Member | ✅ | |
Remove Group Member | ✅ | |
Get User Profile | ❌ | /_api/SP.UserProfiles.PeopleManager |
Update User Profile | ❌ |
Operation | Available |
---|---|
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 | ✅ |
Operation | Available |
---|---|
Get Regional Settings | ✅ |
Update Regional Settings | ❌ |
Operation | Available |
---|---|
Get Site Collection Features | ✅ |
Get All Site Features | ✅ |
Get Site Feature | ✅ |
Get All Site Feature | ✅ |
Activate Feature | ❌ |
Deactivate Feature | ❌ |
Operation | Available | Notes |
---|---|---|
Get All Lists | ✅ | |
Create List | ✅ | |
Add Site Content Type to list | ✅ | |
Remove Content Type from list | ✅ | |
Add Field to List Content Type | ❌ | |
Remove Field from List Content Type | ❌ | |
Update List | ✅ | |
Get List Fields | ✅ | |
Create List Field | ✅ | Basic scenarios only |
Update List Field | ✅ | |
Delete List Field | ✅ | |
Set List Field formatting | ❌ | |
Set List View formatting | ❌ | |
Delete List | ✅ |
Operation | Available |
---|---|
Get List Views | ✅ |
Delete List View | ✅ |
Create List View | ✅ |
Update List View | ✅ |
Get View Fields | ✅ |
Add View Field | ✅ |
Remove View Field | ✅ |
Remove All View Fields | ✅ |
Move View Field | ✅ |
Operation | Available | Notes |
---|---|---|
Get All List Content Types | ✅ | |
Get List Content Type | ✅ | |
Create List Content Type | ❌ | |
Update List Content Type | ✅ | Change CT title and group only |
Delete List Content Type | ✅ |
Operation | Available |
---|---|
Get All List Items | ✅ |
Create List Item | ✅ |
Update List Item | ✅ |
Delete List Item | ✅ |
Operation | Available | Notes |
---|---|---|
Get All Site Content Types | ✅ | |
Get Site Content Type | ✅ | |
Create Site Content Type | ❌ | |
Update Site Content Type | ✅ | Change CT title and group only |
Delete Site Content Type | ✅ |
Operation | Available |
---|---|
Create Modern Page | ✅ |
Delete Modern Page | ✅ |
List Modern Pages | ✅ |
Add Page Web Part | ❌ |
Delete Page Web Part | ❌ |
Move Page Web Part | ❌ |
Update Page Web Part | ❌ |
Operation | Available |
---|---|
Create Document | ❌ |
Upload Document | ❌ |
Move Document | ❌ |
Copy Document | ❌ |
Operation | Available |
---|---|
Get Taxonomy Group | ❌ |
Create Taxonomy Label | ❌ |
Update Taxonomy Label | ❌ |
Delete Taxonomy Label | ❌ |
Operation | Available |
---|---|
Search within SharePoint Site | ✅ |
The server supports two authentication methods:
This option requires the SharePoint administrator role.
⚠️ You need to be a SharePoint tenant admin or a global admin to create a SharePoint app.
Connect-SPOService -Url https://<your-tenant>-admin.sharepoint.com/ Set-SPOTenant -DisableCustomAppAuthentication $false
https://<your-tenant>.sharepoint.com/_layouts/15/appregnew.aspx
Generate
to create a new client ID and secret.www.example.com
(or any domain you own)http://example.com
Create
to create the app.Client ID
and Client Secret
values to a safe place. You will need them later.https://<your-tenant>.sharepoint.com/_layouts/15/appinv.aspx
Client ID
value in the App ID
field and click Lookup
.
App Permission Request XML
field:<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" /> </AppPermissionRequests>
Create
and then Trust It
to grant the app permissions.
Certificate-based authentication provides better security than client secrets. It uses a certificate to prove the identity of the application instead of a shared secret.
⚠️ This option requires the Global administrator role to provide the necessary permissions to the app.
git clone https://github.com/Zerg00s/server-sharepoint.git
Navigate to the cloned repo and use the provided PowerShell script to create the Azure AD app with certificate:
.\Create-SPAppCertificate.ps1 -AppName "SharePoint-Server-MCP" -CertName "SharePoint-Server-MCP-Cert" -CertPassword "YourSecureP@ssw0rd!"
This script will
claude_desktop_config.json
that is compatible with Claude DesktopAfter running the script, you'll get an Admin Consent URL. Open it in a browser and sign in as a Global Admin to grant consent for the permissions.
Install Node.js version: 22.14.0 or later
File
> Settings
> Developer
.
mcpServers
section with your own values:{ "mcpServers": { "server-sharepoint": { "command": "npx", "args": [ "-y", "server-sharepoint" ], "env": { "AZURE_APPLICATION_ID": "<your-app-id>", "AZURE_APPLICATION_CERTIFICATE_THUMBPRINT": "<your-certificate-thumbprint>", "AZURE_APPLICATION_CERTIFICATE_PASSWORD": "<your-certificate-password>", "M365_TENANT_ID": "<your-tenant-id>" } } } }
{ "mcpServers": { "server-sharepoint": { "command": "npx", "args": [ "-y", "server-sharepoint" ], "env": { "SHAREPOINT_CLIENT_ID": "<your-client-id>", "SHAREPOINT_CLIENT_SECRET": "<your-client-secret>", "M365_TENANT_ID": "<your-tenant-id>" } } } }
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
.npm run build npm publish npx clear-npx-cache npm cache clean --force
npx @modelcontextprotocol/inspector node build/src/index.js
MCP Server Context 7 Documentation for LLMs
nvm use 22.14.0
npm install
claude_desktop_config.json
file. Sample:For client secret authentication (Will not work after April 2026)
{ "mcpServers": { "sharepoint": { "command": "node", "args": [ "C:\\trash\\server-sharepoint\\build\\index.js" ], "env": { "SHAREPOINT_CLIENT_ID": "aaa2ce0f-7c97-4e51-acd9-4ac99e6831d0", "SHAREPOINT_CLIENT_SECRET": "bbb0OFF+aWkua2NJRERUMGduMmhsWDhGUTVPUHJZLXd5dldSemNPUw==", "M365_TENANT_ID": "22bcd981-eaa6-475f-aac3-3afca0c35261" } } } }
For certificate authentication (Recommended)
{ "mcpServers": { "sharepoint": { "command": "node", "args": [ "C:\\trash\\server-sharepoint\\build\\index.js" ], "env": { "AZURE_APPLICATION_ID": "5bc793c7-3eb0-4b86-88bf-b464b2459c4c", "AZURE_APPLICATION_CERTIFICATE_THUMBPRINT": "3D38D1D8AC3228CAD35E527D1105101B0B90CE86", "AZURE_APPLICATION_CERTIFICATE_PASSWORD": "TemporaryP@ssw0rd", "M365_TENANT_ID": "11bcd981-eaa6-475f-aac3-3afca0c35261" } } } }
npm run build
npx @modelcontextprotocol/inspector node build/src/index.js -y