@growtrics-ai/sharepoint-mcp-server

v0.1.3

Published

Marketing-scoped SharePoint MCP server for app-only Microsoft Graph file operations.

Downloads

42

Readme

Growtrics SharePoint MCP Server

App-only SharePoint MCP server for Marketing-scoped file operations.

Status

This package is live-verified against:

  • site: https://growtrics.sharepoint.com/sites/Marketing
  • auth model: Microsoft Graph app-only client_credentials
  • final SharePoint site role: write

V1 Tool Surface

  • list_document_libraries
  • list_folder_items
  • check_item_exists
  • create_folder
  • rename_item
  • move_item
  • copy_item
  • upload_file
  • get_item_metadata
  • search_items

Excluded from v1:

  • delete_item

Live-Verified Operations

Under the final Marketing-site write permission, this MCP has been live-verified to:

  • list document libraries
  • list folder contents
  • check whether a file or folder exists at a given path
  • create folders
  • upload files
  • rename files or folders
  • copy files or folders
  • move files or folders
  • read item metadata
  • search within a scoped folder path

Known Marketing-site library:

  • document library name: Documents
  • library web URL: https://growtrics.sharepoint.com/sites/Marketing/Shared%20Documents

Known limitation:

  • Microsoft Graph root-library keyword search on the full Marketing library can return 500 generalException
  • scoped search with folder_path is the reliable workflow

Auth Model

This server uses Microsoft Graph app-only auth via client_credentials.

Required environment variables:

MS365_MCP_TENANT_ID=...
MS365_MCP_CLIENT_ID=...
MS365_MCP_CLIENT_SECRET=...
SHAREPOINT_SITE_URL=https://growtrics.sharepoint.com/sites/Marketing

Optional but recommended:

SHAREPOINT_SITE_ID=growtrics.sharepoint.com,17f0bd21-0ca8-4f4c-b885-d0dc443d7082,793395d0-9e1c-495a-a0ac-2370747533c1

Why SHAREPOINT_SITE_ID matters:

  • in app-only Sites.Selected mode, resolving a site dynamically via /sites/{hostname}:/sites/{path} can still fail with 403 accessDenied
  • using a pre-resolved site ID removes one site-enumeration dependency from MCP startup

Install From npm

npm install -g @growtrics-ai/sharepoint-mcp-server

Run Directly

MS365_MCP_TENANT_ID=... \
MS365_MCP_CLIENT_ID=... \
MS365_MCP_CLIENT_SECRET=... \
SHAREPOINT_SITE_URL='https://growtrics.sharepoint.com/sites/Marketing' \
SHAREPOINT_SITE_ID='growtrics.sharepoint.com,17f0bd21-0ca8-4f4c-b885-d0dc443d7082,793395d0-9e1c-495a-a0ac-2370747533c1' \
growtrics-sharepoint-mcp

Add To Codex

codex mcp add marketing-sharepoint \
  --env MS365_MCP_TENANT_ID=... \
  --env MS365_MCP_CLIENT_ID=... \
  --env MS365_MCP_CLIENT_SECRET=... \
  --env SHAREPOINT_SITE_URL=https://growtrics.sharepoint.com/sites/Marketing \
  --env SHAREPOINT_SITE_ID='growtrics.sharepoint.com,17f0bd21-0ca8-4f4c-b885-d0dc443d7082,793395d0-9e1c-495a-a0ac-2370747533c1' \
  -- \"$(npm config get prefix)/bin/growtrics-sharepoint-mcp\"

Then confirm it is registered:

codex mcp list

Add To Claude Code

claude mcp add marketing-sharepoint "$(npm config get prefix)/bin/growtrics-sharepoint-mcp" \
  -s user \
  -e MS365_MCP_TENANT_ID=... \
  -e MS365_MCP_CLIENT_ID=... \
  -e MS365_MCP_CLIENT_SECRET=... \
  -e SHAREPOINT_SITE_URL=https://growtrics.sharepoint.com/sites/Marketing \
  -e SHAREPOINT_SITE_ID='growtrics.sharepoint.com,17f0bd21-0ca8-4f4c-b885-d0dc443d7082,793395d0-9e1c-495a-a0ac-2370747533c1'

Then confirm it is connected:

claude mcp list

Quick Claude print-mode smoke test:

claude -p --permission-mode bypassPermissions \
  "Use the marketing-sharepoint MCP server to list the document libraries available on the configured Marketing SharePoint site. Return only the site name and library names."

Package Check

npm run check