sharepoint-excel-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLIENT_ID | Yes | Azure Application (client) ID | |
| TENANT_ID | Yes | Azure Directory (tenant) ID | |
| CLIENT_SECRET | Yes | Azure client secret value | |
| MAX_DOWNLOAD_BYTES | No | Maximum download size in bytes for the fallback path (default 25 MB) | 26214400 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| resolve_linkA | Convert a SharePoint sharing link or document URL into stable driveId/itemId values. Call this once and reuse the IDs: sharing links can expire or be revoked, and resolving them costs an extra Graph round trip on every call. |
| list_excel_sheetsA | List the worksheet names in a SharePoint-hosted Excel workbook. |
| describe_sheetA | Inspect a sheet without pulling its data: returns the column headers, the total row count, and up to 3 sample rows. Call this FIRST against an unfamiliar matrix so you can build a targeted filter for get_permission_matrix instead of pulling everything. |
| get_permission_matrixA | Read a worksheet as structured records, using the header row as keys. Note that maxRows/offset/filter/columns are applied AFTER the full sheet is fetched: they bound what you receive, not what is transferred. If the result is truncated, narrow it with |
| get_cell_rangeA | Read raw values for an explicit A1 range, e.g. "A1:D20". Use when the sheet has a non-standard layout that the header-row model does not fit. Unlike get_permission_matrix, the range genuinely bounds what Graph transfers. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool addresses a distinct step in the workflow: resolve_link handles link-to-ID conversion, list_excel_sheets discovers sheets, describe_sheet inspects structure, get_permission_matrix reads structured data, and get_cell_range reads raw ranges. No two tools perform the same function.
All tool names follow the verb_noun snake_case pattern (resolve_link, list_excel_sheets, describe_sheet, get_permission_matrix, get_cell_range). The verbs clearly indicate the action, and naming is uniformly consistent.
Five tools is a well-scoped count for a focused Excel-reading server. Each tool covers a necessary operation without unnecessary bloat, and the set feels neither too thin nor too heavy.
The core read workflow is well-covered: resolving a link, listing sheets, inspecting structure, and reading data either as structured records or raw ranges. Minor gaps exist such as no write/update tools or a way to enumerate workbooks without a URL, but these appear outside the intended scope.