Skip to main content
Glama
Glean Chatbot

Glean Chatbot

Glean Chatbot

Indexa un pequeño conjunto de contratos internos en Glean, responde preguntas de esos documentos mediante Search + Chat, y expone el mismo flujo como una herramienta MCP (ask_glean).

Requisitos

  • Python 3.10+

  • Una instancia de Glean

  • Un token de la API de indexación

  • Un token de API de cliente con permisos de Search y Chat

Related MCP server: search-context

Configuración

  1. Clona el repositorio y entra en él:

git clone <your-repo-url>
cd glean-chatbot
  1. Instala las dependencias:

pip install -r requirements.txt
  1. Crea un .env a partir del ejemplo y completa sus valores:

# macOS / Linux
cp .env.example .env

# Windows (PowerShell)
copy .env.example .env

Variable

Obligatorio

Finalidad

GLEAN_INSTANCE

sí

Nombre de la instancia (https://<instance>-be.glean.com)

GLEAN_INDEXING_TOKEN

sí

Token de la API de indexación

GLEAN_CLIENT_TOKEN

sí

Token de API de cliente (Search + Chat)

GLEAN_ACT_AS

sí*

Correo del usuario para X-Glean-ActAs (*necesario con un token de cliente global)

GLEAN_DATASOURCE

no

Nombre del origen de datos (por defecto interviewds)

GLEAN_DATASOURCE_DISPLAY

no

Nombre para mostrar en la interfaz de Glean

GLEAN_URL_REGEX

no

Expresión regular del viewURL que debe cumplir cada documento

.env se carga automáticamente mediante config.py (con python-dotenv). No necesitas hacer source de él.

Ejecución

Indexar documentos

python scripts/index_documents.py
# optional: wait until Search can find them
python scripts/index_documents.py --verify

Preguntar desde la CLI

python scripts/ask.py "Who owns the Enronry Tony contract?"
python scripts/ask.py "What must OKLightning Tony deliver before go-live?" --top-k 3

MCP (Cursor)

La configuración del proyecto está en .cursor/mcp.json (ruta absoluta a src/mcp_server.py + variables de entorno). Después de editarla, reinicia Cursor o recarga el MCP. La herramienta se llama ask_glean.

Haz una prueba de humo del servidor por separado:

python src/mcp_server.py

Pruebas

python tests/test_pipeline.py

Sin red; simula Search/Chat.

Cómo funciona

scripts/index_documents.py envía data/documents.json a través de la API de indexación. En el momento de la consulta, src/pipeline.py llama a Search y, solo si hay coincidencias, a Chat con esas coincidencias como contexto de libro cerrado; devuelve una respuesta junto con las fuentes. Tanto la CLI como el MCP usan ese mismo pipeline. Los resultados se limitan a nuestros propios documentos; si Search no devuelve nada, se sugieren títulos de documentos similares en lugar de inventar una respuesta.

Notas / Limitaciones

  • El sandbox compartido ignora datasourcesFilter; filtramos del lado del cliente por el prefijo del id del documento (CUSTOM_<DATASOURCE>_Contract_).

  • La indexación es asíncrona: los documentos pueden tardar unos minutos en ser buscables.

  • Los documentos de la demo utilizan allowAnonymousAccess: true. No incluyas eso en producción.

  • Los viewURL de los documentos deben coincidir con GLEAN_URL_REGEX o la indexación los rechazará.

Consulta DESIGN_NOTE.md para conocer las ventajas e inconvenientes de usar la API y las notas de producción.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants and developer tools to securely access and interact with an organization's enterprise knowledge, documents, and people through natural language while respecting existing access permissions.
    166
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables semantic search across documentation stored in Gemini FileSearchStores, returning AI-generated answers with source citations.
    1
    1
    MIT