Argonaut
Servidor MCP (stdio) em Python que deixa um agente descobrir, inspecionar e diagnosticar filas e tópicos em Redis Streams, Kafka, RabbitMQ, Amazon SQS e Amazon SNS. As operações de escrita existem para resolver o problema encontrado, sempre atrás de modo, allowlist e confirmação em duas etapas.
Faz par com o Nautilus (MCP de bancos de dados): Nautilus para bases, Argonaut para mensageria.
O que faz
O caso de uso central é diagnóstico: "por que essa fila está crescendo?", "qual consumer group está atrasado?", "o que tem na DLQ?", "por que a mensagem publicada no SNS não chegou na fila X?".
Instalação e execução
Requer Python 3.11+. Dependências com uv.
uv sync --extra all # ou --extra redis / kafka / rabbitmq / aws
ARGONAUT_CONFIG=./argonaut.yaml uv run argonaut
O servidor fala por stdio. Configure-o no seu cliente MCP apontando o comando
para uv run argonaut (ou o console script argonaut) com a variável de ambiente
ARGONAUT_CONFIG e os segredos que o YAML referencia.
Configuração
Um único arquivo YAML descreve defaults e conexões. Segredos sempre por
${VAR} (resolvidos do ambiente) — nunca valores no arquivo. Veja
argonaut.example.yaml. O servidor valida na
inicialização e falha cedo, com mensagens claras.
defaults:
peek: { max_messages: 20, max_payload_bytes: 4096 }
confirm_token_ttl: 120s
audit_log: ./argonaut-audit.jsonl
redact:
json_paths: ["$.customer.document", "$.card.*"]
patterns: [cpf, email, credit_card]
connections:
redis-dev:
type: redis_streams
url: "${REDIS_URL}"
mode: admin
dlq_convention: "{name}:dlq"
Tipos de conexão: redis_streams, kafka, rabbitmq, aws (SQS + SNS juntos).
Tools
| Tool | Modo | O que faz |
|---|---|---|
list_connections |
readonly | Conexões configuradas, com tipo e modo |
list_destinations |
readonly | Filas, tópicos e streams (filtro por glob) |
describe_destination |
readonly | Atributos nativos, DLQ e configuração |
get_stats |
readonly | Profundidade, em voo, idade da mais antiga, taxas |
list_consumer_groups |
readonly | Grupos, membros e estado |
get_consumer_lag |
readonly | Lag por grupo e partição |
get_topology |
readonly | Bindings do RabbitMQ e subscriptions do SNS |
peek_messages |
readonly¹ | Leitura sem consumir |
get_message |
readonly | Uma mensagem por posição (offset, id) |
publish_message |
operator | Publica uma mensagem |
redrive_dlq |
operator | Move mensagens da DLQ de volta à origem |
reset_offsets |
operator | Reposiciona um consumer group |
reclaim_pending |
operator | Reatribui mensagens pendentes travadas (Redis) |
purge |
admin | Esvazia um destino |
create_destination / delete_destination |
admin | Cria/remove destinos |
update_attributes |
admin | Altera retenção, visibility timeout, políticas |
delete_consumer_group |
admin | Remove um grupo inativo |
¹ peek_messages com accept_side_effects=true (leitura que altera estado, como
em SQS e filas clássicas do RabbitMQ) exige modo operator.
Além das tools, o servidor expõe o resource argonaut://{conexão}/{destino} (a
descrição do destino em JSON) e prompts de diagnóstico prontos (investigar_backlog,
analisar_dlq, rastrear_mensagem_sns).
Segurança
O padrão é readonly. Toda escrita exige três coisas:
- Modo por conexão (readonly ⊂ operator ⊂ admin): produção nasce readonly; promover é mudança de config, nunca de runtime.
- Allowlist/denylist por glob: destino negado não aparece nem na listagem.
- Confirmação em duas etapas: a 1ª chamada roda em dry-run e devolve o impacto ("vai apagar 48.213 mensagens de orders.dlq") e um token com TTL curto, vinculado ao hash dos argumentos; a execução só acontece na 2ª chamada com esse token.
Além disso: payloads truncados e com dados sensíveis redigidos antes de
sair; toda MessageView marcada como untrusted (o conteúdo é dado, não instrução);
auditoria JSON lines de toda escrita (inclusive dry-runs); credenciais só por
ambiente, nunca em respostas, erros ou logs.
Desenvolvimento
uv sync --extra dev
uv run pytest tests/unit tests/contract # sem Docker (fakes)
uv run pytest -m integration # brokers reais (Docker)
A peça central de teste é uma suíte de contrato parametrizada por adapter: o mesmo cenário (criar destino, publicar, stats, peek, lag, redrive, purge) roda em todos. Um broker novo só entra quando passa nela.
Fora de escopo na v1
Ser consumidor/worker de produção; gestão de usuários e ACLs dos brokers; provisionamento de clusters; monitoramento contínuo e alertas; decodificação de Avro/Protobuf no Kafka; replay de tópicos FIFO do SNS; transporte HTTP remoto.
Metadata
Release files for argonaut-mcp-server 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| argonaut_mcp_server-0.1.1.tar.gz | 137.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| argonaut_mcp_server-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 184.3 kB
Release files / argonaut_mcp_server-0.1.1.tar.gz
| Download URL | argonaut_mcp_server-0.1.1.tar.gz |
|---|---|
| Size | 137.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d970a01f16b5adba1277c5508d210226a99a98ca5c04ea082b6916f6467fa8d9
|
|
BLAKE2b-256 checksum How to use checksums |
616614054bc7fc8e37c9a99854676839084bb0aea785b4fe9ac69527b12e0ce6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logRelease files / argonaut_mcp_server-0.1.1-py3-none-any.whl
| Download URL | argonaut_mcp_server-0.1.1-py3-none-any.whl |
|---|---|
| Size | 46.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c95e34c4a9b0060f75045683d96bd38b8c09325f307ea6164b0234552224aef8
|
|
BLAKE2b-256 checksum How to use checksums |
50449a0c6617c8d120fab8d23b7189014ae55500b70cbbe24624a1d7b9e8b5c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logSecurity for argonaut-mcp-server 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for argonaut_mcp_server-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.