Okta MCP Server

Permite que modelos de IA interajam com seu ambiente Okta para gerenciar e analisar recursos, projetado para engenheiros de IAM, equipes de segurança e administradores.

Documentação

Okta MCP Server (v0.1.1-BETA)

🔥 ALERTA!!! Um novo MCP Server totalmente reconstruído já está disponível

Uma reescrita completa baseada no novo padrão de arquitetura MCP da Anthropic, com operação em modo duplo, engenharia de contexto, sandbox de segurança aprimorado e suporte Docker pronto para produção.

→ Explorar TAKO MCP Server

O Okta MCP Server é uma ferramenta inovadora que permite que modelos de IA interajam diretamente com seu ambiente Okta usando o Model Context Protocol (MCP). Construído especificamente para engenheiros de IAM, equipes de segurança e administradores Okta, ele implementa a especificação MCP para transformar a forma como assistentes de IA podem ajudar a gerenciar e analisar recursos Okta.

Demonstração Rápida

Okta MCP Server Demo

🎉 Novidades na v0.1.1-BETA - Ferramentas Especiais de Nível Empresarial!

Esta versão apresenta ferramentas especiais poderosas que revolucionam as tarefas diárias de administração do Okta:

🔥 NOVO: Ferramentas Especiais - Mudanças de Jogo para Administradores Okta

  • 🎯 Análise Abrangente de Acesso: Ajuda a responder a pergunta mais frequente que os administradores Okta enfrentam. O usuário X pode acessar o aplicativo Y?
  • 🛡️ Avaliação Avançada de Risco de Login: Análise comportamental com detecção de VPN/Tor e verificação de impossibilidade geográfica, que pode ajudar com e-mails de relatórios suspeitos.

💡 Exemplo do Mundo Real - Análise de Acesso:

❓ Question: "Can user john@company.com access the application Salesforce?"

🤖 AI Response (30 seconds): "User John Smith can access Salesforce because: 
1) User is ACTIVE ✅
2) User is assigned via group 'Sales Team' ✅, 
3) Policy allows access with 2FA from corporate network or requires PUSH factor from external locations - user has PUSH enrolled ✅"

⏱️ Manual Process: Navigate Users → Find John → Check Status → Check App 
Assignments → Check Group Memberships → Check Salesforce Assignments → 
Review Access Policies → Check MFA Factors → Correlate Network Rules (10-15 min)

💡 Exemplo do Mundo Real - Avaliação de Risco de Login:

❓ Question: "Is dan@company.com's recent login activity suspicious?"

🤖 AI Response (30 seconds): "LOW RISK - Dan exhibits excellent login 
security patterns: consistent geographic area, same residential ISP, 
stable device fingerprints, normal browser patterns, zero VPN/proxy 
usage, all Okta risk scores LOW ✅"

⏱️ Manual Process: System Logs → Filter User → Check Locations → Review 
IP Addresses → Cross-reference Network Zones → Analyze Device Patterns → 
Check Geographic Impossibility → Review Behavioral Flags (15+ min)

🏗️ Arquitetura Principal

  • 🚀 FastMCP 2.0: Migrado do pacote MCP legado para FastMCP 2.0 para recursos de protocolo de ponta
  • 🧹 Código Mais Limpo: Removida a dependência de tool_registry.py para uma base de código mais simples e sustentável
  • ⚡ Melhor Desempenho: Padrões assíncronos modernos e tratamento otimizado de solicitações

🛠️ Ferramentas Aprimoradas

  • 📝 Reescrita Completa: Todas as ferramentas reescritas com melhores anotações e descrições para compreensão da IA
  • 🛡️ Validação Aprimorada: Tratamento de erros e validação de entrada aprimorados em todas as operações

🔐 Segurança Avançada

  • 🎫 Tokens Bearer: Suporte completo a tokens bearer JWT com validação de jwks_uri
  • 🏢 Autenticação Empresarial: Suporte para fluxos de autenticação empresarial e acesso baseado em escopos

🚀 Pronto para o Futuro

  • 🔌 Pronto para Middleware: Sistema de middleware extensível para processamento personalizado
  • 📡 Evolução do Protocolo: Acesso aos recursos MCP mais recentes à medida que são desenvolvidos e padronizados

📝 Nota: Clientes CLI e recursos de amostragem de IA foram movidos para a pasta _Archived/ devido a conflitos de dependência com pydantic-ai (vulnerabilidade de segurança). Consulte _Archived/README.md para detalhes.

📋 Sumário

 

🔍 O que é o Model Context Protocol?

O Model Context Protocol (MCP) é um padrão aberto que permite que modelos de IA interajam com ferramentas e serviços externos de forma estruturada e segura. Ele fornece uma interface consistente para que sistemas de IA descubram e usem capacidades expostas por servidores, permitindo que assistentes de IA estendam sua funcionalidade além de seus dados de treinamento.

Pense no MCP como o "USB-C da integração de IA" - assim como o USB-C fornece um padrão universal que permite que vários dispositivos se conectem e comuniquem independentemente do fabricante, o MCP cria uma maneira padronizada para modelos de IA descobrirem e interagirem com diferentes serviços sem integração personalizada para cada um. Essa abordagem "plug-and-play" significa que os desenvolvedores podem construir ferramentas uma vez e fazê-las funcionar em vários assistentes de IA, enquanto os usuários se beneficiam de integração perfeita sem se preocupar com problemas de compatibilidade.

Exemplo: "Encontre todos os usuários bloqueados em nosso tenant Okta e crie uma planilha em nossa pasta de Operações de TI no Google Drive com seus nomes, endereços de e-mail e datas do último login." A IA usa o Okta MCP Server para consultar usuários bloqueados e depois passa esses dados para o Google Drive MCP Server para criar a planilha - tudo sem codificação personalizada.

⚠️ IMPORTANTE: Segurança e Limitações

Leia esta seção com atenção antes de usar o Okta MCP Server.

🔄 Fluxo de Dados e Privacidade

Quando você faz uma solicitação, a interação acontece diretamente entre o LLM e as ferramentas Okta MCP - o aplicativo cliente não está mais no meio. Todos os dados retornados por essas ferramentas (incluindo perfis completos de usuários, associações de grupos, etc.) são enviados e armazenados no contexto do LLM durante toda a transação para aquela conversa.

Principais Considerações de Privacidade:

  • O LLM (Claude, GPT, etc.) recebe e processa todos os dados Okta recuperados pelas ferramentas
  • Esses dados permanecem no contexto do LLM durante toda a conversa
  • Você deve estar confortável com seus dados de usuário Okta sendo processados pelos sistemas do provedor do LLM
  • Antes de usar essas ferramentas, certifique-se de estar confortável com os dados Okta sendo enviados aos servidores do modelo de IA

📊 Limitações da Janela de Contexto

O MCP é projetado para fluxos de trabalho leves, semelhantes ao Zapier, não para operações de dados em massa.

Recomendação: Limite as solicitações a menos de 100 entidades por transação. Evite operações que exijam buscar grandes conjuntos de dados ou múltiplas chamadas de API.

Exemplos:

❌ Evite estes tipos de solicitações:

  • "Busque todos os 10.000 usuários do nosso tenant Okta e analise seus padrões de login"
  • "Encontre usuários que não têm o Okta Verify cadastrado como fator"

✅ Melhores abordagens:

  • "Obtenha os 20 usuários criados mais recentemente"
  • "Encontre usuários que não fizeram login há mais de 90 dias, limite aos primeiros 50 resultados"

💡 Para conjuntos de dados maiores e consultas complexas: Considere usar o Agente de IA Okta para consultas e conjuntos de dados maiores. O agente está sendo aprimorado com recursos "acionáveis" semelhantes para lidar com conjuntos de dados maiores e cenários mais complexos em um futuro muito próximo.

🚨 Aviso de Segurança do Transporte HTTP

Os modos de transporte HTTP (tanto Streamable HTTP quanto SSE) apresentam riscos de segurança significativos:

  • Eles abrem servidores HTTP não autenticados com acesso total ao seu tenant Okta
  • Nenhuma autenticação ou autorização é fornecida
  • Qualquer pessoa que possa alcançar a porta de rede pode emitir comandos para seu ambiente Okta
  • EXTREMAMENTE PERIGOSO ao usar acesso HTTP remoto via mcp-remote

Melhor Prática: Use apenas o método de transporte STDIO (modo padrão), a menos que você tenha controles de segurança específicos em vigor e entenda os riscos.

🛠️ Ferramentas Disponíveis

O Okta MCP Server atualmente fornece as seguintes ferramentas:

🔥 Ferramentas Especiais - Aceleradores de Administração Empresarial

Análise de Acesso e Solução de Problemas

  • analyze_user_app_access - Avaliação completa do acesso do usuário ao aplicativo com análise de políticas (substitui 10-15 minutos de navegação manual no Okta Admin Console)

Avaliação de Segurança e Risco

  • analyze_login_risk - Análise abrangente do comportamento de login com detecção de VPN/Tor e verificação de impossibilidade geográfica (responde "Este usuário está comprometido?" instantaneamente)

⚡ Por que Isso Importa: As duas perguntas mais comuns que os administradores Okta enfrentam diariamente são "Por que o usuário X não consegue acessar o aplicativo Y?" e "Esta atividade de login é suspeita?". Essas ferramentas especiais fornecem instantaneamente respostas abrangentes que, de outra forma, exigiriam investigação manual extensa em várias telas de administração Okta, revisões de políticas e análise de logs - transformando investigações de 15+ minutos em insights alimentados por IA em 30 segundos.

📊 Ferramentas Padrão

Gerenciamento de Usuários

  • list_okta_users - Recuperar usuários com opções de filtragem, pesquisa e paginação
  • get_okta_user - Obter informações detalhadas sobre um usuário específico por ID ou login
  • list_okta_user_groups - Listar todos os grupos aos quais um usuário específico pertence
  • list_okta_user_applications - Listar todos os links de aplicativos (aplicativos atribuídos) para um usuário específico
  • list_okta_user_factors - Listar todos os fatores de autenticação cadastrados para um usuário específico

Operações de Grupo

  • list_okta_groups - Recuperar grupos com opções de filtragem, pesquisa e paginação
  • get_okta_group - Obter informações detalhadas sobre um grupo específico
  • list_okta_group_members - Listar todos os membros de um grupo específico
  • list_okta_assigned_applications_for_group - Listar todos os aplicativos atribuídos a um grupo específico

Gerenciamento de Aplicativos

  • list_okta_applications - Recuperar aplicativos com opções de filtragem, pesquisa e paginação
  • list_okta_application_users - Listar todos os usuários atribuídos a um aplicativo específico
  • list_okta_application_group_assignments - Listar todos os grupos atribuídos a um aplicativo específico

Gerenciamento de Políticas e Redes

  • list_okta_policy_rules - Listar todas as regras para uma política específica com condições e ações detalhadas
  • get_okta_policy_rule - Obter informações detalhadas sobre uma regra de política específica
  • list_okta_network_zones - Listar todas as zonas de rede com faixas de IP e detalhes de configuração

Eventos de Log do Sistema

  • get_okta_event_logs - Recuperar eventos de log do sistema Okta com filtragem baseada em tempo e opções de pesquisa

Utilitários de Data e Hora

  • get_current_time - Obter hora UTC atual no formato ISO 8601
  • parse_relative_time - Converter expressões de tempo em linguagem natural para o formato ISO 8601

Ferramentas adicionais para aplicativos, fatores, políticas e operações mais avançadas estão no roteiro e serão adicionadas em versões futuras.

🚀 Início Rápido

Pré-requisitos

✅ Python 3.8+ instalado em sua máquina
✅ Tenant Okta com acesso apropriado à API
✅ Um cliente de IA compatível com MCP (Claude Desktop, Microsoft Copilot Studio, etc.)

⚠️ Nota Importante sobre Compatibilidade de Modelos:
Nem todos os modelos de IA funcionam com este servidor MCP. Os testes foram realizados apenas com:

  • GPT-4.0
  • Claude 3.7 Sonnet
  • Google-2.5-pro

Você deve usar as versões mais recentes dos modelos que suportem explicitamente recursos de chamada de ferramentas/funções. Modelos mais antigos ou sem suporte a chamada de ferramentas não conseguirão interagir com o Okta MCP Server.

🧠 Provedores de IA Suportados

O Okta MCP Server suporta múltiplos provedores de IA através do seu sistema de configuração flexível. Isso permite conectar-se a vários modelos de linguagem de grande escala com base nas suas necessidades específicas e acesso existente.

Provedores Atualmente Suportados:

ProvedorVariável de AmbienteDescrição
OpenAIAI_PROVIDER=openaiConecte-se à API da OpenAI com modelos como GPT-4o. Requer uma chave de API da OpenAI.
Azure OpenAIAI_PROVIDER=azure_openaiUse modelos da OpenAI hospedados no Azure com recursos aprimorados de segurança e conformidade.
AnthropicAI_PROVIDER=anthropicConecte-se aos modelos Claude da Anthropic (testado principalmente com Claude 3.7 Sonnet).
Google Vertex AIAI_PROVIDER=vertex_aiUse os modelos Gemini do Google via Vertex AI. Requer conta de serviço do Google Cloud.
Compatível com OpenAIAI_PROVIDER=openai_compatibleConecte-se a qualquer endpoint compatível com a API da OpenAI, como Fireworks.ai, Ollama ou outros provedores que implementem a especificação da API da OpenAI.

Instalação

# Clone the repository
git clone https://github.com/fctr-id/okta-mcp-server.git
cd okta-mcp-server

# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate  # On Windows use: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

⚠️ AVISO: Se você clonar este repositório novamente ou puxar atualizações, sempre execute novamente pip install -r requirements.txt para garantir que todas as dependências estejam atualizadas.

Configuração e Uso

Crie um arquivo de configuração com suas configurações do Okta:

📝 Nota: Clientes CLI independentes foram arquivados. Para integração com hosts MCP (Claude Desktop, VS Code, etc.), use o servidor diretamente com a configuração JSON abaixo.

Transportes Suportados e Inicialização

O Okta MCP Server suporta múltiplos protocolos de transporte:

1. Entrada/Saída Padrão (STDIO) - Recomendado

  • Segurança: ✅ Comunicação direta através de fluxos padrão de entrada/saída
  • Caso de uso: Ideal para assistentes de IA de desktop como Claude Desktop
  • Desempenho: ✅ Leve e eficiente
  • Configuração: Para Claude Desktop, adicione em claude_desktop_config.json:
    {
      "mcpServers": {
        "okta-mcp-server": {
          "command": "DIR/okta-mcp-server/venv/Scripts/python",
          "args": [
            "DIR/okta-mcp-server/main.py"
          ],
          "env": {
            "OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com",
            "OKTA_API_TOKEN": "OKTA_API_TOKEN"
          }
        }
      }
    }
    
    Substitua DIR pelo caminho absoluto do seu diretório e OKTA_API_TOKEN pelo seu token real

2. Transporte HTTP Streamable - Padrão Moderno e Atual

Padrão Atual - Transporte HTTP moderno baseado em HTTP com recursos avançados:

  • Recursos: ✅ Streaming de eventos em tempo real, gerenciamento de sessão, suporte a retomada
  • Desempenho: ✅ Melhor escalabilidade e gerenciamento de conexões
  • Caso de uso: Aplicações web modernas e clientes que suportam streaming HTTP
  • Segurança: ⚠️ Servidor HTTP local - seguro em ambientes controlados

Iniciando o Servidor HTTP Streamable:

# Start server with explicit risk acknowledgment
python main.py --http --iunderstandtherisks

# Server will start on http://localhost:3000/mcp
# Connect using streamable HTTP compatible clients

Recursos:

  • ✅ Streaming em tempo real - Atualizações de progresso ao vivo durante operações
  • ✅ Gerenciamento de sessão - Mantém o estado da conexão
  • ✅ Streaming de eventos - Eventos enviados pelo servidor para notificações em tempo real
  • ✅ Melhor tratamento de erros - Respostas de erro detalhadas
  • ✅ Protocolo moderno - Baseado nas especificações MCP mais recentes

3. Acesso HTTP Remoto - Uso Avançado de Alto Risco

⚠️ EXTREMAMENTE PERIGOSO - LEIA COM ATENÇÃO

Para clientes MCP que não suportam nativamente conexões remotas, você pode usar mcp-remote via NPX:

Pré-requisitos:

  • Node.js e NPM instalados
  • Okta MCP Server rodando em modo HTTP

Configuração:

# 1. Install mcp-remote globally
npm install -g @anthropic/mcp-remote

# 2. Start your Okta MCP Server in HTTP mode
python main.py --http --iunderstandtherisks

# 3. Configure your MCP client (e.g., Claude Desktop)

Configuração do Claude Desktop:

{
  "mcpServers": {
    "okta-mcp-server": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:3000/mcp"
      ],
      "env": {
        "OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com",
        "OKTA_API_TOKEN": "your_actual_api_token"
      }
    }
  }
}

🚨 AVISOS CRÍTICOS DE SEGURANÇA:

  • NUNCA use em ambientes de produção
  • NUNCA exponha a porta HTTP (3000) a redes públicas
  • QUALQUER PESSOA com acesso à rede pode controlar seu tenant Okta
  • Sem proteção de autenticação ou autorização
  • Todas as operações do Okta são expostas sem restrições
  • Use apenas em ambientes de desenvolvimento isolados e seguros
  • Considere esta abordagem somente se o transporte STDIO for absolutamente inviável

Quando você pode precisar desta abordagem:

  • Testar integrações MCP que exigem transporte HTTP
  • Aplicações clientes específicas que não podem usar STDIO
  • Cenários de desenvolvimento que exigem depuração HTTP
  • NUNCA para ambientes de produção ou compartilhados

4. Eventos Enviados pelo Servidor (SSE) - Obsoleto

⚠️ OBSOLETO: O transporte SSE está obsoleto e não é recomendado para novas implementações.

# Run in SSE mode (requires explicit risk acknowledgment)
python main.py --sse --iunderstandtherisks
  • Caso de uso: Clientes MCP legados que exigem especificamente SSE (não recomendado)
  • Segurança: ⚠️ Mesmos riscos de segurança HTTP do Streamable HTTP
  • Recomendação: Use o transporte Streamable HTTP para todas as novas implementações

5. Implantação com Docker

O Okta MCP Server fornece imagens Docker para todos os tipos de transporte, oferecendo opções de implantação em contêineres.

Executando Contêineres Docker

Transporte STDIO (Recomendado): Para Claude Desktop ou outros clientes MCP, configure para usar o contêiner Docker:

{
  "mcpServers": {
    "okta-mcp-server": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "OKTA_CLIENT_ORGURL",
        "-e", "OKTA_API_TOKEN",
        "fctrid/okta-mcp-server:stdio"
      ],
      "env": {
        "OKTA_CLIENT_ORGURL": "https://your-org.okta.com",
        "OKTA_API_TOKEN": "your_api_token"
      }
    }
  }
}

Transporte HTTP Streamable (Padrão Atual):

# Start the HTTP container
docker run -d --name okta-mcp-http \
  -p 3000:3000 \
  -e OKTA_API_TOKEN=your_api_token \
  -e OKTA_CLIENT_ORGURL=https://your-org.okta.com \
  fctrid/okta-mcp-server:http

# Configure your MCP client to connect to http://localhost:3000/mcp

Transporte SSE (Obsoleto - Não Recomendado):

# Start the SSE container (deprecated)
docker run -d --name okta-mcp-sse \
  -p 3000:3000 \
  -e OKTA_API_TOKEN=your_api_token \
  -e OKTA_CLIENT_ORGURL=https://your-org.okta.com \
  fctrid/okta-mcp-server:sse

# Configure your MCP client to connect to http://localhost:3000/sse

Construindo Imagens Localmente:

# Build all variants
docker build --target stdio -t okta-mcp-server:stdio .
docker build --target http -t okta-mcp-server:http .
docker build --target sse -t okta-mcp-server:sse .

⚠️ Bom Saber

Versão Beta 🧪

  • Arquitetura completamente reescrita com FastMCP 2.0
  • Estabilidade e desempenho aprimorados em comparação com versões alfa anteriores
  • Sistema abrangente de ferramentas com integração de IA aprimorada
  • Mais adequado para ambientes de desenvolvimento e teste
  • Prontidão para produção em avaliação com recursos de segurança aprimorados

Segurança em Primeiro Lugar 🛡️

  • Projetado para operação com privilégios mínimos
  • Acesso somente leitura padrão aos recursos do Okta
  • Futuras operações de escrita exigirão fluxos de aprovação explícitos

Limitações Atuais 🔍

  • Começando com um conjunto limitado de ferramentas somente leitura para usuários e grupos
  • Planejando expandir a cobertura da API rapidamente nas próximas versões
  • Algumas relações complexas do Okta ainda não expostas
  • Desempenho com instâncias muito grandes do Okta ainda não otimizado
  • Requer acesso direto à rede para endpoints da API do Okta

🗺️ Roadmap

v0.1.0-BETA - Atual (GRANDE REFORMA ARQUITETURAL!)

  • Migração completa para a arquitetura FastMCP 2.0
  • Reescrita abrangente de todas as ferramentas com anotações aprimoradas
  • Novo cliente CLI unificado suportando múltiplos transportes
  • Eliminada a dependência de tool_registry.py para um código mais limpo
  • Suporte avançado a tokens bearer com validação jwks_uri
  • Tratamento de erros e validação significativamente aprimorados
  • Otimizações de desempenho e padrões assíncronos modernos

v0.3.0 - Anterior

  • Suporte a transporte HTTP Streamable
  • Streaming de eventos em tempo real
  • Gerenciamento de sessão e retomada
  • Aplicações clientes aprimoradas

Planos futuros incluem:

  • Operações completas do ciclo de vida do usuário
  • Gerenciamento de atribuição de aplicativos
  • Operações de associação a grupos
  • Registro e verificação de fatores
  • Gerenciamento de políticas e regras
  • Fluxos de aprovação para operações sensíveis
  • Opções de aprovação multicanal (web, e-mail, Slack)
  • Registro de auditoria e relatórios de conformidade
  • Integração de logs do sistema
  • Geração de insights de segurança
  • Suporte multi-tenant
  • Controle de acesso baseado em funções

🆘 Precisa de Ajuda?

Antes de abrir uma issue, verifique:

  1. 📝 Configuração do servidor
  2. 🔑 Permissões da API do Okta
  3. 🔌 Compatibilidade do cliente MCP
  4. 📊 Logs do servidor

Ainda com problemas? Abra uma issue no GitHub ou envie um e-mail para support@fctr.io (os tempos de resposta podem variar)

💡 Solicitações de Recursos e Ideias

Tem uma ideia ou sugestão? Abra uma solicitação de recurso no GitHub!

👥 Colaboradores

Interessado em contribuir? Adoraríamos ter você! Entre em contato pelo e-mail info@fctr.io para oportunidades de colaboração.

⚖️ Questões Legais

Confira License.md para os detalhes legais.


🌟 © 2025 Fctr Identity. Todos os direitos reservados. Feito com ❤️ para as comunidades Okta e IA.