Skip to main content
Glama

MCP HTTP TAVILY DATE OAUTH

by growley

mcp-http-starter

Servidor/cliente MCP con integración Ollama y TAVILY para búsquedas web inteligentes. Migrado: Ahora usa transporte HTTP requests en lugar de STDIO. NUEVO: Implementación completa de autenticación OAuth2.

Requisitos

  • Python >= 3.12

  • Dependencias: fastmcp, ollama, requests, tavily-python, fastapi, uvicorn, authlib, python-jose, passlib

Instalación (con uv)

uv sync

Configuración

Ollama (opcional)

Para usar el procesamiento con IA local:

  1. Instalar Ollama: https://ollama.com/download

  2. Descargar modelo: ollama pull gpt-oss:20b

  3. Ejecutar servidor Ollama: ollama serve

TAVILY API (recomendado)

Para búsquedas web mejoradas:

  1. Registrarse en: https://tavily.com

  2. Obtener API key gratuita

  3. Configurar variable de entorno:

    set TAVILY_API_KEY=tu_api_key_aqui
  4. Sin API key, usa DuckDuckGo como fallback

Configuración OAuth2 (opcional)

Para habilitar autenticación OAuth2:

  1. Configurar variables de entorno (copia env.example a .env):

    # JWT JWT_SECRET_KEY=tu_clave_secreta_muy_segura_aqui # Google OAuth2 (opcional) GOOGLE_CLIENT_ID=tu_google_client_id GOOGLE_CLIENT_SECRET=tu_google_client_secret # GitHub OAuth2 (opcional) GITHUB_CLIENT_ID=tu_github_client_id GITHUB_CLIENT_SECRET=tu_github_client_secret
  2. Obtener credenciales OAuth2:

Scripts

Servidor HTTP

  • Servidor HTTP: uv run python src/server.py

  • Cliente HTTP: uv run python src/client.py

Clientes de prueba

  • Prueba OAuth2: uv run python test_oauth_client.py

  • Prueba simple: uv run python test_client_simple.py

Herramientas disponibles

1. datetime_now

Devuelve la fecha y hora actuales en formato ISO-8601 (UTC).

2. web_search

Realiza búsquedas web combinando:

  • TAVILY (principal): Optimizada para LLMs, mejor para noticias/deportes

  • DuckDuckGo (fallback): Para consultas generales

  • Ollama (procesamiento): IA local para análisis de resultados

Parámetros:

  • query: Consulta de búsqueda

  • model: Modelo de Ollama a usar (por defecto: "gpt-oss:20b")

Servidor HTTP

El servidor HTTP permite acceso mediante requests HTTP:

Características HTTP

  • Puerto: 8001 (configurable)

  • Endpoints MCP: /mcp (endpoint principal)

  • Endpoints adicionales:

    • / - Información del servidor

    • /health - Estado del servidor

    • /tools - Lista de herramientas (sin MCP)

    • /docs - Documentación automática de FastAPI

Uso del servidor HTTP

  1. Iniciar servidor:

    uv run python src/server.py
  2. Probar con cliente:

    uv run python src/client.py
  3. Acceso directo:

Protocolo MCP sobre HTTP

El servidor mantiene compatibilidad completa con el protocolo MCP pero usando HTTP POST:

# Ejemplo de petición MCP HTTP curl -X POST http://localhost:8001/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": "1", "method": "tools/call", "params": { "name": "datetime_now", "arguments": {} } }'

Autenticación OAuth2

Características de Seguridad

  • Autenticación OAuth2 con múltiples proveedores

  • JWT tokens para acceso seguro

  • Middleware de autenticación automático

  • Roles de usuario (admin, user, readonly)

  • Scopes de permisos (mcp:read, mcp:write)

Endpoints de Autenticación

  • /login - Página de login con proveedores disponibles

  • /auth/providers - Lista de proveedores OAuth2 configurados

  • /auth/{provider} - Iniciar flujo OAuth2

  • /auth/callback/{provider} - Callback OAuth2

  • /auth/token - Refrescar tokens

  • /auth/me - Información del usuario actual

  • /auth/logout - Cerrar sesión

Flujo de Autenticación

  1. Visitar: http://localhost:8001/login

  2. Seleccionar proveedor (Google, GitHub, Microsoft)

  3. Autorizar aplicación en el proveedor

  4. Obtener tokens de acceso y refresco

  5. Usar token en header: Authorization: Bearer <token>

Ejemplo de Uso

# 1. Obtener token (después de OAuth2) curl -X POST http://localhost:8001/auth/token \ -H "Content-Type: application/json" \ -d '{"grant_type": "refresh_token", "refresh_token": "..."}' # 2. Usar token para acceder a MCP curl -X POST http://localhost:8001/mcp \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": "1", "method": "tools/call", "params": {"name": "datetime_now", "arguments": {}} }'

Estructura

  • src/server.py: Servidor MCP HTTP con OAuth2

  • src/client.py: Cliente HTTP (migrado de STDIO)

  • src/auth_models.py: NUEVO Modelos de datos OAuth2

  • src/auth_service.py: NUEVO Servicio de autenticación

  • src/auth_middleware.py: NUEVO Middleware de autenticación

  • src/logger.py: Sistema de logging rotativo

  • logs/: Directorio de logs con rotación automática

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Enables web searches using TAVILY API with fallback to DuckDuckGo, datetime queries, and optional Ollama AI processing. Features HTTP transport with OAuth2 authentication for secure access to search capabilities.

  1. Requisitos
    1. Instalación (con uv)
      1. Configuración
        1. Ollama (opcional)
        2. TAVILY API (recomendado)
        3. Configuración OAuth2 (opcional)
      2. Scripts
        1. Servidor HTTP
        2. Clientes de prueba
      3. Herramientas disponibles
        1. 1. datetime_now
        2. 2. web_search
      4. Servidor HTTP
        1. Características HTTP
        2. Uso del servidor HTTP
        3. Protocolo MCP sobre HTTP
      5. Autenticación OAuth2
        1. Características de Seguridad
        2. Endpoints de Autenticación
        3. Flujo de Autenticación
        4. Ejemplo de Uso
      6. Estructura

        MCP directory API

        We provide all the information about MCP servers via our MCP API.

        curl -X GET 'https://glama.ai/api/mcp/v1/servers/growley/MCP_TAVILI_DATE_OAUT'

        If you have feedback or need assistance with the MCP directory API, please join our Discord server