{"_id":"@mindstone/mcp-server-microsoft-sharepoint","_rev":"5-68d4fe9f917383f3d38458d1206a4b0d","name":"@mindstone/mcp-server-microsoft-sharepoint","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@mindstone/mcp-server-microsoft-sharepoint","version":"0.1.0","license":"FSL-1.1-MIT","_id":"@mindstone/mcp-server-microsoft-sharepoint@0.1.0","maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/microsoft-sharepoint","bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"bin":{"mcp-server-microsoft-sharepoint":"dist/index.js"},"dist":{"shasum":"728d50207e8099d3fcb83896bd6c967a6eb28a94","tarball":"https://registry.npmjs.org/@mindstone/mcp-server-microsoft-sharepoint/-/mcp-server-microsoft-sharepoint-0.1.0.tgz","fileCount":33,"integrity":"sha512-BFd22cuHJ7+SsBapSY2Q4pNNyISA3m2mHKgcw5XCFyedfH9rcAsruh4f62Y9J639TeCc367oRF9Zp63SAcKjuw==","signatures":[{"sig":"MEYCIQCr0Nw/VjZmnf9SUpi+FZeSQO2Msm5LCmdqpNUevBjDMgIhANE17ReGUlatUsWZoZ524XFUOqhbSy96ug8Z25SxvIhx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174738},"type":"module","engines":{"node":">=20"},"gitHead":"a49de3e19e784f88bea43a06bcfb82e3c2386aa5","mcpName":"io.github.mindstone/mcp-server-microsoft-sharepoint","scripts":{"test":"vitest run","build":"shx rm -rf dist && tsc && shx chmod +x dist/index.js && npm run security:internal-refs","start":"node dist/index.js","watch":"tsc --watch","prepare":"npm run build","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build && npm test","security:internal-refs":"node scripts/check-internal-refs.mjs"},"_npmUser":{"name":"mindstone-engineering","email":"engineering@mindstone.com"},"repository":{"url":"git+https://github.com/mindstone/mcp-servers.git","type":"git","directory":"connectors/microsoft-sharepoint"},"_npmVersion":"11.11.1","description":"Microsoft 365 SharePoint MCP server — sites, libraries, lists, pages, search, metadata, and file operations via Microsoft Graph","directories":{},"_nodeVersion":"25.8.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.26.0","@mindstone/mcp-server-microsoft-shared":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.13.2","shx":"^0.3.4","vitest":"^4.1.3","typescript":"^5.8.2","@types/node":"^22","@vitest/coverage-v8":"^4.1.3","@mindstone/mcp-test-harness":"file:../../test-harness"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-microsoft-sharepoint_0.1.0_1779223897511_0.5536786976326389","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@mindstone/mcp-server-microsoft-sharepoint","version":"0.1.1","license":"FSL-1.1-MIT","_id":"@mindstone/mcp-server-microsoft-sharepoint@0.1.1","maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/microsoft-sharepoint","bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"bin":{"mcp-server-microsoft-sharepoint":"dist/index.js"},"dist":{"shasum":"5400c88f4563b5f2ffbca5b6040aa1e92f933017","tarball":"https://registry.npmjs.org/@mindstone/mcp-server-microsoft-sharepoint/-/mcp-server-microsoft-sharepoint-0.1.1.tgz","fileCount":33,"integrity":"sha512-wcF/sa8G2aYyajTe0fMRpJg09BHVxkr2eNOhBdpN7m+rM/uKfhhMwlMAparsbWYOXZcce5tH7M6nLDaOlh9kZg==","signatures":[{"sig":"MEUCIESQxP+E0uc5oDPtruS1E4fB1pyKLzzzDidT/mjjBb44AiEA6V4NPzh1A3KfwfFNFew6PQyX+VBmAgP8Cg8qh6YJ7SM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178978},"type":"module","engines":{"node":">=20"},"gitHead":"2318e6429c67600786dad9cc697f2cde0b94b3a8","mcpName":"io.github.mindstone/mcp-server-microsoft-sharepoint","scripts":{"test":"vitest run","build":"shx rm -rf dist && tsc && shx chmod +x dist/index.js && npm run security:internal-refs","start":"node dist/index.js","watch":"tsc --watch","prepare":"npm run build","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build && npm test","security:internal-refs":"node scripts/check-internal-refs.mjs"},"_npmUser":{"name":"mindstone-engineering","email":"engineering@mindstone.com"},"repository":{"url":"git+https://github.com/mindstone/mcp-servers.git","type":"git","directory":"connectors/microsoft-sharepoint"},"_npmVersion":"11.11.1","description":"Microsoft 365 SharePoint via Graph: sites, libraries, pages, lists, search, file/list mutations.","directories":{},"_nodeVersion":"25.8.2","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.26.0","@mindstone/mcp-server-microsoft-shared":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.13.2","shx":"^0.3.4","vitest":"^4.1.3","typescript":"^5.8.2","@types/node":"^22","@vitest/coverage-v8":"^4.1.3","@mindstone/mcp-test-harness":"file:../../test-harness"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-microsoft-sharepoint_0.1.1_1779281008835_0.7770201862645341","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@mindstone/mcp-server-microsoft-sharepoint","version":"0.1.2","license":"FSL-1.1-MIT","_id":"@mindstone/mcp-server-microsoft-sharepoint@0.1.2","maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/microsoft-sharepoint","bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"bin":{"mcp-server-microsoft-sharepoint":"dist/index.js"},"dist":{"shasum":"744144f82536589423acfb2239595512139e2b67","tarball":"https://registry.npmjs.org/@mindstone/mcp-server-microsoft-sharepoint/-/mcp-server-microsoft-sharepoint-0.1.2.tgz","fileCount":21,"integrity":"sha512-3grUbnG0qiGVabCEb5/I/KxtEWEedhs3JzcLK/iMD4NK/H+Ia5qzbmGJfR5W6BQaF9NTY5jcBdaO9M85A8Mmfw==","signatures":[{"sig":"MEUCIQC/9ks9hqQ0mH7aDVzxTWByG7aLKd78tXKvN7p0slWWewIgYhT3pCkqOvXwlFBCULXafvkCMSysLuRBe1gorqSnhOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mindstone%2fmcp-server-microsoft-sharepoint@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120427},"type":"module","_from":"file:mindstone-mcp-server-microsoft-sharepoint-0.1.2.tgz","engines":{"node":">=20"},"mcpName":"io.github.mindstone/mcp-server-microsoft-sharepoint","scripts":{"test":"vitest run","build":"shx rm -rf dist && tsc && shx chmod +x dist/index.js && npm run security:internal-refs","start":"node dist/index.js","watch":"tsc --watch","prepare":"npm run build","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build && npm test","security:internal-refs":"node scripts/check-internal-refs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:abbe4586-fb7d-4d00-890d-9b05fe2e6a5c"}},"_resolved":"/home/runner/work/mcp-servers/mcp-servers/mindstone-mcp-server-microsoft-sharepoint-0.1.2.tgz","_integrity":"sha512-3grUbnG0qiGVabCEb5/I/KxtEWEedhs3JzcLK/iMD4NK/H+Ia5qzbmGJfR5W6BQaF9NTY5jcBdaO9M85A8Mmfw==","repository":{"url":"git+https://github.com/mindstone/mcp-servers.git","type":"git","directory":"connectors/microsoft-sharepoint"},"_npmVersion":"11.16.0","description":"Microsoft 365 SharePoint via Graph: sites, libraries, pages, lists, search, file/list mutations.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.26.0","@mindstone/mcp-server-microsoft-shared":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.13.2","shx":"^0.3.4","vitest":"^4.1.3","typescript":"^5.8.2","@types/node":"^22","@vitest/coverage-v8":"^4.1.3","@mindstone/mcp-test-harness":"file:../../test-harness"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-microsoft-sharepoint_0.1.2_1783095897029_0.13985717657049967","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@mindstone/mcp-server-microsoft-sharepoint","version":"0.2.0","license":"FSL-1.1-MIT","_id":"@mindstone/mcp-server-microsoft-sharepoint@0.2.0","maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/microsoft-sharepoint","bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"bin":{"mcp-server-microsoft-sharepoint":"dist/index.js"},"dist":{"shasum":"b8b042c72d3738438952c1dc4872b88fe6afa098","tarball":"https://registry.npmjs.org/@mindstone/mcp-server-microsoft-sharepoint/-/mcp-server-microsoft-sharepoint-0.2.0.tgz","fileCount":21,"integrity":"sha512-IlcMroe3whtTddfxcNTzz6QMNa1fh3BR8r+P5zFCP1wB32Ae5Wtclg7fR6fPg0LGBtRuqU9F0xjdz3UbYucwGA==","signatures":[{"sig":"MEYCIQDgIwJihFv8maaa74GIuFELnPhXfRwlxbYyG2GW53+peAIhAIikkJMije/BQL54EuZPf2U0RlNzoQl8R7nhGZ2QiOP4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mindstone%2fmcp-server-microsoft-sharepoint@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167369},"type":"module","_from":"file:mindstone-mcp-server-microsoft-sharepoint-0.2.0.tgz","engines":{"node":">=20"},"mcpName":"io.github.mindstone/mcp-server-microsoft-sharepoint","scripts":{"test":"vitest run","build":"shx rm -rf dist && tsc && shx chmod +x dist/index.js && npm run security:internal-refs","start":"node dist/index.js","watch":"tsc --watch","prepare":"npm run build","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build && npm test","security:internal-refs":"node scripts/check-internal-refs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:abbe4586-fb7d-4d00-890d-9b05fe2e6a5c"}},"_resolved":"/home/runner/work/mcp-servers/mcp-servers/mindstone-mcp-server-microsoft-sharepoint-0.2.0.tgz","_integrity":"sha512-IlcMroe3whtTddfxcNTzz6QMNa1fh3BR8r+P5zFCP1wB32Ae5Wtclg7fR6fPg0LGBtRuqU9F0xjdz3UbYucwGA==","repository":{"url":"git+https://github.com/mindstone/mcp-servers.git","type":"git","directory":"connectors/microsoft-sharepoint"},"_npmVersion":"11.16.0","description":"Microsoft 365 SharePoint via Graph: sites, libraries, pages, lists, search, file/list mutations.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.0","@modelcontextprotocol/sdk":"^1.26.0","@mindstone/mcp-server-microsoft-shared":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.13.2","shx":"^0.3.4","vitest":"^4.1.3","typescript":"^5.8.2","@types/node":"^22","@vitest/coverage-v8":"^4.1.3","@mindstone/mcp-test-harness":"file:../../test-harness"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-microsoft-sharepoint_0.2.0_1786113614120_0.38987873773651005","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@mindstone/mcp-server-microsoft-sharepoint","version":"0.2.1","mcpName":"io.github.mindstone/mcp-server-microsoft-sharepoint","description":"Microsoft 365 SharePoint via Graph: sites, libraries, pages, lists, search, file/list mutations.","license":"FSL-1.1-MIT","type":"module","bin":{"mcp-server-microsoft-sharepoint":"dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/mindstone/mcp-servers.git","directory":"connectors/microsoft-sharepoint"},"homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/microsoft-sharepoint","publishConfig":{"access":"public"},"scripts":{"build":"shx rm -rf dist && tsc && shx chmod +x dist/index.js && npm run security:internal-refs","prepare":"npm run build","prepublishOnly":"npm run build && npm test","watch":"tsc --watch","start":"node dist/index.js","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","security:internal-refs":"node scripts/check-internal-refs.mjs"},"dependencies":{"@mindstone/mcp-server-microsoft-shared":"^0.1.0","@modelcontextprotocol/sdk":"^1.26.0","zod":"^3.23.0"},"devDependencies":{"@mindstone/mcp-test-harness":"file:../../test-harness","@types/node":"^22","@vitest/coverage-v8":"^4.1.3","msw":"^2.13.2","shx":"^0.3.4","typescript":"^5.8.2","vitest":"^4.1.3"},"engines":{"node":">=20"},"_id":"@mindstone/mcp-server-microsoft-sharepoint@0.2.1","bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"_integrity":"sha512-l+offZh6bhyc6nwVQ2pFjNUJh5TyawAiMmbFmijpIHHjF86daWOMEmCxYnwD2TzKMzjeyCtEI5re3QI06f+kog==","_resolved":"/home/runner/work/mcp-servers/mcp-servers/mindstone-mcp-server-microsoft-sharepoint-0.2.1.tgz","_from":"file:mindstone-mcp-server-microsoft-sharepoint-0.2.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-l+offZh6bhyc6nwVQ2pFjNUJh5TyawAiMmbFmijpIHHjF86daWOMEmCxYnwD2TzKMzjeyCtEI5re3QI06f+kog==","shasum":"178672a0819cc0ba966c6574bcb03960d5e6c65b","tarball":"https://registry.npmjs.org/@mindstone/mcp-server-microsoft-sharepoint/-/mcp-server-microsoft-sharepoint-0.2.1.tgz","fileCount":21,"unpackedSize":169622,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mindstone%2fmcp-server-microsoft-sharepoint@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGOIMwZjPdbHv1a6aKqY5D4nQ48+rpnHPOp2AfJe0bbcAiBzldTmtCfXWYb+WdjuCC3z0sS0zgSIh0Mz89Z96lTWcA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:abbe4586-fb7d-4d00-890d-9b05fe2e6a5c"}},"directories":{},"maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server-microsoft-sharepoint_0.2.1_1786324881552_0.666066841597236"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-19T20:51:37.339Z","modified":"2026-08-10T01:21:22.174Z","0.1.0":"2026-05-19T20:51:37.650Z","0.1.1":"2026-05-20T12:43:28.979Z","0.1.2":"2026-07-03T16:24:57.213Z","0.2.0":"2026-08-07T14:40:14.263Z","0.2.1":"2026-08-10T01:21:21.691Z"},"bugs":{"url":"https://github.com/mindstone/mcp-servers/issues"},"license":"FSL-1.1-MIT","homepage":"https://github.com/mindstone/mcp-servers/tree/main/connectors/microsoft-sharepoint","repository":{"type":"git","url":"git+https://github.com/mindstone/mcp-servers.git","directory":"connectors/microsoft-sharepoint"},"description":"Microsoft 365 SharePoint via Graph: sites, libraries, pages, lists, search, file/list mutations.","maintainers":[{"name":"mindstone-engineering","email":"engineering@mindstone.com"}],"readme":"# @mindstone/mcp-server-microsoft-sharepoint\n\n[![npm version](https://img.shields.io/npm/v/@mindstone/mcp-server-microsoft-sharepoint.svg)](https://www.npmjs.com/package/@mindstone/mcp-server-microsoft-sharepoint)\n[![License: FSL-1.1-MIT](https://img.shields.io/badge/License-FSL--1.1--MIT-blue.svg)](./LICENSE)\n\nMicrosoft 365 SharePoint MCP server — discover sites, browse document libraries, read pages and lists, search content, and perform SharePoint file/list mutations via the Microsoft Graph API.\n\n*Cohort-style SharePoint MCP. Owns its own `authenticate_sharepoint` tool so the host can request incremental `Sites.Read.All` consent on top of the cohort's base Microsoft 365 OAuth surface.*\n\n## Status\n\n- **Version:** [0.2.1](./CHANGELOG.md) · [npm](https://www.npmjs.com/package/@mindstone/mcp-server-microsoft-sharepoint)\n- **Auth:** OAuth (host-orchestrated incremental consent via `authenticate_sharepoint`) ([`MS_CLIENT_ID`](./server.json))\n- **Tools:** [46](./src/tools.ts) (auth + sites, libraries, pages, lists, metadata, search, mutations)\n- **Surface:** cloud-api\n- **Machine-readable:** [`STATUS.json`](./STATUS.json)\n- **Shared library:** [`@mindstone/mcp-server-microsoft-shared`](https://www.npmjs.com/package/@mindstone/mcp-server-microsoft-shared)\n\n## Why this exists\n\nWhen we ported this in May 2026, Microsoft's own [Graph MCP](https://github.com/microsoft/mcp) lineup did not yet ship a stand-alone SharePoint server, and the community options at the time either skipped the incremental-consent flow that SharePoint requires for cross-tenant scenarios or treated SharePoint as its own login surface — every connector ran a separate OAuth dance and stored its own copy of the refresh token. We pulled the bundled connector out of MindstoneRebel as a 1:1 port so that the same five-connector Microsoft 365 cohort (mail, calendar, files, teams, SharePoint) shares a single set of credentials and a single shared-library package for token persistence and request timeouts. SharePoint declares its own `authenticate_sharepoint` tool — separate from the cohort's `authenticate_microsoft_account` — so the host can request the additional `Sites.Read.All` scope without disturbing the existing mail/calendar/files/teams session.\n\n## Example interaction\n\n> \"Find the Q3 OKR doc in the Strategy team's site, and create a read-only sharing link my whole team can use.\"\n\nTools the host calls:\n1. `search_sharepoint` — query `Q3 OKR` scoped to the Strategy site, returns the matching item.\n2. `create_sharing_link` — read-only, organisation scope, on that item.\n\nResponse (trimmed):\n\n```json\n{\n  \"match\": {\n    \"siteId\": \"example.sharepoint.com,...\",\n    \"name\": \"Q3-OKRs.docx\",\n    \"webUrl\": \"https://example.sharepoint.com/sites/Strategy/...\"\n  },\n  \"share\": {\n    \"type\": \"view\",\n    \"scope\": \"organization\",\n    \"webUrl\": \"https://example.sharepoint.com/:w:/r/sites/Strategy/.../EZk...\"\n  }\n}\n```\n\n## Requirements\n\n- Node.js 20+\n- npm\n- A host application that performs the Microsoft OAuth flow and writes per-account token files into `${MS_CONFIG_DIR}/credentials/${sanitised-email}.token.json` and an `${MS_CONFIG_DIR}/accounts.json` index. This server reads those files; it does not initiate OAuth itself.\n\n<!-- BEGIN INSTALL_LINKS: do not edit by hand; regenerated by scripts/gen-install-links.mjs -->\n## One-click install\n\n[![Add to Cursor](https://img.shields.io/badge/Add_to_Cursor-black?style=for-the-badge&logo=cursor&logoColor=white)](cursor://anysphere.cursor-deeplink/mcp/install?name=Microsoft%20365%20SharePoint&config=eyJ0eXBlIjoic3RkaW8iLCJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBtaW5kc3RvbmUvbWNwLXNlcnZlci1taWNyb3NvZnQtc2hhcmVwb2ludCJdLCJlbnYiOnsiTVNfQ0xJRU5UX0lEIjoiIiwiTVNfQ09ORklHX0RJUiI6IiIsIk1TX01DUF9QQUNLQUdFX0lEIjoiTWljcm9zb2Z0MzY1U2hhcmVQb2ludCIsIk1JQ1JPU09GVF9SRVFVRVNUX1RJTUVPVVRfTVMiOiI2MDAwMCJ9fQ)\n[![Add to VS Code](https://img.shields.io/badge/Add_to_VS_Code-007ACC?style=for-the-badge&logo=visual-studio-code&logoColor=white)](vscode:mcp/install?%7B%22name%22%3A%22Microsoft%20365%20SharePoint%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40mindstone%2Fmcp-server-microsoft-sharepoint%22%5D%2C%22env%22%3A%7B%22MS_CLIENT_ID%22%3A%22%22%2C%22MS_CONFIG_DIR%22%3A%22%22%2C%22MS_MCP_PACKAGE_ID%22%3A%22Microsoft365SharePoint%22%2C%22MICROSOFT_REQUEST_TIMEOUT_MS%22%3A%2260000%22%7D%7D)\n[![Add to VS Code Insiders](https://img.shields.io/badge/Add_to_VS_Code_Insiders-24bfa5?style=for-the-badge&logo=visual-studio-code&logoColor=white)](vscode-insiders:mcp/install?%7B%22name%22%3A%22Microsoft%20365%20SharePoint%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40mindstone%2Fmcp-server-microsoft-sharepoint%22%5D%2C%22env%22%3A%7B%22MS_CLIENT_ID%22%3A%22%22%2C%22MS_CONFIG_DIR%22%3A%22%22%2C%22MS_MCP_PACKAGE_ID%22%3A%22Microsoft365SharePoint%22%2C%22MICROSOFT_REQUEST_TIMEOUT_MS%22%3A%2260000%22%7D%7D)\n\nAfter clicking the button, your host will prompt you to fill: `MS_CLIENT_ID`, `MS_CONFIG_DIR`, `MS_MCP_PACKAGE_ID`, `MICROSOFT_REQUEST_TIMEOUT_MS`.\n\n<details>\n<summary>Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (Microsoft 365 SharePoint)</summary>\n\n```json\n{\n  \"mcpServers\": {\n    \"Microsoft 365 SharePoint\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@mindstone/mcp-server-microsoft-sharepoint\"\n      ],\n      \"env\": {\n        \"MS_CLIENT_ID\": \"\",\n        \"MS_CONFIG_DIR\": \"\",\n        \"MS_MCP_PACKAGE_ID\": \"Microsoft365SharePoint\",\n        \"MICROSOFT_REQUEST_TIMEOUT_MS\": \"60000\"\n      }\n    }\n  }\n}\n```\n\n</details>\n<!-- END INSTALL_LINKS -->\n\n## Quick Start\n\n### Install & build\n\n```bash\ncd <path-to-repo>/connectors/microsoft-sharepoint\nnpm install\nnpm run build\n```\n\n### npx (once published)\n\n```bash\nnpx -y @mindstone/mcp-server-microsoft-sharepoint\n```\n\n### Local\n\n```bash\nnode dist/index.js\n```\n\n## Configuration\n\nThis server runs alongside a host application that owns the Microsoft 365 OAuth flow. The host writes credentials to disk; this server reads them.\n\n### Required environment variables\n\n| Name | Description |\n| ---- | ----------- |\n| `MS_CLIENT_ID` | Microsoft Entra (Azure AD) application client ID. |\n| `MS_CONFIG_DIR` | Path to the per-user Microsoft config directory (`credentials/`, `accounts.json`). |\n\n### Optional environment variables\n\n| Name | Description | Default |\n| ---- | ----------- | ------- |\n| `MS_ACCOUNT_EMAIL` | Account email when running in multi-account per-instance mode. | First account in `accounts.json`. |\n| `MS_MCP_PACKAGE_ID` | Logical package ID surfaced in error responses. | `Microsoft365SharePoint` |\n| `MICROSOFT_REQUEST_TIMEOUT_MS` | Override the upstream Microsoft Graph request timeout (max `300000` ms). | `60000` |\n| `MICROSOFT_DISABLE_REFRESH` | Set to `1` to disable token refresh on this surface. Tools fail closed with the structured `auth_required` response so the host can drive reauth. Cloud surfaces set this to `1`. | unset |\n\n## Host configuration examples\n\n### Claude Desktop / Cursor\n\n```json\n{\n  \"mcpServers\": {\n    \"Microsoft365SharePoint\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mindstone/mcp-server-microsoft-sharepoint\"],\n      \"env\": {\n        \"MS_CLIENT_ID\": \"your-entra-application-client-id\",\n        \"MS_CONFIG_DIR\": \"/absolute/path/to/microsoft-config\"\n      }\n    }\n  }\n}\n```\n\nSign in via [`@mindstone/mcp-server-microsoft-mail`](../microsoft-mail/)'s `authenticate_microsoft_account` first to negotiate the base session, then call this server's `authenticate_sharepoint` to request the additional SharePoint `Sites.Read.All` scope on top.\n\n### Local development (no npm publish needed)\n\n```json\n{\n  \"mcpServers\": {\n    \"Microsoft365SharePoint\": {\n      \"command\": \"node\",\n      \"args\": [\"<path-to-repo>/connectors/microsoft-sharepoint/dist/index.js\"],\n      \"env\": {\n        \"MS_CLIENT_ID\": \"your-entra-application-client-id\",\n        \"MS_CONFIG_DIR\": \"/absolute/path/to/microsoft-config\"\n      }\n    }\n  }\n}\n```\n\n## Tools (46)\n\n| Tool | Description |\n| ---- | ----------- |\n| `authenticate_sharepoint` | Request SharePoint incremental consent (`Sites.Read.All`). |\n| `list_sharepoint_sites`, `get_sharepoint_site` | Discover and inspect SharePoint sites. |\n| `list_site_document_libraries`, `list_library_files`, `get_library_file` | Browse libraries and items. |\n| `download_library_file`, `read_library_text_file`, `search_library_files` | Read and search library content. |\n| `list_file_versions` | List the version history of a library file. |\n| `upload_library_file`, `upload_library_file_binary`, `create_library_folder`, `delete_library_item`, `move_library_item`, `copy_library_item`, `rename_library_item`, `create_sharing_link` | Mutate and share library items (text upload, binary/large upload via resumable session). |\n| `list_item_permissions`, `invite_item_collaborators`, `revoke_item_permission` | Manage per-item sharing permissions (list grants, invite specific people, revoke access). |\n| `list_site_pages`, `read_site_page` | Browse and read SharePoint pages. |\n| `create_site_page`, `update_site_page`, `publish_site_page` | Author pages: create drafts (with simple HTML content), update metadata, publish. |\n| `list_site_lists`, `list_list_items`, `get_list_item`, `create_list_item`, `update_list_item`, `delete_list_item` | Browse and mutate list items. |\n| `list_list_columns`, `create_site_list` | Read a list's column schema; create new lists with columns. |\n| `search_sharepoint` | Search across sites, libraries, lists, and content. |\n| `list_subsites`, `get_recent_files`, `get_library_tree` | Site discovery and hierarchy views. |\n| `get_file_metadata`, `update_file_metadata` | Read and update custom SharePoint metadata fields. |\n| `get_site_drive`, `list_site_items`, `get_site_item`, `get_site_list`, `get_site_by_path`, `get_sites_delta` | Additional site, list, and drive inspection APIs. |\n\n## Security notes\n\n- `authenticate_sharepoint` is the SharePoint-specific incremental-consent setup tool; the rest of the cohort's base auth comes from [`@mindstone/mcp-server-microsoft-mail`](../microsoft-mail/)'s `authenticate_microsoft_account`.\n- Manual error payloads include `action_required` and `next_step` recovery fields while preserving the existing `auth_required` and success shapes.\n- The bundled silent SharePoint page-content fallback was removed — handler errors now surface the actual failure rather than returning a stale page body.\n- Per-tool Graph calls run under a composed caller + cohort timeout signal via `.options({signal})`.\n\n## Licence\n\n[FSL-1.1-MIT](./LICENSE) — Functional Source License, Version 1.1, with MIT future licence. Free for non-competing use; relicenses to MIT on the converter date in `LICENSE`.\n","readmeFilename":"README.md"}