Foreman MCP Server

Servidor MCP para gerenciamento de hosts Foreman e automação de infraestrutura.

Documentação

Servidor MCP Foreman

Python 3.10+ License: MIT Pylint Safety Security Scan Dependency Security Check

Servidor MCP para gerenciamento de hosts Foreman e automação de infraestrutura.

Recursos

  • Listar e pesquisar hosts do Foreman
  • Obter informações detalhadas do host
  • Pesquisar por localização, SO e ambiente
  • Configuração genérica via variáveis de ambiente

Instalação

Do PyPI (Recomendado)

pip install foreman-mcp-server

Do código-fonte

git clone https://github.com/rorymcmahon/foreman-mcp-server.git
cd foreman-mcp-server
pip install -e .

## Configuration

Set the following environment variables:

- `FOREMAN_URL`: Base URL of your Foreman instance (e.g., `https://foreman.example.com`)
- `FOREMAN_USERNAME`: Foreman username
- `FOREMAN_PASSWORD`: **Personal Access Token** (not your web login password - create this in User Administration → Personal Access Tokens)
- `FOREMAN_VERIFY_SSL`: Whether to verify SSL certificates (default: `true`)

### Required Permissions

The user account needs the following minimum permissions to use all MCP server tools:

| Resource Type | Permission | Purpose |
|---------------|------------|---------|
| Host | `view_hosts` | List and search hosts, get host details and status |
| Organization | `view_organizations` | List organizations |
| Location | `view_locations` | List locations |
| Hostgroup | `view_hostgroups` | List and search by hostgroups |
| Subnet | `view_subnets` | List subnets and get subnet details |
| Domain | `view_domains` | List domains and get domain details |
| SmartProxy | `view_smart_proxies` | List smart proxies and get proxy details |

### Recommended Roles

Instead of assigning individual permissions, you can use these built-in roles:

| Role | Description | Recommended For |
|------|-------------|-----------------|
| **Viewer** | Read-only access to most Foreman resources | General monitoring and inventory queries |
| **Ansible Tower Inventory Reader** | Specific permissions for inventory access | Automated systems integration |
| **Organization admin** | Full access within assigned organizations | Organization-specific administration |

**Note**: The "Viewer" role provides the most appropriate permissions for this MCP server's read-only operations.

## MCP Configuration

Add to your MCP client configuration:

```json
{
  "foreman-mcp-server": {
    "command": "foreman-mcp-server",
    "env": {
      "FOREMAN_URL": "https://foreman.example.com",
      "FOREMAN_USERNAME": "your-username",
      "FOREMAN_PASSWORD": "your-password",
      "FOREMAN_VERIFY_SSL": "true"
    }
  }
}

Ferramentas Disponíveis

Gerenciamento de Hosts

  • list_hosts(search, per_page, page) - Listar hosts com busca opcional
  • get_host(host_id) - Obter informações detalhadas do host
  • get_host_status(host_id) - Obter informações de status para um host específico

Funções de Busca de Hosts

  • search_hosts_by_location(location, per_page) - Pesquisar por localização
  • search_hosts_by_os(os_name, per_page) - Pesquisar por sistema operacional
  • search_hosts_by_environment(environment, per_page) - Pesquisar por ambiente
  • search_hosts_by_hostgroup(hostgroup, per_page) - Pesquisar por grupo de hosts
  • search_hosts_by_fact(fact_name, fact_value, per_page) - Pesquisar por fatos personalizados

Informações de Infraestrutura

  • list_organizations(per_page) - Listar todas as organizações
  • list_locations(per_page) - Listar todas as localizações
  • list_hostgroups(per_page) - Listar todos os grupos de hosts
  • list_subnets(per_page) - Listar todas as sub-redes
  • get_subnet(subnet_id) - Obter informações detalhadas da sub-rede
  • list_domains(per_page) - Listar todos os domínios
  • get_domain(domain_id) - Obter informações detalhadas do domínio
  • list_smart_proxies(per_page) - Listar todos os smart proxies
  • get_smart_proxy(proxy_id) - Obter informações detalhadas do smart proxy

Gerenciamento de SO

  • list_operatingsystems(per_page) - Listar todos os sistemas operacionais
  • get_operatingsystem(os_id) - Obter informações detalhadas do sistema operacional
  • list_architectures(per_page) - Listar todas as arquiteturas
  • get_architecture(arch_id) - Obter informações detalhadas da arquitetura
  • list_media(per_page) - Listar todas as mídias de instalação
  • get_media(media_id) - Obter informações detalhadas da mídia de instalação

Gerenciamento de Conteúdo

  • list_content_views(per_page) - Listar todas as visualizações de conteúdo
  • get_content_view(cv_id) - Obter informações detalhadas da visualização de conteúdo
  • list_repositories(per_page) - Listar todos os repositórios
  • get_repository(repo_id) - Obter informações detalhadas do repositório
  • list_lifecycle_environments(per_page) - Listar todos os ambientes de ciclo de vida
  • get_lifecycle_environment(env_id) - Obter informações detalhadas do ambiente de ciclo de vida

Desenvolvimento

pip install -e ".[dev]"
pytest

Suporte