Servidor MCP
Conecte Claude, ChatGPT, Cursor, VS Code, Codex ou qualquer cliente MCP ao Beeuni via OAuth ou um token de acesso pessoal. Um único URL dá acesso a todos os projetos que você pode abrir. Nada para instalar.
Experimental. Suas ferramentas podem mudar sem aviso de descontinuação.
O Beeuni tem um servidor MCP hospedado:
https://api.beeuni.ai/v1/mcp
Adicione esse URL a um cliente MCP uma vez. Na primeira chamada, você precisará entrar no Beeuni pelo navegador. Depois disso, o cliente agirá como você, com suas permissões, em todas as contas e projetos que você pode abrir — o mesmo alcance da CLI. O URL não especifica um projeto: as ferramentas recebem um project_id ou um session_id, e list_projects os lista. Não é preciso instalar nada.
Adicionar a um cliente
Todos os clientes abaixo conectam você por OAuth no primeiro uso, a menos que as instruções mencionem um token. Não substitua nada: o URL é o mesmo para todos os projetos.
Claude Code
claude mcp add --transport http beeuni https://api.beeuni.ai/v1/mcp
Execute /mcp no Claude Code e entre na sua conta. Para usar um token de acesso pessoal, adicione --header "Authorization: Bearer $BEEUNI_TOKEN" ao comando.
Claude Desktop e claude.ai
Settings → Connectors → Add custom connector. Cole o URL e entre na sua conta.
ChatGPT
Conectores MCP personalizados exigem o modo de desenvolvedor. De acordo com o guia do modo de desenvolvedor da OpenAI, ative o Developer mode em Settings → Security and login e crie um app no modo de desenvolvedor pela página de plugins do ChatGPT (botão de adição). Insira o URL e escolha a autenticação OAuth. A OpenAI informa os planos e os nomes dos menus, que podem mudar: consulte esse guia se algum rótulo for diferente.
Cursor
Use o botão Add to Cursor em Connect MCP ou adicione o servidor a ~/.cursor/mcp.json (todos os projetos) ou .cursor/mcp.json (um projeto):
{ "mcpServers": { "beeuni": { "url": "https://api.beeuni.ai/v1/mcp" } } }
VS Code
Adicione o servidor a .vscode/mcp.json. O VS Code usa servers, não mcpServers, e precisa de type:
{ "servers": { "beeuni": { "type": "http", "url": "https://api.beeuni.ai/v1/mcp" } } }
Codex
codex mcp add beeuni --url https://api.beeuni.ai/v1/mcp
codex mcp login beeuni
Ou edite ~/.codex/config.toml. Para usar um token de acesso pessoal, indique a variável de ambiente que o contém:
[mcp_servers.beeuni]
url = "https://api.beeuni.ai/v1/mcp"
bearer_token_env_var = "BEEUNI_TOKEN"
Outros clientes
Adicione um servidor MCP remoto (Streamable HTTP) usando o URL. Um cliente que não consegue executar OAuth envia um token de acesso pessoal em um cabeçalho (abaixo).
Abra o menu do espaço de trabalho (o nome do projeto, no canto superior esquerdo) e selecione Connect MCP para copiar o URL e as instruções para Claude, Claude Code, Cursor e Codex.
Fazer login
O servidor usa o fluxo OAuth 2.1 definido pela especificação MCP. O cliente o executa sem precisar de configuração:
- Uma chamada sem token retorna
401comWWW-Authenticate: Bearer resource_metadata="…", scope="beeuni". - O cliente lê o documento RFC 9728 em
/.well-known/oauth-protected-resource/v1/mcp. Ele identifica o Beeuni como servidor de autorização. - O cliente se registra em
POST /v1/oauth/register(RFC 7591). Ele recebe um cliente público que se autentica somente com PKCE. - Você aprova o cliente na tela de consentimento do Beeuni. Um cliente autorregistrado é identificado como Unverified app, junto com o host para o qual ele redireciona você. Aprove-o somente se você mesmo estiver conectando o cliente.
- O cliente troca o código por um token de acesso
beeuni_oat_(válido por 1 hora) e um token de atualização (válido por 30 dias, com rotação a cada uso). Quando o token de acesso expira, o cliente o atualiza sem pedir que você faça login novamente.
Revogar um cliente
Settings → Personal access keys → Connected apps lista todos os apps que você aprovou em todas as suas contas: o nome, onde fazem login e quando estiveram ativos pela última vez. Um cliente MCP autorregistrado é identificado como Unverified app. Revoke access remove sua aprovação e revoga os tokens: a próxima solicitação do cliente falha, e ele precisa pedir sua aprovação novamente. No terminal: beeuni tokens apps ls e beeuni tokens apps rm <client-id>. Ambos funcionam somente em uma sessão do navegador ou com um token de acesso pessoal, nunca com o token do próprio app.
O que um app conectado não pode fazer
O escopo beeuni age em seu nome: um app conectado lê e altera o que você pode ler e alterar. Ele não pode criar uma credencial que dure mais que seu próprio token revogável. Estas rotas retornam 403 para um token beeuni_oat_:
- tokens de acesso pessoal (
POST /v1/accounts/tokens) e tokens de CLI do projeto; - chaves de gateway;
- tokens SCIM;
- clientes OAuth e a rotação dos segredos deles;
- contas de serviço;
- a lista de apps conectados e sua revogação (
/v1/oauth/grants).
Revogue um cliente e o acesso dele será encerrado. Um token de acesso pessoal é diferente: ele não expira, a menos que você passe --expires, e revogar um app não o revoga.
Token de acesso pessoal
Um cliente sem OAuth ou um script envia um token beeuni_pat_ — o token usado pela CLI. Crie um com beeuni tokens new <name> ou em Settings → Personal access keys e, em seguida, envie-o como cabeçalho:
{ "mcpServers": { "beeuni": { "url": "https://api.beeuni.ai/v1/mcp", "headers": { "Authorization": "Bearer beeuni_pat_…" } } } }
Ferramentas
tools/list retorna 23 ferramentas. Os parâmetros marcados com * são obrigatórios.
| Ferramenta | Parâmetros | O que faz |
|---|---|---|
list_projects |
nenhum | Lista todos os projetos que você pode abrir, em todas as suas contas, com seu project_id e sua função. |
start_session |
project_id, prompt, name, agent |
Inicia uma sessão em um projeto com um primeiro prompt. Retorna o session_id. |
send_message |
session_id, text |
Enfileira uma mensagem para uma sessão e inicia a sessão se ela estiver parada. |
read_session |
session_id*, limit, wait_seconds |
Retorna o status de uma sessão, informando se o turno está idle, booting, running ou queued, e suas mensagens mais recentes com a entrada e a saída de cada chamada de ferramenta. limit é 10 por padrão e 100 no máximo. wait_seconds (até 45) aguarda o término do turno. |
list_sessions |
project_id*, limit, cursor |
Lista as sessões que você pode ver em um projeto: id, título, status, agente, proprietário, branch e datas. limit é 20 por padrão e 200 no máximo. |
run_command |
session_id*, command, cwd, timeout_seconds, job_id, cancel |
Executa um comando bash no sandbox de uma sessão e retorna stdout, stderr e o código de saída. Um comando longo retorna um job_id para continuar aguardando. |
read_file |
path*, session_id, project_id, ref, offset, limit |
Lê um arquivo do sandbox de uma sessão ou do repositório git de um projeto em ref. Imagens são retornadas como imagens. |
write_file |
session_id, path, content*, encoding |
Grava um arquivo no sandbox de uma sessão e cria seus diretórios-pai. encoding é utf8 (padrão) ou base64. |
list_files |
path, session_id, project_id, ref, offset |
Lista um diretório do sandbox de uma sessão ou todos os arquivos do repositório de um projeto em um caminho. |
read_skill |
name, file, project_id |
Lista os guias da plataforma Beeuni ou retorna um guia (name) ou um de seus arquivos de referência (file). Com project_id, as skills próprias do projeto são listadas primeiro, e uma skill de projeto name retorna seu SKILL.md e os caminhos de seus arquivos de referência. |
list_connectors |
project_id*, connector |
Lista os conectores de um projeto: slug, provedor, se cada um está connected (utilizável por você agora), quantidade de ações e contas. Com connector, lista todas as contas desse conector. |
search_connector_actions |
project_id*, query, connector, limit |
Encontra ações de conectores por intenção. Retorna tool (<connector>.<action>), risk e uma descrição de uma linha. Nunca retorna schemas. |
describe_connector_action |
project_id, tool |
Retorna o JSON Schema de entrada, o risco e a descrição de uma ação. |
call_connector |
project_id, tool, args, account, reason |
Executa uma ação como você. Retorna os dados e o account que a executou, um resultado de pending_approval com o link de aprovação ou uma recusa com o motivo. |
upload_connector_attachment |
project_id, connector, filename*, content_base64 ou session_id + path |
Prepara um arquivo e retorna a referência {"$beeuni_attachment": "<id>"} para inserir em args. |
connect_connector |
project_id, connector, owner, label |
Retorna o link que uma pessoa abre para conectar a conta do conector. |
search_connector_apps |
project_id, query, limit, cursor |
Pesquisa o catálogo de aplicativos gerenciados dos quais um conector pode ser adicionado. |
add_connector |
project_id*, app ou provider + slug, name, url, transport, endpoint, spec, base_url |
Adiciona um conector ao projeto agora (confirmado em beeuni.yaml em main e depois sincronizado). |
remove_connector |
project_id, connector |
Remove um conector do projeto. |
beeuni |
args*, project_id, session_id |
Executa a CLI real beeuni como você e retorna exit_code, stdout (ou json para saída --json) e stderr. Consulte Executar qualquer comando da CLI. |
search_api |
query*, limit |
Pesquisa as rotas da API Beeuni por palavra-chave. |
describe_api |
method, path |
Retorna os parâmetros, o corpo da solicitação e o schema de resposta de uma rota. |
call_api |
method, path, project_id, query, body |
Chama qualquer rota /v1/ como você. project_id preenche {projectId} no caminho. |
search_api, describe_api e call_api abrangem tudo o que o aplicativo web e a
CLI fazem, pois ambos são clientes da mesma API. call_api
recusa /v1/oauth/* e qualquer caminho que alcance um endpoint MCP. Preencha todos os
outros {placeholder} no caminho por conta própria. Cada chamada usa a mesma
autorização e auditoria de uma solicitação do aplicativo web. A auditoria registra cada
chamada com credential_kind: "oauth_app" e o nome do aplicativo conectado, pois
a API registra a credencial que autenticou, não um rótulo enviado pelo cliente.
Executar qualquer comando da CLI
A ferramenta beeuni executa a CLI beeuni real como você. Todo comando da CLI
funciona por meio dela, então o servidor MCP tem o mesmo alcance de um terminal:
secrets, triggers, cr, review, lembretes, agentes, modelos, gateway,
provedores, canais, sandboxes, aplicativos, marketplace, arquivos, acesso, funções,
permissões, auditoria, concessões, membros, grupos, tokens, cobrança, projetos,
sessões e system-skills. Uma ferramenta substitui cerca de 200 ferramentas de
subcomandos, o que ultrapassaria o limite de ferramentas de clientes como o Cursor.
args são os argumentos após beeuni, um elemento do array por argumento. Nunca é
uma linha de shell.
{ "name": "beeuni", "arguments": { "args": ["--help"] } }
{ "name": "beeuni", "arguments": { "args": ["secrets", "ls", "--json"], "project_id": "<project_id>" } }
{ "name": "beeuni", "arguments": { "args": ["triggers", "ls", "--json"], "project_id": "<project_id>" } }
{ "name": "beeuni", "arguments": { "args": ["system-skills"] } }
- Descubra com
["--help"]e["<group>", "--help"]. Adicione--jsonà saída que você analisa. project_iddefine o projeto de um comando com escopo de projeto.session_iddefine a sessão de um comando que atua sobre uma.- O resultado é JSON:
exit_code,stdout,stderr. Com--json, a saída do comando chega como um valor JSON emjsonem vez destdout. A saída que não couber é cortada e marcada comotruncated; JSON cortado não é JSON válido, então reduza o comando. Umexit_codediferente de zero é um erro MCP. Cada fluxo é cortado em 24.000 (stdout) e 8.000 (stderr) caracteres, e o resultado informa isso emtruncated. - Um comando que seja executado por mais de aproximadamente 45 segundos é encerrado. O resultado contém
timed_out. - O servidor executa no máximo 4 comandos da CLI simultaneamente. Uma quinta chamada retorna
Busy: tente novamente. - Sessões, arquivos do sandbox e conectores têm ferramentas próprias
(
start_session,run_command,read_file,call_connector). Dê preferência a elas.
A CLI é executada no servidor com seu próprio token, nesta API. Ela não recebe
credenciais do servidor: o ambiente contém apenas seu token, a URL da API, os IDs
do projeto e da sessão, além de um diretório home temporário e um diretório de trabalho vazios.
O servidor remove ambos após o comando. A autorização e a auditoria são da
API: um token externo recebe o mesmo 403 que receberia em um terminal.
Estes comandos são recusados antes de qualquer execução. O erro informa o motivo e a alternativa.
| Comando | Motivo | Use em vez disso |
|---|---|---|
qualquer sinalizador --host ou --host=, hosts |
Direciona a CLI para outro servidor e enviaria seu token para lá. | Este servidor já atua como você. |
login, logout |
Login no navegador e tokens armazenados. | Você está conectado por meio da conexão MCP. |
init, ship, deploy |
Lê ou grava um diretório local. | run_command em um sandbox de sessão, onde o código-fonte está. |
tools |
Lê e edita um beeuni.yaml local, e o servidor não tem um checkout do projeto. |
run_command em um sandbox de sessão: execute beeuni tools ls lá. |
apps deploy |
Faz o deploy de um diretório local, e o servidor não tem nenhum. | run_command em um sandbox de sessão: execute beeuni apps deploy <path> lá. |
env pull, env push |
Grava ou lê um arquivo local. | secrets ls, secrets set KEY=value. |
token, whoami --token-only |
Imprime o token de acesso bruto. | whoami --json. |
update, uninstall |
Altera a máquina que executa a CLI. | Nenhum. |
tui, t, connect, attach, `sessions connect |
shell | forward` |
chat e sessions chat sem --prompt |
Abrem um chat interativo. | start_session, send_message ou adicione --prompt "<text>". |
A auditoria registra um comando da CLI com a mesma credencial de todas as outras chamadas
na conexão (credential_kind: "oauth_app"). Ela não consegue distinguir a ferramenta beeuni
da call_api: ambas acessam a API com seu token.
Skills do projeto
read_skill com um project_id lista as próprias skills do projeto (os
arquivos skills/<slug>/SKILL.md do repositório ou o .beeuni/opencode/skills/ legado) antes dos guias da plataforma. Passe a skill name
para ler seu SKILL.md e os caminhos dos arquivos de referência, e file para ler
uma referência. Você vê as skills permitidas pela sua função e pelas suas concessões.
Use seus conectores
As ferramentas de conector são a beeuni connectors CLI como ferramentas MCP. Elas chamam as mesmas rotas da API que a CLI e o SDK, portanto uma política de conector, uma aprovação e a auditoria funcionam da mesma forma em todas as interfaces.
list_connectorsmostra o que está conectado. Um conector comconnected: falsenão pode executar ações: chameconnect_connector, abra o link retornado e liste novamente.search_connector_actionsencontra uma ação por intenção, por exemplo,send an email.describe_connector_actionretorna seus argumentos.call_connectora executa. O resultado informa oaccountque executou a chamada. Um conector com várias contas e sem uma conta padrão precisa deaccount.- Passe
reasonem uma gravação cujos argumentos sejam apenas IDs (send_draft, exclusão por ID). O aprovador os vê ao lado dos argumentos reais.
Uma política pode reter uma chamada para aprovação. call_connector então retorna
status: "pending_approval" com um approval_url. Uma pessoa o abre e
aprova. Faça a chamada novamente com a mesma ferramenta, os mesmos argumentos e a mesma conta dentro de 15
minutos: a chamada aprovada é executada uma vez. Uma recusa de policy_block é definitiva.
Um resultado com mais de aproximadamente 40.000 caracteres retorna como uma prévia marcada
(data_truncated). Restrinja os argumentos e chame novamente. Para anexar um arquivo,
prepare-o com upload_connector_attachment e coloque a referência retornada em
args. Os conectores com o provedor composio não aceitam referências de anexos.
Tamanho dos resultados e paginação
- O resultado de uma ferramenta é cortado em 60.000 caracteres e termina com
…[truncated at 60000 chars]. read_fileretorna um arquivo de texto longo em páginas de até aproximadamente 50.000 caracteres. Um resultado cortado termina com ooffsetque dá continuidade a ele.offsetignora linhas elimitlimita as linhas retornadas. Um arquivo binário não é retornado como texto: leia-o comrun_command.list_filescorta uma lista longa da mesma forma. Passe ooffsetque ele informa.list_sessionsretornanext_cursorquando há mais sessões. Passe-o de volta comocursor.read_sessionretorna as mensagenslimitmais recentes. Ele corta cada entrada e saída de ferramenta e remove as mensagens mais antigas quando o resultado não cabe (omitted_older).last_turn_errorinforma um turno com falha.- Uma solicitação MCP é respondida em até 55 segundos.
read_sessioncomwait_secondse um sandbox que ainda está iniciando são interrompidos antes disso: chame novamente.
Sandboxes
run_command, read_file, write_file e list_files com um session_id
acessam o sandbox ativo da sessão, da mesma forma que o terminal web e o painel de arquivos.
Os caminhos relativos são resolvidos em /workspace, o checkout git da sessão. Um
sandbox parado é iniciado na primeira chamada. A CLI beeuni no sandbox está
conectada como a sessão. Com um project_id e sem session_id, read_file
e list_files leem o repositório git do projeto e não iniciam nenhum sandbox.
Um comando pode ser executado por vários minutos. Uma chamada de ferramenta aguarda cerca de 50 segundos. Quando o
comando ainda está em execução nesse momento, run_command retorna status: running, um
job_id e a saída até o momento. Chame run_command com esse job_id para continuar aguardando ou com cancel: true para interrompê-lo. timeout_seconds (padrão 600,
máximo 86400) interrompe um comando executado por tempo excessivo, com código de saída 124. A saída
é mantida em ~/.cache/beeuni-mcp/jobs/<job_id>/ no sandbox; o resultado da ferramenta
mostra os últimos 24.000 bytes de cada fluxo. Um sandbox que para encerra também os comandos em execução.
O servidor é sem estado: responde a POST com JSON e a GET e DELETE
com 405.