sharepoint-mcp
ποΈ sharepoint-mcp
The MCP Server that gives your AI agent a brain for Microsoft SharePoint
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 Β· πΊοΈ Roadmap Β· π Bugs Β· π‘ Features
π Table of Contents
Integrations β Claude Desktop Β· VS Code Copilot Β· Cursor
Related MCP server: Microsoft Graph MCP Server
π§ 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 |
Full text from every page | |
Word | Complete document content |
Excel | 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 |
|
πͺ΅ | Structured Logging | JSON in production Β· coloured console in dev |
π³ | Docker-Ready | Single command: |
π‘οΈ | Non-Root Container | Runs as unprivileged user inside Docker |
π©Ί | Health Check | Live |
π€ | CI/CD | Tested on Python 3.10 Β· 3.11 Β· 3.12 Β· 3.13 |
β‘ Quickstart
1οΈβ£ Install
pip install sharepoint-mcpOr 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 credentialsSHP_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 β
π Choose Your API: SharePoint MCP supports both Office365 REST API (default) and Microsoft Graph API. See API Configuration Guide β
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 Documents3οΈβ£ 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 downWhat 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 -dWhat 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 --buildWhat 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 -dWhat 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 -vUsing Podman? Just replace
dockerwithpodmanβ fully compatible.
Docker Environment Variables
Variable | Default | Description |
|
|
|
|
| Bind address |
|
| Port |
|
|
|
π Transport Modes
Mode | Best For | Set With |
| Claude Desktop, Cursor, MCP Inspector |
|
| Docker, remote agents, VS Code Copilot, REST clients |
|
π 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_LIBRARYto access the full library root. If your org uses Office365 REST API and renamed the default library, also setSHP_LIBRARY_NAME.
π» VS Code Copilot (Agent Mode)
Start the server via Docker or
TRANSPORT=http sharepoint-mcpCreate
.vscode/mcp.jsonin your workspace:
{
"servers": {
"sharepoint": {
"url": "http://localhost:8000/mcp/",
"type": "http"
}
}
}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 all sub-folders in a directory |
| π³ Get full recursive folder + file tree |
| β Create a new folder |
| ποΈ Delete an empty folder |
π Document Management
Tool | What It Does |
| π List all files with metadata |
| π Search documents using KQL queries |
| π Read & parse file content (PDF/Word/Excel/text) |
| β¬οΈ Upload file as string or Base64 |
| π Upload a local file directly |
| βοΈ Overwrite existing file content |
| ποΈ Permanently delete a file |
| β¬οΈ Download file to local filesystem |
π·οΈ Metadata Management
Tool | What It Does |
| π Get all SharePoint list-item fields |
| βοΈ Update metadata fields |
βοΈ Full Configuration Reference
Variable | Required | Default | Description |
| β | Azure AD app client ID | |
| β | Azure AD client secret | |
| β | Microsoft tenant ID | |
| β | SharePoint site URL | |
|
|
| |
|
| Library name (Office365 REST only; Graph auto-detects) | |
| (empty = full library) | Subfolder scope (e.g. | |
|
| Max tree depth | |
|
| Folders per batch | |
|
| Delay (s) between tree levels | |
|
|
| |
|
| HTTP bind host | |
|
| HTTP port | |
|
|
| |
|
|
|
β οΈ 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 (planned for v1.1) |
Large files | Very large files may hit memory limits during content extraction |
Rate limits | SharePoint throttling (429/503) is handled with auto-retry, but sustained bulk operations may be slow |
π§ Troubleshooting
Authentication Errors
Problem: Missing or invalid SharePoint credentials
Solution: Verify all 4 required environment variables are set:
echo $SHP_ID_APP $SHP_ID_APP_SECRET $SHP_TENANT_ID $SHP_SITE_URLConnection Issues (HTTP Transport)
Problem: Agent can't connect to the MCP server
Solution:
Ensure the server is running:
curl http://localhost:8000/mcp/Check the URL ends with
/mcp/(trailing slash required)Verify the port is not blocked by a firewall
Docker Container Unhealthy
Problem: podman ps / docker ps shows (unhealthy)
Solution: Check container logs for errors:
docker logs sharepoint-mcpDebug Logging
Enable verbose output by setting LOG_LEVEL=DEBUG:
LOG_LEVEL=DEBUG sharepoint-mcpFor Docker, add to your .env file or docker-compose.yml:
LOG_LEVEL=DEBUG
LOG_FORMAT=consolePermission Errors
Problem: Access denied from SharePoint
Solution:
Verify the Azure AD app has the required API permissions
Ensure admin consent has been granted (if required by your org)
Confirm
SHP_SITE_URLpoints to a site your app has access to
π§ͺ Development
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp
pip install -e ".[dev]"
make test # run all tests
make inspect # π launch MCP Inspector
make check # quick import sanity check
make clean # π§Ή remove cachesπ Documentation
π Doc | π Description |
Full setup guide | |
All environment variables | |
Detailed tool parameters | |
Design and layer diagram | |
Azure AD app registration guide | |
Planned features | |
Version history |
π€ Contributing
Contributions are welcome! Please read docs/contributing.md and our Code of Conduct.
π΄ Fork the repo
πΏ Create a branch:
git checkout -b feat/my-toolβ Add tests:
make test㪠Open a Pull Request
π Security
Found a vulnerability? Please do not open a public issue.
Report privately via GitHub Security Advisories or see SECURITY.md.
MIT License Β© 2026 Ravi Kant
β If this project helps you, please star it on GitHub!
Available Tools
14 toolsCreate_FolderB
Create a new folder in a SharePoint directory. Use None/null or empty string for parent_folder to create in document library root.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | No | ||
| parent_folder | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral traits. It mentions creation (a mutation) but does not address permissions, error handling, or behavior when the folder already exists, leaving ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The purpose is stated first, followed by a concise usage tip. Well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 optional parameters, no output schema, and no annotations, the description covers the basic purpose and a key usage detail. However, it leaves gaps in error handling and default behavior, which an agent would need to infer or test.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the parent_folder parameter usage, but folder_name is only implied. This adds some meaning beyond the schema, but not enough to fully specify both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: creating a new folder in a SharePoint directory. It distinguishes from sibling tools like Delete_Folder or List_SharePoint_Folders, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a specific usage tip for parent_folder (use null/empty for root), which is helpful. However, it lacks guidance on when to use this tool versus alternatives like Upload_Document or List_SharePoint_Folders, and does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Delete_DocumentB
Permanently delete a document from a SharePoint folder. Use empty string for folder_name for files in document library root.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | No | ||
| file_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It mentions 'Permanently delete', implying irreversibility, but does not disclose permissions needed, side effects (e.g., on version history), or behavior when the file does not exist. This is minimal disclosure for a deletion tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the key action and a helpful usage hint. No unnecessary words or redundancies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with an output schema (not shown but indicated), the description covers the core purpose and a special case. However, it lacks details on file_name parameter semantics and error handling behavior, leaving room for ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only adds meaning for folder_name (empty string for root), but provides no guidance on file_name (e.g., format, extension, path). Given no param descriptions in schema, the description is insufficient to help the agent understand all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Permanently delete') and the resource ('document from a SharePoint folder'), and distinguishes from sibling tools (e.g., Delete_Folder) by specifying 'document'. It also provides a specific usage hint for files in the document library root.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a specific tip for using empty string folder_name for root files, but does not explicitly state when to use this tool versus alternatives like Delete_Folder or other sibling tools. The context signals show many related tools, but no explicit when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Delete_FolderC
Delete an empty folder from SharePoint. Provide the full path to the folder to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It reveals the destructive nature ('Delete'), but does not disclose error behavior for non-empty folders, permission requirements, or side effects. This lack of detail hinders safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (two sentences), and the first sentence clearly states the core purpose. However, it sacrifices essential detail for brevity, leaving out crucial constraints and usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no output schema), the description should fully cover behavior including error states and prerequisites. It does not address what happens if the folder is not empty, if the path is invalid, or if the user lacks permissions. This incompleteness may lead to invocation failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning to the single parameter 'folder_path' (schema has 0% description coverage). It says to 'Provide the full path' but does not specify format, example, or whether the parameter is required. Agents may struggle with correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Delete an empty folder from SharePoint', clearly indicating the action (delete) and the resource (empty folder). It distinguishes from sibling tools like Delete_Document which target documents. However, it omits a critical constraint: the folder must be empty, which could lead to misuse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., Delete_Document) or what happens if conditions are not met (e.g., folder not empty). The instruction to 'Provide the full path' is minimal and does not help the agent decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Download_DocumentA
Download a SharePoint document to the local filesystem (with automatic fallback to ./downloads/). Use empty string for folder_name for files in document library root.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | No | ||
| file_name | No | ||
| local_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals the automatic fallback path behavior but omits other behavioral traits such as error handling, overwrite behavior, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant content. Each sentence adds distinct value: the first states purpose and fallback, the second gives parameter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema, the description lacks details on parameter interactions, example values, error handling, and how local_path relates to the fallback. Given three parameters and no annotations, the description is incomplete for effective tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only explains the folder_name parameter. It does not clarify the meaning or usage of file_name or local_path, leaving significant gaps for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads a SharePoint document to the local filesystem, specifying the verb 'download' and the resource 'SharePoint document'. It distinguishes from sibling tools like Get_Document_Content by mentioning local filesystem saving.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides specific guidance on using an empty string for folder_name for root files, which aids correct invocation. However, it does not mention alternative tools or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Get_Document_ContentC
Retrieve and decode the content of a SharePoint document. Supports PDF, Word, Excel, and plain-text files. For files in the document library root, use empty string for folder_name.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | No | ||
| file_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully convey behavioral traits. It mentions decoding and supported formats but omits critical details like return format (text vs binary), authentication requirements, or file size limits. Minimal transparency beyond basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. First sentence captures primary action, second provides a specific usage hint. Excellent front-loading and brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite existence of output schema, the description fails to clarify parameter usage and tool differentiation. Given two undefined parameters and no annotations, the description is too sparse to be complete. Sibling tools require clearer distinction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must add meaning. It partially explains folder_name (use empty for root) but gives no guidance on file_name parameter, its format, or how the two interact. Incomplete semantic coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states retrieving and decoding SharePoint document content and lists supported file types. However, it does not explicitly differentiate from sibling tools like Download_Document or Get_File_Metadata, which might overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a specific hint about using empty string for folder_name when file is in root, but lacks any guidance on when to use this tool versus alternative sibling tools. No when-not-to-use or prerequisite conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Get_File_MetadataC
Retrieve all SharePoint list-item metadata fields for a document.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | Yes | ||
| file_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It only states the core action without disclosing read-only nature, error handling, authentication needs, or performance characteristics. For a retrieval tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the purpose. However, it could be slightly expanded without losing conciseness to include parameter hints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description must explain return values. It only says 'all metadata fields' without format or example. Error cases and parameter constraints are missing, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention folder_name or file_name. The description provides no additional meaning beyond the schema, failing to compensate for low coverage as required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Retrieve' and the resource 'all SharePoint list-item metadata fields for a document', distinguishing it from siblings like Get_Document_Content (content) and Update_File_Metadata (update).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as Get_Document_Content for content or Search_SharePoint for searching. The description does not provide context for optimal usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Update_DocumentB
Overwrite the content of an existing SharePoint document. Use empty string for folder_name for files in document library root.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | No | ||
| file_name | No | ||
| content | No | ||
| is_base64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. It only states the action (overwrite) without detailing necessary permissions, side effects, or behavior if file does not exist. Minimal disclosure beyond the core action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear, front-loaded sentences with no unnecessary words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple update operation with an output schema, but lacks context on content format, base64 usage, and how it interacts with other document operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning for folder_name. However, it fails to explain file_name, content, and is_base64 parameters, leaving gaps for an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool overwrites content of an existing SharePoint document, with a specific verb and resource. However, it does not explicitly differentiate from sibling tools like Upload_Document, which also involves writing content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a specific usage hint about using empty string for folder_name for root library files, but lacks guidance on when to use this tool versus alternatives like Update_File_Metadata or Upload_Document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Update_File_MetadataB
Update one or more SharePoint list-item metadata fields for a document.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | Yes | ||
| file_name | Yes | ||
| metadata | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. It states 'update' but does not disclose whether it replaces or merges metadata, idempotency, side effects, permission requirements, or error behavior. Minimal transparency beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundant information. Efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 3 parameters, no output schema, and no annotations, the description is only one sentence. It lacks details on expected input format for metadata, whether folder_name is a path or name, return value, error cases, or any behavioral nuances. Incomplete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds 'one or more SharePoint list-item metadata fields' but does not explain the structure of the metadata object (e.g., key-value pairs, allowed fields). Folder_name and file_name are self-explanatory but lack any additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update', the resource 'SharePoint list-item metadata fields for a document', and the scope 'one or more'. It distinguishes itself from sibling tools like Get_File_Metadata (read) and Update_Document (different action).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like Get_File_Metadata or Update_Document. No mention of preconditions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Upload_DocumentA
Upload a new document to a SharePoint folder. Pass content as a UTF-8 string or Base64-encoded bytes. Use empty string for folder_name to upload to document library root.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | ||
| content | Yes | ||
| folder_name | No | ||
| is_base64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It covers content encoding (UTF-8 or Base64) and folder_name defaulting, but does not describe error conditions, authentication needs, rate limits, or the return value (though an output schema exists). This is adequate but not fully comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The first sentence front-loads the action and resource, and the second adds key usage detail. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, an output schema, and many sibling tools, the description is fairly complete. It covers content encoding and folder root behavior. It could mention return value or error scenarios, but the output schema likely fills that gap. Overall sufficient for a simple upload tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must add meaning. It clarifies the 'content' parameter format and the 'folder_name' default behavior, but does not explain 'file_name' or 'is_base64' beyond their schema titles. This adds partial value but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Upload a new document' to a 'SharePoint folder', using specific verbs and resource. It distinguishes from sibling tools like 'Upload_Document_From_Path', which uploads from a file path. The description also specifies the content format and a notable parameter behavior (folder_name default).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implicit usage guidance (e.g., using empty string for folder_name to upload to root) but lacks explicit when-to-use or when-not-to-use context. It does not differentiate from alternatives such as 'Upload_Document_From_Path' or explain when to prefer this tool over similar ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Upload_Document_From_PathA
Upload a local file directly to SharePoint without converting to Base64 first. Use empty string for folder_name to upload to document library root.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | No | ||
| file_path | No | ||
| new_file_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description reveals a key behavioral trait (no Base64 conversion), but omits other important details like error handling, permissions, or overwrite behavior, requiring the agent to infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loaded with the core action and a key usage detail, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic purpose and one parameter hint, but is missing details on new_file_name semantics, error scenarios, and differentiation from sibling tools, leaving gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; the description adds meaning for folder_name (empty string for root) but fails to explain file_path or new_file_name, leaving two parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads a local file to SharePoint without Base64 conversion, distinguishing it from sibling tools like Upload_Document. The verb 'Upload' and specific resource 'SharePoint' with the unique method are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use this tool (e.g., avoiding Base64 conversion) and a hint for folder_name usage, but lacks explicit when-not or alternative recommendations, leaving usage guidance incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
v0.1.0- First observed
Create_Folder - First observed
Delete_Document - First observed
Delete_Folder - First observed
Download_Document - First observed
Get_Document_Content - First observed
Get_File_Metadata - First observed
Get_SharePoint_Tree - First observed
List_SharePoint_Documents - First observed
List_SharePoint_Folders - First observed
Search_SharePoint - First observed
Update_Document - First observed
Update_File_Metadata - First observed
Upload_Document - First observed
Upload_Document_From_Path
TDQS
Tools mostly target distinct actions, but Upload_Document and Upload_Document_From_Path have overlapping purposes (both upload, differing only in input format). Download_Document and Get_Document_Content also serve similar retrieval needs, potentially causing confusion for an agent.
Most tools follow a verb_noun pattern (Create_Folder, Delete_Document), but inconsistencies exist: Get_SharePoint_Tree includes 'SharePoint' while others don't; Search_SharePoint lacks a noun. Overall pattern is clear, with minor deviations.
14 tools provide a well-scoped set for SharePoint document management. Each tool serves a distinct operation (CRUD for folders and documents, metadata, search, tree view), with no excess or deficiency.
Basic CRUD and metadata operations are covered, and search and tree view add value. Minor gaps exist: renaming/moving items, updating folder metadata, or deleting non-empty folders are not supported. Still, core workflows are complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
MCP server for building and testing AI agents with multi-model experimentation and insights.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceA lightweight MCP server that enables integration with Microsoft SharePoint, allowing clients to interact with documents and folders through the Model Context Protocol.965-
- AlicenseNot gradedqualityDmaintenanceA comprehensive server that enables AI applications to interact with Microsoft 365 and Azure AD services through standardized Model Context Protocol interfaces.3MIT
- AlicenseNot gradedqualityAmaintenanceA production-ready MCP server that provides secure, delegated access to Microsoft 365 services including Email, SharePoint, OneDrive, and Calendar. It enables AI models to search messages, browse files, manage calendar events, and parse document contents using OAuth 2.1 authentication.MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that connects AI assistants to SharePoint via Microsoft Graph API, enabling natural language queries for documents, lists, and site management.82-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ravikant1918/sharepoint-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server