AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Sharepoint Mcp

mcp-ravikant1918-sharepoint-mcp · by ravikant1918

Production-grade MCP Server for Microsoft SharePoint — give your AI agent (Claude, Cursor, Continue) live access to read, write, and manage SharePoint files and folders.

No reviews yet
0 installs
22 views
0.0% view→install

Install

$ agentstack add mcp-ravikant1918-sharepoint-mcp

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-ravikant1918-sharepoint-mcp)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Sharepoint Mcp? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

🗂️ sharepoint-mcp

The MCP Server that gives your AI agent a brain for Microsoft SharePoint

[](https://github.com/ravikant1918/sharepoint-mcp/actions/workflows/ci.yml) [](https://pypi.org/project/sharepoint-mcp/) [](https://pypi.org/project/sharepoint-mcp/) [](https://opensource.org/licenses/MIT) [](https://github.com/ravikant1918/sharepoint-mcp#-docker) [](https://modelcontextprotocol.io)

A production-grade Model Context Protocol (MCP) server for Microsoft SharePoint. Connect Claude Desktop, VS Code Copilot, Cursor, Continue, or any MCP-compatible AI agent to your SharePoint — read files, manage folders, and reason over your organisation's knowledge.

[📚 Docs](docs/) · [🗺️ Roadmap](docs/roadmap.md) · 🐛 Bugs · 💡 Features


📑 Table of Contents

  • [Why sharepoint-mcp?](#-why-sharepoint-mcp)
  • [What Your Agent Can Do](#-what-your-agent-can-do)
  • [Features](#-features)
  • [Quickstart](#-quickstart)
  • [Docker](#-docker)
  • [Transport Modes](#-transport-modes)
  • [Integrations](#-integrations) — Claude Desktop · VS Code Copilot · Cursor
  • [All 14 Tools](#️-all-14-tools)
  • [Configuration Reference](#️-full-configuration-reference)
  • [Limitations](#️-limitations)
  • [Troubleshooting](#-troubleshooting)
  • [Development](#-development)
  • [Documentation](#-documentation)
  • [Contributing](#-contributing)
  • [Security](#-security)

🧠 Why sharepoint-mcp?

> Most AI agents only know what's in their training data. > sharepoint-mcp gives your agent live access to your organisation's real knowledge.

| Without sharepoint-mcp | With sharepoint-mcp | | ---------------------------------- | --------------------------------------- | | 🤷 Agent guesses or hallucinates | Agent reads the actual document | | 📋 You copy-paste content manually | Agent fetches files automatically | | 🔒 Knowledge locked in SharePoint | Knowledge flows into your AI workflow | | 🐌 Static, one-shot answers | Agent reasons, rewrites, and saves back |


🚀 What Your Agent Can Do

📖 Understand Any Document

You: "Summarise the Q3 report in the Finance folder"
Agent: → Get_Document_Content("Finance", "Q3_Report.pdf")
       → Reads full extracted text
       → Returns a sharp, accurate summary

✏️ Read → Reason → Write

You: "Translate the proposal to French and save it"
Agent: → Get_Document_Content → translate → Upload_Document

🗂️ Navigate Your Library

You: "What files are in the Legal/Contracts folder?"
Agent: → List_SharePoint_Documents("Legal/Contracts")

📊 Supported File Formats

| 📄 Format | 🤖 What the Agent Gets | | -------------------------------------------- | ----------------------------- | | PDF | Full text from every page | | Word .docx .doc | Complete document content | | Excel .xlsx .xls | All sheets as structured text | | Text, JSON, Markdown, HTML, YAML, Python | Raw content as-is | | Images, ZIP, binaries | File type + Base64 |


✨ Features

| | Feature | Description | | --- | -------------------------- | ------------------------------------------------------ | | 🔀 | Dual API Support | Choose Office365 REST or Microsoft Graph API | | 📁 | Folder Management | List, create, delete, get full recursive tree | | 📄 | Document Management | Upload, download, update, delete, search, read content | | 🏷️ | Metadata Management | Read and update SharePoint list-item fields | | 🔍 | Smart Parsing | Auto-detects PDF / Word / Excel / text | | 🔎 | KQL Search | Native SharePoint KQL search for semantic file finding | | 📂 | Flexible Library Scope | Scope to a subfolder or access the entire library root | | 🔁 | Auto-Retry | Exponential backoff on SharePoint 429/503 throttling | | 🚀 | Dual Transport | stdio for desktop · http for Docker/remote | | 🪵 | Structured Logging | JSON in production · coloured console in dev | | 🐳 | Docker-Ready | Single command: docker compose up -d | | 🛡️ | Non-Root Container | Runs as unprivileged user inside Docker | | 🩺 | Health Check | Live /health endpoint with real SharePoint check | | 🤖 | CI/CD | Tested on Python 3.10 · 3.11 · 3.12 · 3.13 |


⚡ Quickstart

1️⃣ Install

pip install sharepoint-mcp

Or from source:

git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp && pip install -e .

2️⃣ Configure

cp .env.example .env
# Open .env and fill in your Azure AD credentials
SHP_ID_APP=your-azure-app-client-id
SHP_ID_APP_SECRET=your-azure-app-secret
SHP_TENANT_ID=your-tenant-id
SHP_SITE_URL=https://your-tenant.sharepoint.com/sites/your-site
SHP_API_TYPE=office365   # or "graph" / "graphql" for Microsoft Graph API

> 🔑 New to Azure AD? Follow the [step-by-step guide →](docs/azure-setup.md) > 🔀 Choose Your API: SharePoint MCP supports both Office365 REST API (default) and Microsoft Graph API. See [API Configuration Guide →](docs/api-configuration.md)

Optional: Scope to a subfolder

By default, the server accesses your entire document library root. To restrict operations to a specific subfolder:

# Only operate within this subfolder (omit for full library access)
SHP_DOC_LIBRARY=mcp_server

# Library name (only needed if your org renamed "Shared Documents")
# Graph API auto-detects the default drive — this is only for Office365 REST API
# SHP_LIBRARY_NAME=Shared Documents

3️⃣ Run

# 🔍 Interactive testing with MCP Inspector
npx @modelcontextprotocol/inspector -- sharepoint-mcp

# ▶️ Run directly
sharepoint-mcp

🐳 Docker

The fastest way to deploy for remote or cloud use.

📋 Usage Scenarios

Scenario A: Pull Latest Version from DockerHub (Recommended)

Use this for production deployments with the latest stable release:

# Step 1: Clone repository
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp

# Step 2: Create .env file with your SharePoint credentials
cp .env.example .env
# Edit .env and fill in:
# SHP_ID_APP=your-app-id
# SHP_ID_APP_SECRET=your-secret
# SHP_TENANT_ID=your-tenant-id
# SHP_SITE_URL=https://yourcompany.sharepoint.com/sites/yoursite

# Step 3: Start container (pulls from DockerHub automatically)
docker compose up -d

# Step 4: Verify it's running
docker compose ps
curl http://localhost:8000/health

# View logs
docker compose logs -f

# Stop container
docker compose down

What happens: Pulls ravikant1918/sharepoint-mcp:latest from DockerHub with automatic architecture detection (Intel/ARM).


Scenario B: Use Specific Version

Lock to a specific version for stability or testing:

# Step 1: Set version via environment variable
SHAREPOINT_MCP_VERSION=v1.0.1 docker compose up -d

# Or add to .env file
echo "SHAREPOINT_MCP_VERSION=v1.0.1" >> .env
docker compose up -d

What happens: Pulls ravikant1918/sharepoint-mcp:v1.0.1 instead of latest.


Scenario C: Build Locally from Source

Use this for development or when you've made local code changes:

# Step 1: Clone and setup
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp
cp .env.example .env
# Edit .env with your credentials

# Step 2: Build from local Dockerfile and start
docker compose up -d --build

# Step 3: Rebuild after code changes
docker compose down
docker compose up -d --build

What happens: Builds image from local Dockerfile, tags as ravikant1918/sharepoint-mcp:latest, and starts container.


Scenario D: Use Custom Image/Fork

If you've forked the repo and published to your own DockerHub:

# Use your custom image
SHAREPOINT_MCP_IMAGE=myusername/sharepoint-mcp \
SHAREPOINT_MCP_VERSION=dev \
docker compose up -d

# Or add to .env
echo "SHAREPOINT_MCP_IMAGE=myusername/sharepoint-mcp" >> .env
echo "SHAREPOINT_MCP_VERSION=dev" >> .env
docker compose up -d

What happens: Pulls from your custom registry/repository.


🔧 Common Commands

# Start in detached mode
docker compose up -d

# Start with live logs
docker compose up

# View logs
docker compose logs -f

# Stop container
docker compose down

# Restart container
docker compose restart

# Pull latest image
docker compose pull

# Rebuild and restart
docker compose up -d --build

# Remove everything (including volumes)
docker compose down -v

> Using Podman? Just replace docker with podman — fully compatible.

Docker Environment Variables

| Variable | Default | Description | | ------------ | --------- | ------------------- | | TRANSPORT | http | stdio or http | | HTTP_HOST | 0.0.0.0 | Bind address | | HTTP_PORT | 8000 | Port | | LOG_FORMAT | json | json or console |


🔌 Transport Modes

| Mode | Best For | Set With | | ------- | ---------------------------------------------------- | ----------------------------- | | stdio | Claude Desktop, Cursor, MCP Inspector | TRANSPORT=stdio (default) | | http | Docker, remote agents, VS Code Copilot, REST clients | TRANSPORT=http |


🔗 Integrations

🤖 Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sharepoint": {
      "command": "sharepoint-mcp",
      "env": {
        "SHP_ID_APP": "your-app-id",
        "SHP_ID_APP_SECRET": "your-app-secret",
        "SHP_SITE_URL": "https://your-tenant.sharepoint.com/sites/your-site",
        "SHP_TENANT_ID": "your-tenant-id",
        "SHP_DOC_LIBRARY": "my-subfolder"
      }
    }
  }
}

> 💡 Omit SHP_DOC_LIBRARY to access the full library root. If your org uses Office365 REST API and renamed the default library, also set SHP_LIBRARY_NAME.

💻 VS Code Copilot (Agent Mode)

  1. Start the server via Docker or TRANSPORT=http sharepoint-mcp
  2. Create .vscode/mcp.json in your workspace:
{
  "servers": {
    "sharepoint": {
      "url": "http://localhost:8000/mcp/",
      "type": "http"
    }
  }
}
  1. Open Copilot Chat → switch to Agent mode → your 14 SharePoint tools are available.

> ⚠️ Trailing slash matters — the URL must end with /mcp/ (not /mcp).

⌨️ Cursor / Continue

Add to your MCP config (uses stdio transport):

{
  "mcpServers": {
    "sharepoint": {
      "command": "sharepoint-mcp",
      "env": {
        "SHP_ID_APP": "your-app-id",
        "SHP_ID_APP_SECRET": "your-app-secret",
        "SHP_SITE_URL": "https://your-tenant.sharepoint.com/sites/your-site",
        "SHP_TENANT_ID": "your-tenant-id"
      }
    }
  }
}

🛠️ All 14 Tools

📁 Folder Management

| Tool | What It Does | | ------------------------- | ---------------------------------------- | | List_SharePoint_Folders | 📋 List all sub-folders in a directory | | Get_SharePoint_Tree | 🌳 Get full recursive folder + file tree | | Create_Folder | ➕ Create a new folder | | Delete_Folder | 🗑️ Delete an empty folder |

📄 Document Management

| Tool | What It Does | | --------------------------- | -------------------------------------------------- | | List_SharePoint_Documents | 📋 List all files with metadata | | Search_SharePoint | 🔎 Search documents using KQL queries | | Get_Document_Content | 📖 Read & parse file content (PDF/Word/Excel/text) | | Upload_Document | ⬆️ Upload file as string or Base64 | | Upload_Document_From_Path | 📂 Upload a local file directly | | Update_Document | ✏️ Overwrite existing file content | | Delete_Document | 🗑️ Permanently delete a file | | Download_Document | ⬇️ Download file to local filesystem |

🏷️ Metadata Management

| Tool | What It Does | | ---------------------- | -------------------------------------- | | Get_File_Metadata | 🔍 Get all SharePoint list-item fields | | Update_File_Metadata | ✏️ Update metadata fields |


⚙️ Full Configuration Reference

| Variable | Required | Default | Description | | --------------------------- | -------- | ------------------------ | ----------------------------------------------------------- | | SHP_ID_APP | ✅ | | Azure AD app client ID | | SHP_ID_APP_SECRET | ✅ | | Azure AD client secret | | SHP_TENANT_ID | ✅ | | Microsoft tenant ID | | SHP_SITE_URL | ✅ | | SharePoint site URL | | SHP_API_TYPE | | office365 | office365, graph, or graphql | | SHP_LIBRARY_NAME | | Shared Documents | Library name (Office365 REST only; Graph auto-detects) | | SHP_DOC_LIBRARY | | (empty = full library) | Subfolder scope (e.g. mcp_server). Empty = entire library | | SHP_MAX_DEPTH | | 15 | Max tree depth | | SHP_MAX_FOLDERS_PER_LEVEL | | 100 | Folders per batch | | SHP_LEVEL_DELAY | | 0.5 | Delay (s) between tree levels | | TRANSPORT | | stdio | stdio or http | | HTTP_HOST | | 0.0.0.0 | HTTP bind host | | HTTP_PORT | | 8000 | HTTP port | | LOG_LEVEL | | INFO | DEBUG INFO WARNING ERROR | | LOG_FORMAT | | console | console or json |


⚠️ Limitations

| Limitation | Details | | --------------- | ----------------------------------------------------------------------------------------------------- | | Single site | Connects to one SharePoint site per server instance (multi-site planned for v2.0) | | Sync client | Uses synchronous SharePoint REST API calls (async client planned for v1.3) | | No sharing | Cannot create sharing links yet (p

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.