SideButton

Servidor MCP de código aberto com pacotes de conhecimento, mais de 40 ferramentas de navegador e mecanismo de fluxo de trabalho YAML para agentes de IA.

Documentação

SideButton

Plataforma de agente de IA open-source para codificação agêntica — servidor MCP, pacotes de conhecimento e automação de fluxos de trabalho com IA.

npm License

sidebutton.com · docs.sidebutton.com

SideButton open-source AI agent platform for agentic coding: MCP server, agentic workflows, knowledge packs

Execute agentes de IA de codificação com fluxos de trabalho agênticos, pacotes de conhecimento e controle real do navegador. Conecte Claude Code, Codex, Cursor, ChatGPT ou qualquer cliente MCP.

npx sidebutton@latest
# Dashboard at http://localhost:9876

O que você obtém

Servidor MCPFerramentas de agente de IA para controle do navegador, execução de fluxos de trabalho e acesso a pacotes de conhecimento. Transportes Stdio e SSE.
API RESTAcione fluxos de trabalho remotamente a partir de webhooks, tarefas agendadas, aplicativos móveis ou outros agentes.
Mecanismo de Fluxos de TrabalhoAutomação de fluxos de trabalho com IA usando etapas de navegador, git, rastreamento de issues, LLM, shell e controle de fluxo. Defina fluxos de trabalho agênticos em YAML.
Pacotes de ConhecimentoConhecimento de domínio instalável — seletores CSS, modelos de dados, máquinas de estado. Playbooks de função transformam agentes de codificação em engenheiro de software de IA, QA ou PM.
Extensão do ChromeComandos de navegador com acesso real ao DOM via WebSocket, não capturas de tela. Modo de gravação.
Painel de ControleInterface Svelte — navegador de fluxos de trabalho, logs de execução, gerenciador de pacotes de habilidades, status do sistema.

Início Rápido

# Install and start
npx sidebutton@latest

# Or from source
pnpm install && pnpm build && pnpm start

# Open http://localhost:9876

CLI

pnpm cli serve          # Start server with dashboard
pnpm cli serve --stdio  # Start with stdio transport (for Claude Desktop)
pnpm cli list           # List available workflows
pnpm cli status         # Check server status

# Skill pack management
pnpm cli registry add <path|url>   # Install skill packs from a registry
pnpm cli registry update [name]    # Update installed packs
pnpm cli registry remove <name>    # Uninstall packs and remove registry
pnpm cli search [query]            # Search available skill packs

# Creating skill packs
pnpm cli init [domain]             # Scaffold a new skill pack
pnpm cli validate [path]           # Validate pack structure
pnpm cli publish [source]          # Publish to a registry

Servidor MCP

SideButton é um servidor MCP open-source para agentes de IA de codificação. Os agentes conectam-se diretamente a ele para controle do navegador, automação de fluxos de trabalho e conhecimento de domínio.

Funciona com Claude Code, Codex, Cursor, Claude Desktop, VS Code, Windsurf, ChatGPT — qualquer cliente MCP.

Claude Code

claude mcp add sidebutton --transport http http://localhost:9876/mcp

Persiste em ~/.claude.json; adicione --scope project para gravar em ./.mcp.json em vez disso. Guia completo: Configuração do MCP SideButton para Claude Code.

Codex

Adicione a ~/.codex/config.toml:

[mcp_servers.sidebutton]
command = "sidebutton"
args = ["serve", "--stdio"]

Guia completo: Configuração do MCP SideButton para OpenAI Codex.

Claude Desktop

Adicione a ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sidebutton": {
      "command": "npx",
      "args": ["sidebutton", "--stdio"]
    }
  }
}

Cursor

Adicione a ~/.cursor/mcp.json:

{
  "mcpServers": {
    "sidebutton": {
      "url": "http://localhost:9876/mcp"
    }
  }
}

Ferramentas MCP

FerramentaDescrição
run_workflowExecuta um fluxo de trabalho por ID
get_run_logObtém o log de execução de uma execução
list_workflowsLista todos os fluxos de trabalho disponíveis
get_workflowObtém a definição YAML do fluxo de trabalho
list_run_logsLista execuções recentes de fluxos de trabalho
publish_artifactPublica evidências (capturas de tela, relatórios) de uma sessão
get_browser_statusVerifica a conexão da extensão do navegador
capture_pageCaptura seletores da página atual
navigateNavega o navegador para uma URL
snapshotObtém o snapshot de acessibilidade da página
clickClica em um elemento
typeDigita texto em um elemento
press_keyEnvia teclas do teclado
scrollRola a página
extractExtrai texto de um elemento
screenshotCaptura captura de tela da página (passe path para gravar um arquivo PNG em vez de retornar bytes de imagem)
select_optionSeleciona opção de menu suspenso
fillPreenche valor de entrada (compatível com React)
waitAguarda elemento ou atraso
existsVerifica se o elemento existe
extract_allExtrai todos os elementos correspondentes
extract_mapExtrai dados estruturados de elementos repetidos
scroll_into_viewRola o elemento para o viewport
hoverPassa o mouse sobre o elemento
inject_cssInjeta CSS na página (desfoca/oculta elementos antes de uma captura de tela)
evaluateExecuta JavaScript no navegador
browser_batchExecuta uma sequência de ações do navegador em uma única chamada
set_basic_authDefine credenciais de Autenticação Básica HTTP para a aba conectada
clear_basic_authLimpa credenciais de Autenticação Básica HTTP armazenadas

API REST

Endpoints JSON para integrações externas. Os mesmos fluxos de trabalho estão disponíveis via MCP localmente e via REST remotamente.

# Run a workflow
curl -X POST http://localhost:9876/api/workflows/check_ticket/run \
  -H "Content-Type: application/json" \
  -d '{"params": {"ticket_id": "PROJ-123"}}'

# List workflows
curl http://localhost:9876/api/workflows

# Get run log
curl http://localhost:9876/api/runs/latest

Acione fluxos de trabalho a partir de webhooks, tarefas agendadas, aplicativos móveis ou outros agentes em máquinas diferentes.

Mecanismo de Fluxos de Trabalho

Orquestração YAML-first para fluxos de trabalho agênticos. Tipos de etapas por família:

Tipos de Etapas

FamíliaEtapas
browser.*navigate, click, type, fill, extract, extractAll, extractMap, snapshot, screenshot, wait, exists, hover, key, scroll, scrollIntoView, select_option, injectCSS, injectJS
git.*createPR, getPR, listPRs, getIssue, listIssues
issues.*create, get, search, comment, attach, transition
llm.*classify, decide, generate
control.*if, foreach, retry, stop
shell / terminalshell.run, terminal.open, terminal.run
data.*first, get
workflow.callChama outro fluxo de trabalho com parâmetros

Etapas de LLM funcionam com Ollama (local), OpenAI e Anthropic.

Exemplo

id: check_ticket_status
title: "Check Jira ticket and classify"
steps:
  - type: browser.navigate
    url: "https://your-org.atlassian.net/browse/{{ticket_id}}"
  - type: browser.extract
    selector: "[data-testid='status-field']"
    as: current_status
  - type: control.if
    condition: "{{current_status}} != 'Done'"
    then:
      - type: llm.classify
        prompt: "Should this ticket be closed? Context: {{current_status}}"
        classes: [close, keep_open]
        as: decision

Interpolação de Variáveis

Use a sintaxe {{variable}} para referenciar valores extraídos ou parâmetros:

steps:
  - type: browser.extract
    selector: ".username"
    as: user
  - type: shell.run
    cmd: "echo 'Hello, {{user}}!'"

Pacotes de Conhecimento

Conhecimento de domínio instalável (pacotes de habilidades) por aplicativo web ou domínio. Pacotes de conhecimento potencializam revisão de código com IA, testes automatizados e implantações de agentes de IA empresariais.

Também chamados de pacotes de habilidades no código e nos comandos da CLI.

  • Seletores — seletores CSS para elementos de interface
  • Modelos de dados — tipos de entidade, campos, relacionamentos, estados válidos
  • Máquinas de estado — transições válidas por estado
  • Playbooks de função — procedimentos específicos de função (QA, SE, PM, SD)
  • Tarefas comuns — procedimentos passo a passo, armadilhas, casos extremos
sidebutton install github.com
sidebutton install atlassian.net

Registro aberto com pacotes publicados para aplicativos web populares. Crie e compartilhe pacotes para qualquer domínio.

Extensão do Chrome

Instale a Extensão do Chrome SideButton na Chrome Web Store.

  • Comandos de navegador — navegar, clicar, digitar, extrair, rolar, aguardar, snapshot
  • Acesso real ao DOM via seletores CSS — não coordenadas de pixels, não capturas de tela
  • Modo de gravação — capture ações manuais como fluxos de trabalho
  • Botões incorporados — injete botões de ação em qualquer página web
  • Conexão WebSocket — reconexão estável, funciona com servidor local ou remoto

Após instalar:

  1. Navegue para qualquer site
  2. Clique no ícone da extensão SideButton
  3. Clique em "Conectar Esta Aba"

Painel de Controle e Observabilidade

Interface Svelte em http://localhost:9876:

  • Navegador de fluxos de trabalho — listar, pesquisar, executar
  • Logs de execução — rastreamentos de execução passo a passo com tempo, variáveis, erros
  • Gerenciador de pacotes de habilidades — instalar, navegar, inspecionar
  • Status do sistema — conexão da extensão, configuração de LLM, saúde do servidor

SideButton lida com orquestração multi-agente — da execução de fluxos de trabalho à injeção de conhecimento.

Arquitetura

┌──────────────────────────────────────────────────────────────────────────┐
│                          @sidebutton/server                               │
│                                                                          │
│  ┌─────────────────────┐   ┌──────────────────────────────────────────┐  │
│  │  stdio Transport    │   │    Fastify HTTP + WebSocket (port 9876)  │  │
│  │  ─────────────────  │   │    ────────────────────────────────────  │  │
│  │  stdin → JSON-RPC   │   │  GET  /        → Dashboard (Svelte)      │  │
│  │  stdout ← JSON-RPC  │   │  GET  /ws      → Chrome Extension WS     │  │
│  │  (Claude Desktop)   │   │  POST /mcp     → MCP JSON-RPC (SSE)      │  │
│  └──────────┬──────────┘   │  GET  /api/*   → REST API                │  │
│             │              └──────────────────────┬───────────────────┘  │
│             │                                     │                      │
│             └──────────────────┬──────────────────┘                      │
│                                ▼                                         │
│  ┌────────────────────────────────────────────────────────────────────┐  │
│  │                       @sidebutton/core                              │  │
│  │                                                                     │  │
│  │  - Workflow types & parser (YAML)                                  │  │
│  │  - Step executors (YAML step types)                                │  │
│  │  - Variable interpolation                                          │  │
│  │  - Execution context & events                                      │  │
│  └────────────────────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────────────────────┘
      ▲                ▲                      ▲                      ▲
      │ stdio          │ WebSocket            │ HTTP POST            │ REST
      ▼                ▼                      ▼                      ▼
┌──────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌───────────────────┐
│Claude Desktop│ │ Chrome Extension│ │   Claude Code   │ │   Mobile App      │
│ (MCP stdio)  │ │ (Browser Auto)  │ │   (MCP SSE)     │ │   (REST Client)   │
└──────────────┘ └─────────────────┘ └─────────────────┘ └───────────────────┘

Estrutura do Projeto

sidebutton/
├── packages/
│   ├── core/              # @sidebutton/core — workflow engine
│   │   └── src/
│   │       ├── types.ts       # Workflow types
│   │       ├── parser.ts      # YAML loader
│   │       ├── executor.ts    # Workflow runner
│   │       └── steps/         # Step implementations
│   ├── server/            # @sidebutton/server — MCP + HTTP + CLI
│   │   ├── bin/               # CLI entry point
│   │   └── src/
│   │       ├── server.ts      # Fastify HTTP server
│   │       ├── stdio-mode.ts  # stdio transport entry point
│   │       ├── extension.ts   # WebSocket client
│   │       ├── mcp/           # MCP handlers
│   │       │   ├── handler.ts    # MCP JSON-RPC logic
│   │       │   ├── stdio.ts      # stdio transport adapter
│   │       │   └── tools.ts      # Tool definitions
│   │       └── cli.ts         # Commander CLI
│   └── dashboard/         # Svelte web UI
│       └── src/
│           ├── App.svelte
│           └── lib/
├── extension/             # Chrome extension
├── workflows/             # Public workflow library
├── actions/               # User-created workflows
├── skills/                # Installed skill packs
└── run_logs/              # Execution history

Variáveis de Ambiente

VariávelNecessária ParaDescrição
OPENAI_API_KEYetapas llm.*Chave da API OpenAI para fluxos de trabalho com LLM
ANTHROPIC_API_KEYetapas llm.*Chave da API Anthropic (alternativa)

Desenvolvimento

pnpm install       # Install dependencies
pnpm build         # Build all packages
pnpm start         # Start server
pnpm cli list      # List workflows
pnpm cli status    # Check status

Modo de Observação

pnpm dev              # Full dev mode (all packages)
pnpm dev:server       # Server with auto-restart on :9876
pnpm dev:dashboard    # Dashboard watch build
pnpm dev:core         # Core library watch build

Aviso de Automação de Plataformas

SideButton é uma estrutura de automação de navegador de propósito geral. Ao automatizar plataformas de terceiros:

  • Revise os Termos de Serviço: Muitas plataformas proíbem ou restringem automação. Você é responsável por cumprir os termos de qualquer plataforma que automatizar.
  • Risco de Conta: A automação pode resultar em restrições ou suspensão de conta em algumas plataformas.
  • Use com Responsabilidade: Automatize apenas ações que você realizaria manualmente. Respeite limites de taxa e diretrizes da plataforma.

Os autores não endossam nem incentivam violações dos termos de serviço de terceiros.

Licença

Este projeto usa licenciamento misto — veja LICENSING.md:

  • Mecanismo, servidor, CLI, painel de controle — Apache-2.0
  • Extensão do navegador — FSL-1.1-Apache-2.0 (converte para Apache-2.0 em 2029-03-15)