hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Enables comprehensive Box file and folder management through the Box API, offering tools for file search, text extraction, AI-based querying, and data extraction. Features include user authentication, file content reading, AI-powered file analysis, folder navigation, and structured data extraction from files.
Caja de servidor MCP
Descripción
MCP Server Box es un proyecto de Python que se integra con la API de Box para realizar diversas operaciones, como búsqueda de archivos, extracción de texto, consultas basadas en IA y extracción de datos. Utiliza la biblioteca box-sdk-gen
y proporciona un conjunto de herramientas para interactuar con los archivos y carpetas de Box.
El Protocolo de Contexto de Modelo (MCP) es un marco diseñado para estandarizar la interacción de los modelos con diversas fuentes y servicios de datos. En este proyecto, MCP se utiliza para facilitar una integración fluida con la API de Box, lo que permite operaciones eficientes y escalables en archivos y carpetas de Box. El proyecto MCP Server Box busca proporcionar una solución robusta y flexible para la gestión y el procesamiento de datos de Box mediante técnicas avanzadas de IA y aprendizaje automático.
Herramientas implementadas
Herramientas de caja
box_who_am_i
Obtenga su información de usuario actual y verifique el estado de la conexión.
Devuelve: cadena de información del usuario
box_authorize_app_tool
Iniciar el proceso de autorización de la aplicación Box.
Devoluciones: Mensaje de estado de autorización
box_search_tool
Buscar archivos en Box.
Parámetros:
query
(str): consulta de búsquedafile_extensions
(List[str], opcional): extensiones de archivo para filtrar porwhere_to_look_for_query
(List[str], opcional): Dónde buscar (NOMBRE, DESCRIPCIÓN, CONTENIDO_DEL_ARCHIVO, COMENTARIOS, ETIQUETA)ancestor_folder_ids
(List[str], opcional): ID de carpeta para buscar dentro
Devoluciones: Resultados de búsqueda
box_read_tool
Leer el contenido de texto de un archivo Box.
Parámetros:
file_id
(str): ID del archivo a leer
Devuelve: Contenido del archivo
box_ask_ai_tool
Pregúntele a Box AI sobre un archivo.
Parámetros:
file_id
(str): ID del archivoprompt
(str): Pregunta para la IA
Devoluciones: Respuesta de IA
box_search_folder_by_name
Localizar una carpeta por nombre.
Parámetros:
folder_name
(str): Nombre de la carpeta
Devuelve: ID de carpeta
box_ai_extract_data
Extraer datos de un archivo usando IA.
Parámetros:
file_id
(str): ID del archivofields
(str): Campos a extraer
Devuelve: Datos extraídos en formato JSON
box_list_folder_content_by_folder_id
Listado del contenido de la carpeta.
Parámetros:
folder_id
(str): ID de la carpetais_recursive
(bool): si se debe enumerar recursivamente
Devuelve: Contenido de la carpeta en formato JSON con id, nombre, tipo y descripción
box_manage_folder_tool
Crear, actualizar o eliminar carpetas en Box.
Parámetros:
action
(str): Acción a realizar: "crear", "eliminar" o "actualizar"folder_id
(str, opcional): ID de la carpeta (obligatorio para eliminar/actualizar)name
(str, opcional): nombre de la carpeta (obligatorio para crear, opcional para actualizar)parent_id
(str, opcional): ID de la carpeta principal (obligatorio para la creación, opcional para la actualización)description
(str, opcional): Descripción de la carpeta (opcional para actualización)recursive
(bool, opcional): si se debe eliminar recursivamente (opcional para eliminar)
Devuelve: Mensaje de estado con detalles de la carpeta
box_upload_file_tool
Subir contenido como archivo a Box.
Parámetros:
content
(str): El contenido que se cargará como archivofile_name
(str): El nombre que se le dará al archivo en Boxfolder_id
(Cualquiera, opcional): El ID de la carpeta a la que cargar
Devuelve: Estado de carga con ID y nombre de archivo
box_download_file_tool
Descargue un archivo de Box y devuelva su contenido.
Parámetros:
file_id
(Cualquiera): El ID del archivo a descargarsave_file
(bool, opcional): si se debe guardar el archivo localmentesave_path
(str, opcional): Ruta donde guardar el archivo
Devuelve: el contenido del archivo como texto, imagen codificada en base64 o mensaje de estado de guardado
Requisitos
- Python 3.13 o superior
- Credenciales de API de Box (ID de cliente, secreto de cliente, etc.)
Instalación
- Clonar el repositorio:Copy
- Instalar
uv
si aún no está instalado:2.1 MacOS+Linux2.2 VentanasCopyCopy - Crea y configura nuestro proyecto:3.1 MacOS+Linux3.1 VentanasCopyCopy
- Cree un archivo
.env
en el directorio raíz y agregue sus credenciales de Box API:Copy
Uso
Ejecución del servidor MCP
Para iniciar el servidor MCP, ejecute el siguiente comando:
Usando a Claude como cliente
- Edite su
claude_desktop_config
.json
- Y añade lo siguiente:
[!NOTA] Si usa MacOS, deberá instalar uv con brew:
brew install uv
o proporcione la ruta completa al ejecutable uv:/Users/shurrey/.local/bin/uv --directory /Users/shurrey/local/mcp-server-box run src/mcp_server_box.py
- Si Claude se está ejecutando, reinícielo.
Usando Cursor como cliente
- Abra su IDE con Cursor
- En configuración, seleccione
Cursor settings
. - En el panel de navegación izquierdo, seleccione
MCP
. - En la parte superior izquierda, seleccione
Add new global MCP server
. - Pasa el siguiente json, asegurándote de actualizarlo con tus valores locales:
- Guarde y cierre el archivo mcp.json y asegúrese de que el servidor MCP esté habilitado. Es posible que tenga que reiniciar.
Ejecución de pruebas
El proyecto incluye un conjunto de pruebas para verificar la funcionalidad de la API de Box. Antes de ejecutarlas, deberá actualizar los ID de los archivos y carpetas de los archivos de prueba para que coincidan con los de su cuenta de Box.
Configuración de pruebas
- Actualizar los ID de archivos y carpetas :
- Cada archivo de prueba (en el directorio
tests/
) contiene identificaciones codificadas para archivos y carpetas de Box - Debe reemplazar estos ID con los ID de archivos y carpetas en su cuenta de Box
- Ejemplo: En
test_box_api_read.py
, reemplace"1728677291168"
con el ID de un archivo en su cuenta de Box
- Cada archivo de prueba (en el directorio
- Referencias de ID de archivo de prueba :
test_box_api_read.py
: necesita un ID de archivo de documento válido (por ejemplo, un documento de Word)test_box_api_search.py
: actualiza las consultas de búsqueda y las extensiones de archivo para que coincidan con tu contenidotest_box_api_ai.py
: Necesita un ID de archivo para probar las capacidades de extracción de IA- Es posible que otros archivos de prueba requieran identificadores de carpeta o tipos de archivos específicos
Ejecución de pruebas
Una vez que haya actualizado los ID de los archivos, puede ejecutar pruebas usando pytest:
Pruebas disponibles
test_box_auth.py
: prueba la funcionalidad de autenticacióntest_box_api_basic.py
: Pruebas básicas de la API de Boxtest_box_api_read.py
: prueba las capacidades de lectura de archivostest_box_api_search.py
: prueba la funcionalidad de búsquedatest_box_api_ai.py
: prueba funciones basadas en IAtest_box_api_file_ops.py
: prueba las operaciones de carga y descarga de archivos
Creación de nuevas pruebas
Al crear nuevas pruebas:
- Siga el patrón en los archivos de prueba existentes
- Utilice el accesorio
box_client
para el acceso a la API autenticado - Limpie cualquier archivo o carpeta de prueba creados durante las pruebas
- Agregue afirmaciones adecuadas para verificar la funcionalidad
Solución de problemas
Si está en MacOS y ejecuta el servidor MCP con Claude Desktop y ve el siguiente error:
Error: spawn uv ENOENT
puedes eliminar uv y reinstalarlo con brew: brew install uv
o proporcionar la ruta completa al ejecutable uv: /Users/shurrey/.local/bin/uv --directory /Users/shurrey/local/mcp-server-box run src/mcp_server_box.py
You must be authenticated.
Tools
Un servidor Python que permite la interacción con archivos y carpetas de Box a través de la API de Box, lo que permite operaciones como búsqueda de archivos, extracción de texto y consultas y extracción de datos basadas en IA.