@growtrics-ai/sharepoint-mcp-server
v0.1.3
Published
Marketing-scoped SharePoint MCP server for app-only Microsoft Graph file operations.
Downloads
42
Maintainers
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_librarieslist_folder_itemscheck_item_existscreate_folderrename_itemmove_itemcopy_itemupload_fileget_item_metadatasearch_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_pathis 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/MarketingOptional but recommended:
SHAREPOINT_SITE_ID=growtrics.sharepoint.com,17f0bd21-0ca8-4f4c-b885-d0dc443d7082,793395d0-9e1c-495a-a0ac-2370747533c1Why SHAREPOINT_SITE_ID matters:
- in app-only
Sites.Selectedmode, resolving a site dynamically via/sites/{hostname}:/sites/{path}can still fail with403 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-serverRun 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-mcpAdd 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 listAdd 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 listQuick 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