MCP Sharepoint (aisuru)
Um servidor Model Context Protocol (MCP) que expõe funcionalidades principais da API Microsoft SharePoint / Microsoft Graph como ferramentas utilizáveis por agentes LLM (ex.: Claude Desktop).
Documentação
mcp-sharepoint
Um servidor Model Context Protocol (MCP) que expõe funcionalidades principais da API Microsoft SharePoint / Microsoft Graph como ferramentas utilizáveis por agentes de LLM (ex.: Claude Desktop).
Este servidor foi projetado com uma abordagem voltada para agentes:
- sem acesso direto ao sistema de arquivos local
- entradas e saídas determinísticas
✨ Recursos
O servidor permite que um agente:
📁 Gerenciamento de pastas
Um caminho pode/deve ser passado como argumento
Para usuários Windows, use sempre barras normais /
- Listar pastas
- Criar nova pasta
- Excluir pasta (somente se vazia)
- Obter a estrutura da árvore de pastas
📄 Gerenciamento de documentos
Um caminho pode/deve ser passado como argumento
Para usuários Windows, use sempre barras normais /
- Listar documentos
- Ler o conteúdo de documentos (PDF, Word, Excel, PowerPoint)
- Enviar novo documento (texto ou binário)
- Atualizar um documento existente (substituir todo o conteúdo)
- Excluir documento
🔐 Pré-requisitos
- Node.js
- Um locatário Microsoft 365
- Um aplicativo registrado no Microsoft Entra ID com permissões do Graph e/ou usuários ativos com permissões configuradas
Permissões Graph recomendadas para o aplicativo
Sites.Read.All
Sites.ReadWrite.All
Files.Read.All
Files.ReadWrite.All
⚠️ Tanto permissões de aplicativo quanto permissões delegadas são suportadas
- O agente deve enviar a variável authMode para informar ao mcp-server se deve usar permissões de aplicativo ou permissões delegadas
- Todas as operações são realizadas via Microsoft Graph
🧭 Guia passo a passo para registrar um aplicativo
se você já tem um aplicativo registrado, pode pular esta parte
- Acesse o site do Microsoft Entra
https://entra.microsoft.com/... - Clique no menu à esquerda em "app registration"
- Clique em "New registration"
- Insira um nome de sua preferência e clique em "Register"
🧭 Guia passo a passo para autorizações
se você já tem autorizações configuradas, pode pular esta parte
- Acesse o site do Microsoft Entra
https://entra.microsoft.com/... - No menu à esquerda, clique em "app registration"
- Clique no seu aplicativo registrado na tabela
- No segundo menu à esquerda, clique em "API authorizations"
- Clique em "Add authorization"
- Clique em "Microsoft Graph"
- Clique em "Application authorization" ou "Delegated authorization"
- Se for sua primeira vez ou se você não está familiarizado com autorizações, digite "sites" na barra de pesquisa
- Selecione "Sites.FullControl.All" e clique em "Add authorizations"
⚠️ Esta autorização dá controle total ao aplicativo; é recomendado usar a autorização com o menor privilégio necessário
- Clique em "Consent admin acces for name", e depois clique em sim
🧭 Guia passo a passo para obter os parâmetros do sharepoint
se você já sabe o client_id, client_secret, tenant_id, site_id, drive_id, list_id, pode pular esta parte
client_id, client_secret, tenant_id são necessários apenas para permissões de aplicativo
- No site do Microsoft Entra
https://entra.microsoft.com/, no menu à esquerda, clique em "app registration" - Clique no seu aplicativo registrado na tabela
- Nas informações superiores, você pode ver o client id e o tenant id como ID do aplicativo (cliente) e ID do diretório (locatário)
- Clique em "Client credentials: 0 certificates, 0 secrets"
- Clique em "New client secret"
- Insira a descrição desejada e o tempo de expiração, e clique em "Add"
- Na tabela, aparecerá o novo client secret; copie o campo "Value".
⚠️ Você só pode copiá-lo uma vez; depois, não poderá ver o "Value" novamente
- O "Value" copiado é o client secret
- Faça esta solicitação para obter um access_token necessário para as solicitações seguintes:
curl --request POST \
--url "https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "client_id=<CLIENT_ID>" \
--data-urlencode "client_secret=<CLIENT_SECRET>" \
--data-urlencode "scope=https://graph.microsoft.com/.default" \
--data-urlencode "grant_type=client_credentials"
A resposta é um json; você só precisa do atributo "access_token"
10. Faça esta solicitação para obter o site id; o nome de domínio e o nome do site podem ser vistos na URL do seu site do Sharepoint: https://<DOMAIN_NAME>.sharepoint.com/sites/<SITE_NAME>/...
curl -X GET "https://graph.microsoft.com/v1.0/sites/<DOMAIN_NAME>.sharepoint.com:/sites/<SITE_NAME>?select=id" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Accept: application/json"
A resposta é um json; você só precisa do atributo "id"
11. Faça esta solicitação para obter o drive id
curl -X GET "https://graph.microsoft.com/v1.0/sites/<SITE_ID>/drives?select=id,name" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Accept: application/json"
A resposta é um json; o atributo "value" é um array de json, cada json é um drive diferente; você só precisa do atributo "id"
12. Faça esta solicitação para obter o list id
curl -s -X GET "https://graph.microsoft.com/v1.0/sites/<SITE_ID>/lists?select=id,displayName" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Accept: application/json"
A resposta é um json; o atributo "value" é um array de json, cada json é uma lista diferente; você só precisa do atributo "id"
🧭 Guia passo a passo para adicionar atributos/colunas personalizados ao Sharepoint
Isto é opcional; você pode pesquisar nos atributos/colunas padrão
- Acesse o site do Sharepoint
https://<DOMAIN_NAME>.sharepoint.com/sites/<SITE_NAME>/... - No menu à esquerda, clique em "Documents"
- À direita, após as colunas, clique em "+ Add column"
- Selecione o tipo desejado para a nova coluna; uma opção segura é "Multiple lines of text"
- Digite o nome da nova coluna; os outros campos são opcionais e não obrigatórios
- Clique em "Save"
⚙️ Configuração
A autorização é obtida usando variáveis de aplicativo para permissão de aplicativo, ou access token para permissão delegada.
Permissões de aplicativo tratam todas as solicitações da mesma forma, referindo-se às permissões configuradas no Microsoft Entra ID.
Permissões delegadas referem-se às permissões associadas ao usuário que está pedindo ao agente para fazer a solicitação, identificado por um login.
Essas variáveis devem ser fornecidas em todas as solicitações.
Variável de modo de autenticação (opcional, compatível com versões anteriores)
| Variável | Descrição |
|---|---|
authMode | "application" ou "delegated". Opcional: o padrão é "application" quando omitido, para que instalações existentes continuem funcionando sem alterações. |
Variáveis de aplicativo necessárias se authMode=application
| Variável | Descrição |
|---|---|
tenantId | ID do locatário do diretório Microsoft Entra |
clientId | ID do cliente do aplicativo Microsoft Entra |
clientSecret | Segredo do cliente Microsoft Entra |
Variável delegada necessária se authMode=delegated
| Variável | Descrição |
|---|---|
accessToken | Token do usuário após o login |
Outras variáveis comuns necessárias. Estas dependem do Sharepoint que você está usando.
| Variável | Descrição |
|---|---|
siteId | ID completo do site do Sharepoint |
driveId | ID do drive do Sharepoint |
listId | ID da lista do Sharepoint |
🧰 Ferramentas MCP disponíveis
📁 Pastas
getFolders
Lista pastas em um caminho determinado.
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "path",
"type": "string",
"required": "true",
"description": "The path in SharePoint to retrieve folders from",
"example": "cartella_1/cartella_2"
}
createFolder
Cria uma nova pasta.
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "path",
"type": "string",
"required": "true",
"description": "The parent path where the folder will be created",
"example": "cartella_1/cartella_2"
},
{
"name": "folderName",
"type": "string",
"required": "true",
"description": "The name of the new folder to create",
"example": "cartella_3"
}
deleteFolder
Exclui uma pasta somente se estiver vazia.
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "path",
"type": "string",
"required": "true",
"description": "The path to the folder to delete",
"example": "cartella_1/cartella_2/cartella_3"
}
getFolderTree
Obtém a estrutura da árvore de pastas.
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "path",
"type": "string",
"required": "false",
"description": "The starting path (default: 'root')",
"example": "cartella_1/cartella_2"
},
{
"name": "maxDepth",
"type": "number",
"required": "false",
"description": "Maximum depth to traverse (default: 3)",
"example": 5
}
📄 Documentos
getDocuments
Lista documentos em uma pasta.
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "path",
"type": "string",
"required": "true",
"description": "The path in SharePoint to retrieve documents from",
"example": "cartella_1/cartella_2"
}
getDocumentContent
Obtém e extrai o conteúdo textual de um documento.
Formatos suportados:
- PDFs nativos
- Word / Excel / PowerPoint (convertidos para PDF via Graph)
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "filePath",
"type": "string",
"required": "true",
"description": "The path to the file",
"example": "cartella_1/cartella_2/file.txt"
}
uploadDocument
Envia um novo documento.
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "filePath",
"type": "string",
"required": "true",
"description": "The path where the file will be uploaded",
"example": "cartella_1/cartella_2"
},
{
"name": "content",
"type": "string",
"required": "true",
"description": "The string or base64-encoded content of the file to upload",
"example": "Questo è il testo del doc .txt"
},
{
"name": "contentType",
"type": "string",
"required": "false",
"description": "The MIME type of the content (default: 'application/octet-stream')",
"example": "application/octet-stream"
},
{
"name": "overwrite",
"type": "boolean",
"required": "false",
"description": "Whether to overwrite existing files (default: false)",
"example": true
}
updateDocumentContent
Atualiza completamente um documento existente.
⚠️ A operação substitui todo o conteúdo do arquivo.
⚠️ A operação falha se o arquivo não existir.
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "filePath",
"type": "string",
"required": "true",
"description": "The path to the existing file to update",
"example": "cartella_1/cartella_2"
},
{
"name": "content",
"type": "string",
"required": "true",
"description": "The new string or base64-encoded content of the file",
"example": "Questo è il nuovo testo del doc .txt"
},
{
"name": "contentType",
"type": "string",
"required": "false",
"description": "The MIME type of the content (default: 'application/octet-stream')",
"example": "application/pdf"
}
deleteDocument
Exclui um documento (movido para a lixeira do SharePoint).
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "driveId",
"type": "string",
"required": "true",
"description":" The ID of the drive within the SharePoint site",
"example": "f!aB12Cd34E5f6aB12cd34E5f6abd37cD37aB12Cd34E5f6aB12cd34E5f6abd3712"
},
{
"name": "filePath",
"type": "string",
"required": "true",
"description": "The path to the file to delete",
"example": "cartella_1/cartella_2/file.docx"
},
searchDocumentsByKeywords
Busca por documentos que contenham pelo menos uma das palavras-chave no atributo informado.
Entrada:
{
"name": "authMode",
"type": "string",
"required": "true",
"description": "auth mode to use",
"example": "application" || "delegated"
},
{
"name": "accessToken",
"type": "string",
"required": "false (true if authMode=delegated)",
"description": "access token of user login",
"example": "eyJ0eXAiOiJKV1Q..."
},
{
"name": "clientId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The application (client) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "clientSecret",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The client secret",
"example": "1~A1B~aB12Cd34E5f6aB12cd34E5f6ab~d37cD37"
},
{
"name": "tenantId",
"type": "string",
"required": "false (true if authMode=application)",
"description": "The directory (tenant) ID",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "siteId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint site",
"example": "namexyz.sharepoint.com,ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6,fb12cd34-e5f6-g7h8-i9j9-ab12cd34e5f9"
},
{
"name": "listId",
"type": "string",
"required": "true",
"description": "The ID of the SharePoint list to search in",
"example": "ab12cd34-e5f6-g7h8-i9j9-ab12cd34e5f6"
},
{
"name": "keywords",
"type": "Array<string>",
"required": "true",
"description": "Array of keywords to search for",
"example": ["word_1", "word_2", "word_3"]
},
{
"name": "attributeName",
"type": "string",
"required": "true",
"description": "The document attribute/column to search in",
"example": "name"
},
🚀 Experimente no Aisuru!
Este servidor MCP é facilmente integrado ao aisuru, nossa plataforma de agentes de IA onde você pode criar, testar e implantar agentes inteligentes com acesso a ferramentas poderosas como este servidor mcp-sharepoint.

Visite Aisuru.com para começar a criar com seus agentes hoje mesmo!
⚠️ Limitações conhecidas
- Atualizações parciais de documentos não são suportadas
- Arquivos grandes (>4MB) exigem sessões de upload (ainda não implementado)
- A extração de texto de PDFs/Excel complexos pode perder estrutura
🔒 Segurança
- Nunca exponha
client secret,access tokene outras variáveis sensíveis publicamente - Rotacione segredos regularmente
- Conceda as permissões mínimas necessárias do Graph