Skip to main content

MCP Server

O Portal disponibiliza um servidor MCP (Model Context Protocol) completo que permite que LLMs e agentes de IA controlem dispositivos, automações, scripts, dashboards e muito mais — tudo usando linguagem natural.

O que e o MCP?

O Model Context Protocol (MCP) e um protocolo aberto que padroniza como aplicações de IA se conectam a fontes de dados e ferramentas externas. O Portal implementa um MCP Server com Streamable HTTP transport, expondo mais de 55 ferramentas que cobrem todas as funcionalidades da plataforma. Com isso, você pode usar assistentes como Claude Code CLI, Gemini CLI ou qualquer agente compatível com MCP para controlar sua casa inteligente por texto.

Endpoint

https://portal.unicontrol.me/v1/mcp
O transporte utilizado e Streamable HTTP — o padrão recomendado pelo MCP para servidores remotos.

Autenticação

O MCP Server utiliza OAuth 2.1 via Logto. A autenticação e automática: ao conectar um cliente MCP pela primeira vez, o fluxo OAuth será iniciado no navegador para autorizar o acesso. Não e necessário configurar tokens manualmente — o protocolo MCP OAuth cuida de tudo.

Ferramentas Disponíveis

O servidor expoe as seguintes ferramentas, organizadas por domínio:

Dispositivos e Entidades

FerramentaDescrição
list_devicesListar todos os dispositivos
get_deviceObter detalhes de um dispositivo
list_entitiesListar todas as entidades
get_entity_stateObter estado de uma entidade
get_all_statesObter estados de todas as entidades
call_serviceChamar um serviço (light, switch, cover, climate, fan, media_player, etc.)

Automações

FerramentaDescrição
list_automationsListar todas as automações
get_automationObter detalhes de uma automação
create_automationCriar uma nova automação
update_automationAtualizar uma automação existente
delete_automationExcluir uma automação
toggle_automationAtivar/desativar uma automação
trigger_automationExecutar uma automação manualmente

Scripts

FerramentaDescrição
list_scriptsListar todos os scripts
get_scriptObter detalhes de um script
create_scriptCriar um novo script
update_scriptAtualizar um script existente
delete_scriptExcluir um script
trigger_scriptExecutar um script

Tags (NFC/QR Code)

FerramentaDescrição
list_tagsListar todas as tags
create_tagCriar uma nova tag
update_tagAtualizar uma tag
delete_tagExcluir uma tag
simulate_tag_scanSimular a leitura de uma tag

Dashboards

FerramentaDescrição
list_dashboardsListar todos os dashboards
get_dashboardObter detalhes de um dashboard
create_dashboardCriar um novo dashboard
update_dashboardAtualizar um dashboard
delete_dashboardExcluir um dashboard
add_card_to_dashboardAdicionar um card a um dashboard

Transferências

FerramentaDescrição
list_transfersListar transferências
create_transferCriar uma transferência de recurso
accept_transferAceitar uma transferência
reject_transferRejeitar uma transferência
cancel_transferCancelar uma transferência

Organizações

FerramentaDescrição
list_my_organizationsListar suas organizações
get_organization_membersListar membros de uma organização
create_organizationCriar uma organização
invite_to_organizationConvidar membro para organização
list_pending_invitationsListar convites pendentes
accept_organization_invitationAceitar convite de organização
decline_organization_invitationRecusar convite de organização
get_org_permissionsObter permissões da organização
set_org_permissionsDefinir permissões da organização
list_org_sharesListar compartilhamentos da organização
share_resource_with_orgCompartilhar recurso com organização

Suporte

FerramentaDescrição
list_support_ticketsListar tickets de suporte
get_support_ticketObter detalhes de um ticket
create_support_ticketCriar um ticket de suporte
reply_support_ticketResponder a um ticket
upload_support_attachmentEnviar anexo em um ticket

Produtos & Checkout

FerramentaDescrição
list_productsListar todos os produtos disponíveis no catalogo
get_productObter detalhes de um produto pelo ID
list_my_productsListar produtos adquiridos pelo usuário
get_my_productObter detalhes de um produto do usuário pelo UUID
create_product_checkoutCriar sessão de checkout Stripe para comprar um produto

Agendamento

FerramentaDescrição
list_scheduling_event_typesListar tipos de evento disponíveis
get_available_scheduling_timesObter horários disponíveis
create_scheduling_linkCriar link de agendamento
list_scheduling_appointmentsListar agendamentos
cancel_scheduling_appointmentCancelar um agendamento

Conectando o Claude Code CLI

1

Adicionar o servidor MCP

Execute no terminal:
claude mcp add portal --transport streamable-http https://portal.unicontrol.me/v1/mcp
2

Autorizar o acesso

Na primeira vez que você usar uma ferramenta do Portal, o Claude Code abrira automaticamente o navegador para você fazer login e autorizar o acesso via OAuth.
3

Começar a usar

Agora você pode pedir ao Claude para controlar seus dispositivos diretamente:
> Apague todas as luzes da sala
> Crie uma automação que ligue o ar-condicionado às 18h
> Qual o estado do sensor de temperatura do quarto?

Conectando o Gemini CLI

1

Editar o arquivo de configuração

Adicione ao arquivo ~/.gemini/settings.json:
{
  "mcpServers": {
    "portal": {
      "httpUrl": "https://portal.unicontrol.me/v1/mcp"
    }
  }
}
2

Autorizar o acesso

Ao usar uma ferramenta pela primeira vez, o fluxo OAuth será iniciado no navegador.
3

Começar a usar

Use linguagem natural para controlar seus dispositivos pelo Gemini CLI.

Conectando o OpenClaw

O OpenClaw e um assistente pessoal de IA open-source que suporta MCP servers para estender suas capacidades.
1

Editar o arquivo de configuração

Adicione ao arquivo ~/.openclaw/openclaw.json:
{
  "mcpServers": {
    "portal": {
      "url": "https://portal.unicontrol.me/v1/mcp",
      "transport": "streamable-http"
    }
  }
}
2

Reiniciar o OpenClaw

Reinicie o gateway do OpenClaw para que a nova configuração seja carregada.
3

Autorizar o acesso

Na primeira interação com uma ferramenta do Portal, o fluxo OAuth será iniciado no navegador para autenticação.
4

Começar a usar

Agora você pode pedir ao OpenClaw para controlar seus dispositivos usando linguagem natural.

Usando em Agentes Customizados

Você pode conectar qualquer agente ao Portal usando o SDK oficial do MCP.

TypeScript

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://portal.unicontrol.me/v1/mcp")
);

const client = new Client({
  name: "meu-agente",
  version: "1.0.0",
});

await client.connect(transport);

// Listar ferramentas disponiveis
const { tools } = await client.listTools();
console.log(`${tools.length} ferramentas disponiveis`);

// Chamar uma ferramenta
const result = await client.callTool({
  name: "get_all_states",
  arguments: {},
});
console.log(result);

Python

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async with streamablehttp_client("https://portal.unicontrol.me/v1/mcp") as (
    read_stream,
    write_stream,
    _,
):
    async with ClientSession(read_stream, write_stream) as session:
        await session.initialize()

        # Listar ferramentas
        tools = await session.list_tools()

        # Chamar uma ferramenta
        result = await session.call_tool("get_all_states", {})
        print(result)
Para agentes customizados, você precisara implementar o fluxo OAuth 2.1 manualmente ou fornecer um token de acesso válido nos headers da requisição.

Exemplos de Uso

Aqui estão alguns exemplos de comandos em linguagem natural que um agente conectado ao Portal pode executar:
ComandoFerramentas utilizadas
”Apague todas as luzes”list_entitiescall_service
”Qual a temperatura do quarto?”get_entity_state
”Crie uma automação para ligar a luz ao por do sol”create_automation
”Liste meus dispositivos offline”list_devices
”Adicione um card de clima ao dashboard”get_dashboardadd_card_to_dashboard
”Execute o script de bom dia”list_scriptstrigger_script
”Abra um chamado de suporte”create_support_ticket
”Agende uma visita técnica”list_scheduling_event_typesget_available_scheduling_timescreate_scheduling_link
Os agentes de IA entendem contexto. Você pode usar linguagem natural sem precisar saber o nome exato das ferramentas — o agente escolhe automaticamente quais ferramentas usar.