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

  1. Acesse o site do Microsoft Entra https://entra.microsoft.com/...
  2. Clique no menu à esquerda em "app registration"
  3. Clique em "New registration"
  4. 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

  1. Acesse o site do Microsoft Entra https://entra.microsoft.com/...
  2. No menu à esquerda, clique em "app registration"
  3. Clique no seu aplicativo registrado na tabela
  4. No segundo menu à esquerda, clique em "API authorizations"
  5. Clique em "Add authorization"
  6. Clique em "Microsoft Graph"
  7. Clique em "Application authorization" ou "Delegated authorization"
  8. Se for sua primeira vez ou se você não está familiarizado com autorizações, digite "sites" na barra de pesquisa
  9. 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

  1. 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

  1. No site do Microsoft Entra https://entra.microsoft.com/, no menu à esquerda, clique em "app registration"
  2. Clique no seu aplicativo registrado na tabela
  3. 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)
  4. Clique em "Client credentials: 0 certificates, 0 secrets"
  5. Clique em "New client secret"
  6. Insira a descrição desejada e o tempo de expiração, e clique em "Add"
  7. 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

  1. O "Value" copiado é o client secret
  2. 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

  1. Acesse o site do Sharepoint https://<DOMAIN_NAME>.sharepoint.com/sites/<SITE_NAME>/...
  2. No menu à esquerda, clique em "Documents"
  3. À direita, após as colunas, clique em "+ Add column"
  4. Selecione o tipo desejado para a nova coluna; uma opção segura é "Multiple lines of text"
  5. Digite o nome da nova coluna; os outros campos são opcionais e não obrigatórios
  6. 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ávelDescriçã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ávelDescrição
tenantIdID do locatário do diretório Microsoft Entra
clientIdID do cliente do aplicativo Microsoft Entra
clientSecretSegredo do cliente Microsoft Entra

Variável delegada necessária se authMode=delegated

VariávelDescrição
accessTokenToken do usuário após o login

Outras variáveis comuns necessárias. Estas dependem do Sharepoint que você está usando.

VariávelDescrição
siteIdID completo do site do Sharepoint
driveIdID do drive do Sharepoint
listIdID 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.

Failed to load image

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 token e outras variáveis sensíveis publicamente
  • Rotacione segredos regularmente
  • Conceda as permissões mínimas necessárias do Graph