MewCP Chef Server MCP
Servidor MCP Chef Server hospedado, sem estado e multilocatário que permite que assistentes de IA gerenciem infraestrutura, nós, cookbooks e fluxos de automação por meio do Chef Server.
GitHub
1
Experimente este MCPPatrocinadoDocumentação
CL Chef Server MCP Server
Um servidor Model Context Protocol (MCP) que expõe a API do Chef Infra Server para operações de API genéricas, sem estado e multi-tenant.
Visão Geral
Este MCP é um servidor de integração para o Chef Infra Server e segue os padrões da Curious Layer:
- Sem estado e multi-tenant por design
- Autenticação por requisição (sem estado de autenticação/sessão compartilhado em memória)
- Cobertura genérica de API para todos os endpoints do Chef Server por meio de chamadas de ferramentas
Autenticação
Todas as ferramentas voltadas ao tenant exigem entrada de autenticação em cada chamada.
Autenticação por Assinatura Chef (padrão)
Use este formato de payload de autenticação em auth_data:
{
"auth_type": "chef-signature",
"user_id": "pivotal",
"private_key": "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----",
"auth_version": "1.3",
"chef_version": "18.0.0",
"server_api_version": "1"
}
Notas:
- private_key_base64 pode ser usado em vez de private_key.
- auth_version suporta 1.3 (recomendado) e 1.0.
Autenticação Básica (para endpoints como /_stats)
{
"auth_type": "basic",
"basic_username": "statsuser",
"basic_password": "your-password"
}
Ferramentas
Este servidor expõe ferramentas dedicadas por funcionalidade de endpoint (em vez de um wrapper genérico).
- health_check
Ferramentas de endpoint global:
- chef_authenticate_user
- chef_get_license
- chef_list_organizations_global
- chef_create_organization_global
- chef_get_organization_global
- chef_update_organization_global
- chef_delete_organization_global
- chef_get_stats
- chef_get_status
- chef_list_users_global
- chef_create_user_global
- chef_get_user_global
- chef_update_user_global
- chef_delete_user_global
- chef_list_user_keys_global
- chef_create_user_key_global
- chef_get_user_key_global
- chef_update_user_key_global
- chef_delete_user_key_global
- chef_get_universe_global
Ferramentas de endpoint de organização:
- chef_list_association_requests
- chef_create_association_request
- chef_delete_association_request
- chef_list_clients
- chef_create_client
- chef_get_client
- chef_update_client
- chef_delete_client
- chef_list_client_keys
- chef_create_client_key
- chef_get_client_key
- chef_update_client_key
- chef_delete_client_key
- chef_list_containers
- chef_create_container
- chef_get_container
- chef_delete_container
- chef_list_cookbook_artifacts
- chef_get_cookbook_artifact
- chef_get_cookbook_artifact_version
- chef_upsert_cookbook_artifact_version
- chef_delete_cookbook_artifact_version
- chef_list_cookbooks
- chef_get_latest_cookbooks
- chef_get_latest_recipes
- chef_get_cookbook
- chef_get_cookbook_version
- chef_upsert_cookbook_version
- chef_delete_cookbook_version
- chef_list_data_bags
- chef_create_data_bag
- chef_get_data_bag
- chef_create_data_bag_item
- chef_delete_data_bag
- chef_get_data_bag_item
- chef_update_data_bag_item
- chef_delete_data_bag_item
- chef_list_environments
- chef_create_environment
- chef_get_default_environment
- chef_get_environment
- chef_update_environment
- chef_delete_environment
- chef_get_environment_cookbook
- chef_resolve_environment_cookbook_versions
- chef_list_environment_cookbooks
- chef_list_environment_nodes
- chef_list_environment_recipes
- chef_get_environment_role_run_list
- chef_list_groups
- chef_create_group
- chef_get_group
- chef_update_group
- chef_delete_group
- chef_list_nodes
- chef_create_node
- chef_get_node
- chef_update_node
- chef_delete_node
- chef_head_node
- chef_list_policies
- chef_list_policy_groups
- chef_get_principal
- chef_get_required_recipe
- chef_list_roles
- chef_create_role
- chef_get_role
- chef_update_role
- chef_delete_role
- chef_list_role_environments
- chef_get_role_environment
- chef_create_sandbox
- chef_commit_sandbox
- chef_list_search_indexes
- chef_search_index
- chef_partial_search_index
- chef_get_updated_since
- chef_list_org_users
- chef_associate_org_user
- chef_get_org_user
- chef_disassociate_org_user
Configuração
pip install -r requirements.txt
Executando o Servidor
# stdio
python server.py
# sse
python server.py --transport sse --host 127.0.0.1 --port 8001
# streamable-http
python server.py --transport streamable-http --host 127.0.0.1 --port 8001
Exemplos de Chamadas de Ferramentas
Requisição de endpoint global
{
"tool": "chef_list_organizations_global",
"arguments": {
"auth_data": "{\"auth_type\":\"chef-signature\",\"user_id\":\"pivotal\",\"private_key\":\"-----BEGIN RSA PRIVATE KEY-----\\n...\\n-----END RSA PRIVATE KEY-----\"}",
"server_url": "https://chef.example.com",
"path_params": "{}",
"query_params": "{}"
}
}
Requisição com escopo de organização
{
"tool": "chef_list_nodes",
"arguments": {
"auth_data": "{\"auth_type\":\"chef-signature\",\"user_id\":\"my-client\",\"private_key\":\"-----BEGIN RSA PRIVATE KEY-----\\n...\\n-----END RSA PRIVATE KEY-----\"}",
"server_url": "https://chef.example.com",
"path_params": "{\"organization\":\"my-org\"}",
"query_params": "{}"
}
}
Requisição de endpoint com autenticação básica
{
"tool": "chef_get_stats",
"arguments": {
"auth_data": "{\"auth_type\":\"basic\",\"basic_username\":\"statsuser\",\"basic_password\":\"secret\"}",
"server_url": "https://chef.example.com",
"path_params": "{}",
"query_params": "{\"format\":\"json\"}"
}
}
Estrutura do Projeto
cl-mcp-chef-server/
|-- server.py
|-- requirements.txt
|-- README.md
`-- chef_server_mcp/
|-- __init__.py
|-- cli.py
|-- config.py
|-- tools.py
|-- schemas.py
`-- service.py
Recursos
- Documentação da API do Chef Infra Server: https://docs.chef.io/server/api_chef_server/
- Documentação do FastMCP: https://gofastmcp.com/v2/getting-started/welcome