Skip to main content
Glama

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

  1. Go to Azure Portal > App registrations > New registration

  2. Name: sharepoint-mcp (or your preferred name)

  3. Supported account types: "Accounts in this organizational directory only"

  4. Redirect URI: Web > http://localhost:3334/auth/callback

  5. Click Register

After registration:

  1. Copy the Application (client) ID

  2. Copy the Directory (tenant) ID

  3. Go to Certificates & secrets > New client secret

    • Copy the Value (not the Secret ID!)

  4. Go to API permissions > Add a permission > Microsoft Graph > Delegated permissions

    • Add: Sites.ReadWrite.All, Files.ReadWrite.All

  5. 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

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/peacockery-studio/sharepoint-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server