SharePoint MCP Server

Navegar e interactuar con sitios y documentos de Microsoft SharePoint.

Documentación

SharePoint MCP Server

Un servidor de Model Context Protocol para navegar e interactuar con sitios y documentos de Microsoft SharePoint.

Este servidor MCP basado en TypeScript proporciona una integración completa de SharePoint a través de Microsoft Graph API, lo que permite:

  • Recursos: Accede a sitios de SharePoint como recursos MCP con metadatos estructurados
  • Herramientas: Busca archivos, lista sitios, explora bibliotecas de documentos y recupera contenido de archivos
  • Autenticación: Flujo seguro de credenciales de cliente OAuth2 con gestión automática de tokens

Características

Recursos

  • Lista los sitios de SharePoint accesibles para la aplicación
  • Accede a la información de sitios individuales mediante URIs sharepoint://site/{siteId}
  • Metadatos de sitio en formato JSON con nombres para mostrar y URLs web

Herramientas

search_files

Busca archivos y documentos en SharePoint mediante la API de búsqueda de Microsoft Graph

  • Parámetros:
    • query (obligatorio): Cadena de consulta de búsqueda
    • limit (opcional): Número máximo de resultados a devolver (por defecto: 10)

list_sites

Lista los sitios de SharePoint accesibles para la aplicación

  • Parámetros:
    • search (opcional): Filtra sitios por nombre para mostrar

get_site_info

Obtiene información detallada sobre un sitio de SharePoint específico

list_site_drives

Lista las bibliotecas de documentos (unidades) en un sitio de SharePoint

  • Parámetros:
    • siteUrl (obligatorio): URL del sitio de SharePoint

list_drive_items

Lista archivos y carpetas en una biblioteca de documentos de SharePoint

  • Parámetros:
    • siteUrl (obligatorio): URL del sitio de SharePoint
    • driveId (opcional): ID de unidad específico (usa la unidad predeterminada si no se especifica)
    • folderPath (opcional): Ruta de carpeta para listar elementos (por defecto: raíz)

get_file_content

Obtiene el contenido de un archivo específico de SharePoint (solo archivos de texto)

  • Parámetros:
    • siteUrl (obligatorio): URL del sitio de SharePoint
    • filePath (obligatorio): Ruta al archivo
    • driveId (opcional): ID de unidad específico (usa la unidad predeterminada si no se especifica)

Requisitos previos

Registro de aplicación en Azure

  1. Registra una aplicación en Azure Active Directory
  2. Configura los permisos de API:
    • Microsoft Graph: Sites.Read.All (permiso de aplicación)
    • Microsoft Graph: Files.Read.All (permiso de aplicación)
  3. Concede el consentimiento del administrador para los permisos
  4. Crea un secreto de cliente

Variables de entorno

Establece las siguientes variables de entorno:

SHAREPOINT_URL=https://yourtenant.sharepoint.com
TENANT_ID=your-azure-tenant-id
CLIENT_ID=your-azure-app-client-id
CLIENT_SECRET=your-azure-app-client-secret

Desarrollo

Instala las dependencias:

npm install

Compila el servidor:

npm run build

Para desarrollo con recompilación automática:

npm run watch

Pruebas

Prueba el servidor usando el Inspector de MCP:

npm run inspector

El Inspector proporciona una interfaz web para probar todas las herramientas y recursos disponibles.

Instalación

Configuración de Claude Desktop

Añade el servidor a tu configuración de Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "sharepoint-mcp-server": {
      "command": "node",
      "args": ["/path/to/sharepoint-mcp-server/build/index.js"],
      "env": {
        "SHAREPOINT_URL": "https://yourtenant.sharepoint.com",
        "TENANT_ID": "your-azure-tenant-id",
        "CLIENT_ID": "your-azure-app-client-id",
        "CLIENT_SECRET": "your-azure-app-client-secret"
      }
    }
  }
}

Instalación global

También puedes instalar el servidor globalmente:

npm install -g .

Luego úsalo directamente:

sharepoint-mcp-server

Arquitectura

El servidor implementa una arquitectura orientada a servicios con una clara separación de responsabilidades:

  • Capa de autenticación: Gestiona la obtención y renovación de tokens OAuth2
  • Cliente de Graph API: Gestiona las solicitudes HTTP a Microsoft Graph API
  • Manejadores de herramientas: Procesan las solicitudes de herramientas MCP y formatean las respuestas
  • Manejadores de recursos: Gestionan los recursos y metadatos de los sitios de SharePoint
  • Manejo de errores: Gestión integral de errores con códigos de error MCP adecuados

Consideraciones de seguridad

  • Utiliza el flujo de credenciales de cliente OAuth2 para una autenticación segura
  • Los tokens se renuevan automáticamente antes de su expiración
  • Todas las solicitudes de API usan HTTPS
  • Los secretos de cliente deben almacenarse de forma segura y nunca enviarse al control de versiones
  • Los permisos de aplicación requieren consentimiento del administrador en Azure AD

Solución de problemas

Problemas comunes

  1. Errores de autenticación: Verifica el registro de la aplicación en Azure y los permisos
  2. Acceso al sitio: Asegúrate de que la aplicación tenga los permisos adecuados de SharePoint
  3. Problemas de red: Comprueba la configuración del firewall para el acceso a Microsoft Graph API

Modo de depuración

Establece la variable de entorno para un registro detallado:

DEBUG=sharepoint-mcp-server

Contribuciones

  1. Sigue las mejores prácticas de TypeScript
  2. Mantén un manejo integral de errores
  3. Añade pruebas para nuevas funcionalidades
  4. Actualiza la documentación para cambios en la API

Licencia

Este proyecto está licenciado bajo la Mozilla Public License 2.0. Consulta el archivo LICENCIA para más detalles.

Contribuciones

¡Agradecemos las contribuciones! Por favor, sigue estas pautas:

Para empezar

  1. Haz un fork del repositorio
  2. Crea una rama de características (git checkout -b feature/amazing-feature)
  3. Realiza tus cambios
  4. Añade pruebas para nuevas funcionalidades
  5. Asegúrate de que todas las pruebas pasen (npm test)
  6. Confirma tus cambios (git commit -m 'Add amazing feature')
  7. Sube la rama (git push origin feature/amazing-feature)
  8. Abre una solicitud de extracción

Pautas de desarrollo

  • Sigue las mejores prácticas de TypeScript y mantén la seguridad de tipos
  • Implementa un manejo integral de errores con códigos de error MCP adecuados
  • Añade comentarios JSDoc para todos los métodos y clases públicos
  • Mantén la arquitectura orientada a servicios con una clara separación de responsabilidades
  • Sigue los principios SOLID y mantén las funciones enfocadas y comprobables
  • Actualiza la documentación para cualquier cambio en la API

Estilo de código

  • Usa el modo estricto de TypeScript
  • Sigue el formato de código y las convenciones de nomenclatura existentes
  • Elimina importaciones y variables no utilizadas
  • Usa nombres descriptivos para variables y funciones
  • Prefiere la composición sobre la herencia

Pruebas

  • Añade pruebas unitarias para nuevas funcionalidades
  • Prueba condiciones de error y casos límite
  • Asegúrate de que la suite de pruebas básica pase
  • Prueba con entornos reales de SharePoint cuando sea posible

Documentación

  • Actualiza README.md para nuevas características o cambios de configuración
  • Añade comentarios JSDoc para nuevas APIs públicas
  • Incluye ejemplos para funcionalidades complejas
  • Actualiza el registro de cambios para cambios significativos

Registro de cambios

[0.1.0] - Versión inicial

  • Integración básica de SharePoint mediante Microsoft Graph API
  • Soporte para búsqueda de archivos en SharePoint
  • Capacidades de listado y navegación de sitios
  • Acceso a bibliotecas de documentos y recuperación de contenido de archivos
  • Autenticación OAuth2 con credenciales de cliente
  • Soporte de recursos MCP para sitios de SharePoint
  • Manejo integral de errores y registro

Soporte

Si encuentras problemas o tienes preguntas:

  1. Consulta la sección de solución de problemas en este README
  2. Busca en los problemas existentes de GitHub
  3. Crea un nuevo problema con información detallada sobre tu caso
  4. Incluye registros y configuración relevantes (sin información sensible)

Agradecimientos

  • Construido con el SDK de Model Context Protocol
  • Utiliza Microsoft Graph API para la integración con SharePoint
  • Inspirado en la comunidad y el ecosistema de MCP