List_SharePoint_FoldersLABSCO SUMMARY
The text extraction is what makes this usable.
Any connector can list files. The reason to reach for this one is that a PDF or a spreadsheet comes back as text the model can actually reason over, so "summarise the Q3 report in the Finance folder" is one call and not a download-and-convert dance. Tree depth is bounded by SHP_MAX_DEPTH and SHP_MAX_FOLDERS_PER_LEVEL, which matters on a large library.
What it is
A Microsoft SharePoint server for MCP clients. It walks a document library, reads file contents as text, searches with Keyword Query Language, and writes files and metadata back.
What you get
Get_Document_Contentextracts text automatically from .pdf, .docx, .doc, .xlsx, .xls and plain formats; binaries come back Base64Search_SharePointruns a KQL query such asfilename:report OR content:budgetand returns Title, Path, FileExtension, ServerRelativeUrl, HitHighlightedSummary and AuthorList_SharePoint_FoldersandGet_SharePoint_Treebrowse the library, flat or as a recursive treeList_SharePoint_Documentslists files in a folder with name, url, size, created and modifiedUpload_Documenttakes content inline;Upload_Document_From_Pathsends a local file with no Base64 step;Update_Documentoverwrites;Download_Documentsaves one locallyCreate_Folder,Delete_FolderandDelete_Documenthandle structure — deleting a folder fails unless it is emptyGet_File_MetadataandUpdate_File_Metadataread and set SharePoint list-item fields
Requirements
The PyPI package sharepoint-mcp, version 1.0.0, over uvx and stdio, or the Docker image. It needs an Azure AD app registration: SHP_ID_APP, SHP_ID_APP_SECRET, SHP_TENANT_ID and SHP_SITE_URL are all required; SHP_DOC_LIBRARY is optional: leave it empty to cover the whole library, or name a subfolder such as mcp_server.
Setup effort
One command plus credentials — pip install sharepoint-mcp, then supply credentials
USE CASES
Answering a question from a document nobody wants to open
Fetch the file, get the extracted text, and summarise it without leaving the conversation.
Finding the right file across a big library
Run a KQL query on filename or content and get back paths with highlighted matches.
Read, rewrite, save back
Pull a proposal, produce the revised version, and upload it to the destination folder.
Tidying up metadata in bulk
Inspect which list-item fields a file carries, then set the ones that are wrong.
14 tools
Listed in project docs. Your client may show a different list.
Get_SharePoint_TreeCreate_FolderDelete_FolderList_SharePoint_DocumentsSearch_SharePointGet_Document_ContentUpload_DocumentUpload_Document_From_PathUpdate_DocumentDelete_DocumentDownload_DocumentGet_File_MetadataUpdate_File_MetadataBEFORE YOU INSTALL
What to know first
Tools you get
14 tools named in the project's documentation.
Requires
- sharepoint-mcp on PATH
- SHP_ID_APP_SECRET in your environment
- SHP_TENANT_ID in your environment
- SHP_ID_APP in your environment
- SHP_SITE_URL in your environment
INSTALLATION
Connect your client
Server setup
pip install sharepoint-mcpMCP Clients
Claude Desktop
{
"mcpServers": {
"sharepoint": {
"command": "sharepoint-mcp",
"env": {
"SHP_ID_APP": "<YOUR_SHP_ID_APP>",
"SHP_ID_APP_SECRET": "<YOUR_SHP_ID_APP_SECRET>",
"SHP_SITE_URL": "https://<YOUR_TENANT>.sharepoint.com/sites/<YOUR_SITE>",
"SHP_TENANT_ID": "<YOUR_SHP_TENANT_ID>",
"SHP_DOC_LIBRARY": "<YOUR_SHP_DOC_LIBRARY>"
}
}
}
}VS Code
Start the server over HTTP first: run it with Docker (docker compose up -d from the clone, with your .env filled in) or with TRANSPORT=http sharepoint-mcp
Create .vscode/mcp.json in your workspace:
{
"servers": {
"sharepoint": {
"url": "http://localhost:8000/mcp/",
"type": "http"
}
}
}The URL must end with /mcp/ (trailing slash required).
Cursor, Continue
{
"mcpServers": {
"sharepoint": {
"command": "sharepoint-mcp",
"env": {
"SHP_ID_APP": "<YOUR_SHP_ID_APP>",
"SHP_ID_APP_SECRET": "<YOUR_SHP_ID_APP_SECRET>",
"SHP_SITE_URL": "https://<YOUR_TENANT>.sharepoint.com/sites/<YOUR_SITE>",
"SHP_TENANT_ID": "<YOUR_SHP_TENANT_ID>"
}
}
}
}