The SharePoint Online MCP Server allows you to interact with SharePoint Online via the SharePoint REST API, providing comprehensive management capabilities:
- Site Management: Retrieve site details and titles, update properties, get/delete subsites, and manage navigation links
- List Management: Create, view, and delete lists and list fields, manage list views
- List View Field Management: Add, remove, move fields in list views, and manage view settings
- List Item Management: Get, create, update, and delete list items
- User Management: Manage users within SharePoint groups, including adding and removing members
- Mock Data: Add mock data items (1-100) to specified SharePoint lists
- Authentication: Support for both client secret (deprecated) and certificate-based authentication
Required runtime environment for the MCP server to operate, with version 22.14.0 or later specified as necessary for installation.
Used for defining app permission requests when setting up SharePoint app access, enabling specification of security scopes and access rights.
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 | ✅ | |
Update List | ❌ | |
Get List Fields | ✅ | |
Create List Field | ✅ | |
Update List Field | ✅ | |
Delete List Field | ✅ | |
Set List Field formatting | ❌ | |
Set List View formatting | ❌ | |
Delete List | ✅ | |
List Views | ✅ | |
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 | ✅ | |
List Items | ✅ | |
Get All List Items | ✅ | |
Create List Item | ✅ | |
Update List Item | ✅ | |
Delete List Item | ✅ | |
List Content Types | ❌ | |
Get All List Content Types | ❌ | |
Create List Content Type | ❌ | |
Update List Content Type | ❌ | |
Delete List Content Type | ❌ | |
Pages | ❌ | |
Create Modern Page | ❌ | |
Documents | ❌ | |
Create Document | ❌ | |
Upload Document | ❌ | |
Copy Document | ❌ | |
Taxonomy | ❌ | |
Get Taxonomy Group | ❌ | |
Create Taxonomy Label | ❌ | |
Update Taxonomy Label | ❌ | |
Delete Taxonomy Label | ❌ |
Authentication Options
The server supports two authentication methods:
- Client Secret Authentication - Traditional client ID and secret. It's the App-only authentication that is deprecated and will not work after April 2026.
- Certificate Authentication - More modern method using Azure AD App Registration with certificate
Option 1: Client Secret Authentication (Will not work after April 2026)
This option requires the SharePoint administrator role.
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:
Create SharePoint-only App with Client Secret
- Open
https://<your-tenant>.sharepoint.com/_layouts/15/appregnew.aspx
- Click
Generate
to 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
Create
to create the app. - Copy the
Client ID
andClient Secret
values to a safe place. You will need them later.
Grant App Permissions
- Open
https://<your-tenant>.sharepoint.com/_layouts/15/appinv.aspx
- Paste the
Client ID
value in theApp ID
field and clickLookup
. - Paste the following XML in the
App Permission Request XML
field:
- Click
Create
and thenTrust It
to grant the app permissions.
Option 2: Certificate Authentication
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.
Clone the repo
Create Azure AD App with Certificate
Navigate to the cloned repo and use the provided PowerShell script to create the Azure AD app with certificate:
This script will
- Create a self-signed certificate in your certificate store
- Register an Azure AD application
- Add the certificate to the application
- Configure the required SharePoint permissions
- Generate configuration files with the necessary settings
- Output the
claude_desktop_config.json
that is compatible with Claude Desktop
Grant Admin Consent
After 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
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. You can also use the claude_desktop_config.json file generated by the PowerShell script earlier.
- Paste the following to the config and update the
mcpServers
section with your own values:
For Certificate Authentication
For Client Secret Authentication (not recommended)
- Save the config file and restart Claude Desktop. Make sure to quit 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
.
Available Tools
Site Management
getSite
- Get detailed information about a SharePoint siteupdateSite
- Update site properties including Title, Description, and Logo URLgetSubsites
- Get all subsites from a sitedeleteSubsite
- Delete a subsite (requires confirmation)getGlobalNavigationLinks
- Get global (top) navigation linksgetQuickNavigationLinks
- Get quick (left) navigation linksaddNavigationLink
- Add a navigation link to global or quick navigationupdateNavigationLink
- Update an existing navigation linkdeleteNavigationLink
- Delete a navigation linkgetSiteUsers
- Get users from a site with optional filtering by role (Owners, Members, Visitors)getSiteGroups
- Get all SharePoint groups for a site
List Management
getLists
- Get all available lists on a SharePoint sitecreateList
- Create a new list or document library with custom settings and optional custom URLdeleteList
- Delete a list or document library (requires confirmation)getListFields
- Get detailed information about fields/columns in a listcreateListField
- Create a new field/column with a two-step process: first with a clean name for proper internal name generation, then updating to the desired display name with spacesupdateListField
- Update a field including display name, choices, and other propertiesdeleteListField
- Delete a field/column from a list (requires confirmation)getListViews
- Get all views for a list with optional field detailscreateListView
- Create a custom view with selected fields and filtersupdateListView
- Update an existing view's settings and fieldsdeleteListView
- Delete a view from a list (cannot delete default views)
List View Field Management
getViewFields
- Get all fields in a specific list viewaddViewField
- Add a field to a list viewremoveViewField
- Remove a field from a list viewremoveAllViewFields
- Remove all fields from a list viewmoveViewFieldTo
- Move a field to a specific position in a list view
List Item Management
getListItems
- Get all items from a specific listcreateListItem
- Create a new item with custom field valuesupdateListItem
- Update an existing item's field valuesdeleteListItem
- Remove an item from a list
User Management
getGroupMembers
- Get all members of a specific SharePoint groupaddGroupMember
- Add a user to a SharePoint groupremoveGroupMember
- Remove a user from a SharePoint group
For Contributors
- Build a new npm package
Run MCP Inspector locally
MCP Server Context 7 Documentation for LLMs
[https://context7.com/modelcontextprotocol/servers](MCP Server Context 7 Documentation for LLMs)
Local Development
- Clone the repo
nvm use 22.14.0
npm install
- Update MCP config in
claude_desktop_config.json
file. Sample:
For client secret authentication (Will not work after April 2026)
For certificate authentication (Recommended)
- Make changes to the code
- Build the code
npm run build
- Test with MCP Inspector:
npx @modelcontextprotocol/inspector node build/src/index.js -y
You must be authenticated.
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Allows Claude to interact with SharePoint Online using the REST API, enabling users to query site information, lists, and list items through natural language commands.
Related MCP Servers
- AsecurityAlicenseAqualityEnables Claude to interact with Ethereum nodes, allowing users to check ENS token balances, view smart contract code, and decode transactions through natural language.Last updated -51JavaScriptMIT License
- AsecurityAlicenseAqualityEnables Claude to interact with Webflow's APIs for managing sites, retrieving information, and executing tasks using natural language.Last updated -24TypeScriptMIT License
- AsecurityFlicenseAqualityA server that enables Claude Desktop users to access the Claude API directly, allowing them to bypass Professional Plan limitations and use advanced features like custom system prompts and conversation management.Last updated -15Python
- -securityAlicense-qualityEnables Claude to interact with Webflow's APIs, allowing access to site information, collections, and other Webflow resources.Last updated -TypeScriptMIT License