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, automacoes, 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 aplicacoes 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, voce pode usar assistentes como Claude Code CLI, Gemini CLI ou qualquer agente compativel com MCP para controlar sua casa inteligente por texto.

Endpoint

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

Autenticacao

O MCP Server utiliza OAuth 2.1 via Logto. A autenticacao e automatica: ao conectar um cliente MCP pela primeira vez, o fluxo OAuth sera iniciado no navegador para autorizar o acesso. Nao e necessario configurar tokens manualmente — o protocolo MCP OAuth cuida de tudo.

Ferramentas Disponiveis

O servidor expoe as seguintes ferramentas, organizadas por dominio:

Dispositivos e Entidades

FerramentaDescricao
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 servico (light, switch, cover, climate, fan, media_player, etc.)

Automacoes

FerramentaDescricao
list_automationsListar todas as automacoes
get_automationObter detalhes de uma automacao
create_automationCriar uma nova automacao
update_automationAtualizar uma automacao existente
delete_automationExcluir uma automacao
toggle_automationAtivar/desativar uma automacao
trigger_automationExecutar uma automacao manualmente

Scripts

FerramentaDescricao
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)

FerramentaDescricao
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

FerramentaDescricao
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

Transferencias

FerramentaDescricao
list_transfersListar transferencias
create_transferCriar uma transferencia de recurso
accept_transferAceitar uma transferencia
reject_transferRejeitar uma transferencia
cancel_transferCancelar uma transferencia

Organizacoes

FerramentaDescricao
list_my_organizationsListar suas organizacoes
get_organization_membersListar membros de uma organizacao
create_organizationCriar uma organizacao
invite_to_organizationConvidar membro para organizacao
list_pending_invitationsListar convites pendentes
accept_organization_invitationAceitar convite de organizacao
decline_organization_invitationRecusar convite de organizacao
get_org_permissionsObter permissoes da organizacao
set_org_permissionsDefinir permissoes da organizacao
list_org_sharesListar compartilhamentos da organizacao
share_resource_with_orgCompartilhar recurso com organizacao

Suporte

FerramentaDescricao
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

Agendamento

FerramentaDescricao
list_scheduling_event_typesListar tipos de evento disponiveis
get_available_scheduling_timesObter horarios disponiveis
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 voce usar uma ferramenta do Portal, o Claude Code abrira automaticamente o navegador para voce fazer login e autorizar o acesso via OAuth.
3

Comecar a usar

Agora voce 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 configuracao

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 sera iniciado no navegador.
3

Comecar 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 configuracao

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 configuracao seja carregada.
3

Autorizar o acesso

Na primeira interacao com uma ferramenta do Portal, o fluxo OAuth sera iniciado no navegador para autenticacao.
4

Comecar a usar

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

Usando em Agentes Customizados

Voce 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, voce precisara implementar o fluxo OAuth 2.1 manualmente ou fornecer um token de acesso valido nos headers da requisicao.

Exemplos de Uso

Aqui estao 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 automacao 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 tecnica”list_scheduling_event_typesget_available_scheduling_timescreate_scheduling_link
Os agentes de IA entendem contexto. Voce pode usar linguagem natural sem precisar saber o nome exato das ferramentas — o agente escolhe automaticamente quais ferramentas usar.