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
| Ferramenta | Descrição |
|---|
list_devices | Listar todos os dispositivos |
get_device | Obter detalhes de um dispositivo |
list_entities | Listar todas as entidades |
get_entity_state | Obter estado de uma entidade |
get_all_states | Obter estados de todas as entidades |
call_service | Chamar um serviço (light, switch, cover, climate, fan, media_player, etc.) |
Automações
| Ferramenta | Descrição |
|---|
list_automations | Listar todas as automações |
get_automation | Obter detalhes de uma automação |
create_automation | Criar uma nova automação |
update_automation | Atualizar uma automação existente |
delete_automation | Excluir uma automação |
toggle_automation | Ativar/desativar uma automação |
trigger_automation | Executar uma automação manualmente |
Scripts
| Ferramenta | Descrição |
|---|
list_scripts | Listar todos os scripts |
get_script | Obter detalhes de um script |
create_script | Criar um novo script |
update_script | Atualizar um script existente |
delete_script | Excluir um script |
trigger_script | Executar um script |
| Ferramenta | Descrição |
|---|
list_tags | Listar todas as tags |
create_tag | Criar uma nova tag |
update_tag | Atualizar uma tag |
delete_tag | Excluir uma tag |
simulate_tag_scan | Simular a leitura de uma tag |
Dashboards
| Ferramenta | Descrição |
|---|
list_dashboards | Listar todos os dashboards |
get_dashboard | Obter detalhes de um dashboard |
create_dashboard | Criar um novo dashboard |
update_dashboard | Atualizar um dashboard |
delete_dashboard | Excluir um dashboard |
add_card_to_dashboard | Adicionar um card a um dashboard |
Transferências
| Ferramenta | Descrição |
|---|
list_transfers | Listar transferências |
create_transfer | Criar uma transferência de recurso |
accept_transfer | Aceitar uma transferência |
reject_transfer | Rejeitar uma transferência |
cancel_transfer | Cancelar uma transferência |
Organizações
| Ferramenta | Descrição |
|---|
list_my_organizations | Listar suas organizações |
get_organization_members | Listar membros de uma organização |
create_organization | Criar uma organização |
invite_to_organization | Convidar membro para organização |
list_pending_invitations | Listar convites pendentes |
accept_organization_invitation | Aceitar convite de organização |
decline_organization_invitation | Recusar convite de organização |
get_org_permissions | Obter permissões da organização |
set_org_permissions | Definir permissões da organização |
list_org_shares | Listar compartilhamentos da organização |
share_resource_with_org | Compartilhar recurso com organização |
Suporte
| Ferramenta | Descrição |
|---|
list_support_tickets | Listar tickets de suporte |
get_support_ticket | Obter detalhes de um ticket |
create_support_ticket | Criar um ticket de suporte |
reply_support_ticket | Responder a um ticket |
upload_support_attachment | Enviar anexo em um ticket |
Produtos & Checkout
| Ferramenta | Descrição |
|---|
list_products | Listar todos os produtos disponíveis no catalogo |
get_product | Obter detalhes de um produto pelo ID |
list_my_products | Listar produtos adquiridos pelo usuário |
get_my_product | Obter detalhes de um produto do usuário pelo UUID |
create_product_checkout | Criar sessão de checkout Stripe para comprar um produto |
Agendamento
| Ferramenta | Descrição |
|---|
list_scheduling_event_types | Listar tipos de evento disponíveis |
get_available_scheduling_times | Obter horários disponíveis |
create_scheduling_link | Criar link de agendamento |
list_scheduling_appointments | Listar agendamentos |
cancel_scheduling_appointment | Cancelar um agendamento |
Conectando o Claude Code CLI
Adicionar o servidor MCP
Execute no terminal:claude mcp add portal --transport streamable-http https://portal.unicontrol.me/v1/mcp
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.
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
Editar o arquivo de configuração
Adicione ao arquivo ~/.gemini/settings.json:{
"mcpServers": {
"portal": {
"httpUrl": "https://portal.unicontrol.me/v1/mcp"
}
}
}
Autorizar o acesso
Ao usar uma ferramenta pela primeira vez, o fluxo OAuth será iniciado no navegador.
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.
Editar o arquivo de configuração
Adicione ao arquivo ~/.openclaw/openclaw.json:{
"mcpServers": {
"portal": {
"url": "https://portal.unicontrol.me/v1/mcp",
"transport": "streamable-http"
}
}
}
Reiniciar o OpenClaw
Reinicie o gateway do OpenClaw para que a nova configuração seja carregada.
Autorizar o acesso
Na primeira interação com uma ferramenta do Portal, o fluxo OAuth será iniciado no navegador para autenticação.
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:
| Comando | Ferramentas utilizadas |
|---|
| ”Apague todas as luzes” | list_entities → call_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_dashboard → add_card_to_dashboard |
| ”Execute o script de bom dia” | list_scripts → trigger_script |
| ”Abra um chamado de suporte” | create_support_ticket |
| ”Agende uma visita técnica” | list_scheduling_event_types → get_available_scheduling_times → create_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.