Skip to main content

MCP Server to integrate with SharePoint

Project description

SharePoint MCP Server (Certificate Auth)

PyPI version CI codecov Python 3.12+ Ruff License: MIT

A comprehensive MCP Server for seamless integration with Microsoft SharePoint using certificate-based authentication. Enables MCP clients to interact with documents, folders and other SharePoint resources securely without client secrets.

Quick Start

1. Install

Using uvx (recommended):

uvx mcp-sharepoint-cert

Or install with uv:

uv pip install mcp-sharepoint-cert

2. Create Azure App & Certificate

# Generate certificate for authentication
uvx mcp-sharepoint-cert-setup
# Or if installed: mcp-sharepoint-cert-setup

This creates a certificate and shows you exactly what to do next.

3. Configure Azure (One-time setup)

  1. Go to Azure PortalApp registrationsNew registration
  2. Name it (e.g., mcp-sharepoint), click Register
  3. Save the Application (client) ID and Directory (tenant) ID
  4. Go to Certificates & secretsCertificatesUpload certificate
    • Upload the certs/sharepoint.crt file generated by the setup command
  5. Go to API permissionsAdd permissionSharePointApplication permissions
    • Add Sites.FullControl.All (or Sites.ReadWrite.All for read/write only)
    • Click Grant admin consent

4. Configure Environment

Create a .env file:

SHP_ID_APP=your-application-client-id
SHP_TENANT_ID=your-directory-tenant-id
SHP_SITE_URL=https://your-tenant.sharepoint.com/sites/your-site
SHP_DOC_LIBRARY=Shared Documents
SHP_CERT_PATH=certs/sharepoint.pem
SHP_CERT_THUMBPRINT=your-certificate-thumbprint

5. Run

mcp-sharepoint-cert

You should see:

Connected to SharePoint: YourSiteName
MCP server ready - waiting for connections...

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": {
      "command": "uvx",
      "args": ["mcp-sharepoint-cert"],
      "env": {
        "SHP_ID_APP": "your-app-id",
        "SHP_TENANT_ID": "your-tenant-id",
        "SHP_SITE_URL": "https://your-tenant.sharepoint.com/sites/your-site",
        "SHP_DOC_LIBRARY": "Shared Documents",
        "SHP_CERT_PATH": "/path/to/certs/sharepoint.pem",
        "SHP_CERT_THUMBPRINT": "your-thumbprint"
      }
    }
  }
}

Available Tools

The server provides 14 tools for complete SharePoint management:

Folder Management

  • List_SharePoint_Folders - List folders in a directory
  • Create_Folder - Create new folders
  • Delete_Folder - Delete empty folders
  • Get_SharePoint_Tree - Get recursive folder structure

Document Management

  • List_SharePoint_Documents - List documents with metadata
  • Get_Document_Content - Read document content (supports PDF, Word, Excel)
  • Upload_Document - Upload new documents (text or binary)
  • Upload_Document_From_Path - Upload from local filesystem
  • Update_Document - Update existing documents
  • Delete_Document - Remove documents
  • Download_Document - Download to local filesystem

Metadata Operations

  • Get_File_Metadata - Get file metadata fields
  • Update_File_Metadata - Update file metadata

Content Processing

Intelligent content extraction for common file types:

  • PDF - Full text extraction via PyMuPDF
  • Word (.docx) - Paragraphs and tables
  • Excel (.xlsx) - All sheets, first 50 rows each
  • Text files - JSON, XML, HTML, MD, code files
  • Binary - Base64 encoding for other types

Environment Variables

Required

Variable Description
SHP_ID_APP Azure AD application client ID
SHP_TENANT_ID Microsoft tenant ID
SHP_SITE_URL SharePoint site URL
SHP_DOC_LIBRARY Document library path (default: Shared Documents)
SHP_CERT_PATH Path to certificate PEM file
SHP_CERT_THUMBPRINT Certificate thumbprint (SHA1)

Optional

Variable Default Description
SHP_MAX_DEPTH 15 Max folder depth for tree operations
SHP_MAX_FOLDERS_PER_LEVEL 100 Max folders per level
SHP_LEVEL_DELAY 0.5 Delay between levels (seconds)
SHP_BATCH_DELAY 0.1 Delay between batches (seconds)

Development

Requirements

  • Python 3.12+
  • uv

Setup

git clone https://github.com/peacockery-studio/mcp-sharepoint-cert.git
cd mcp-sharepoint-cert
uv sync --group dev

Run Locally

uv run mcp-sharepoint-cert

Code Quality

uv run ruff check src/    # Lint
uv run ruff format src/   # Format
uv run ty check src/      # Type check
uv run pytest             # Tests

Debugging with MCP Inspector

npx @modelcontextprotocol/inspector -- uv run mcp-sharepoint-cert

Troubleshooting

"Authentication failed" (401)

  • Verify certificate is uploaded to Azure AD
  • Check thumbprint matches
  • Ensure certificate hasn't expired

"Access denied" (403)

  • Grant admin consent for API permissions
  • Verify Sites.FullControl.All or Sites.ReadWrite.All is granted

"Site not found" (404)

  • Check SHP_SITE_URL is correct
  • Verify site exists and is accessible

License

MIT License - see LICENSE for details.

Copyright (c) 2025 Chieji Mofor

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_sharepoint_cert-0.2.1.tar.gz (92.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_sharepoint_cert-0.2.1-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file mcp_sharepoint_cert-0.2.1.tar.gz.

File metadata

  • Download URL: mcp_sharepoint_cert-0.2.1.tar.gz
  • Upload date:
  • Size: 92.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcp_sharepoint_cert-0.2.1.tar.gz
Algorithm Hash digest
SHA256 777ffe794b6fdf156041e10b6b8e8c24969b1ef7f36384016c06fc6fa7ab382b
MD5 142f6965e8bbcba69602343537a12ca4
BLAKE2b-256 e4a3131e2e7e80949c8abb052d9c49f66ab667b0fe7f28fc3cb0db1dd64e43f5

See more details on using hashes here.

File details

Details for the file mcp_sharepoint_cert-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_sharepoint_cert-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d65133a0a97b6f93216b6b30a224ebf4e9eecf3a5ba5cb27adc4f6f7d751d2c1
MD5 3f17fdbae50c503aa7b2ddf882b02770
BLAKE2b-256 8a26a5fbab40eb5b64c8fad5266f0efc4642ffb4a5dcdb1b774839afe4b23498

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page