controleonline / mcp
Model Context Protocol (MCP) integration for ControleOnline API with scoped query and optional authorized write tools
Requires
- php: ^8.5
- controleonline/common: 1.0.5
- controleonline/people: 1.0.3
- psr/log: 3.0.2
Requires (Dev)
- phpunit/phpunit: ^12.1
- symfony/http-kernel: ^8.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-master
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-task-264
- dev-staging
- dev-rc/1.0.12-rc.1
- dev-dev
- dev-task-43
- dev-rc/1.0.11-rc.1
- dev-rc/1.0.10-rc.1
- dev-task-37
- dev-rc/1.0.9-rc.1
- dev-task-33
- dev-task/mcp-tenant-domain
- dev-rc/1.0.8-rc.1
- dev-task-197-mcp-write-capability
- dev-rc/1.0.7-rc.1
- dev-task-197
- dev-rc/1.0.6-rc.1
- dev-rc/1.0.5-rc.1
- dev-rc/1.0.4-rc.1
- dev-task-197-mcp-query-fix
- dev-rc/1.0.3-rc.1
- dev-rc/1.0.2-rc.1
- dev-task-4
- dev-task-1
This package is auto-updated.
Last update: 2026-10-08 06:08:16 UTC
README
mcp
Integração do Model Context Protocol (MCP) com a API ControleOnline.
Expõe o endpoint HTTP /mcp para agentes de IA (LLMs) consultarem dados e, quando a aplicação registra um provider de escrita autorizado, criarem operações de negócio limitadas.
Escopo atual
- Transporte HTTP em
/mcp - Autenticação OAuth 2.1 com Authorization Code + PKCE; a pessoa autentica na tela ControleOnline (
MANAGER_APP) - Consultas limitadas ao tenant do token e às empresas acessíveis pelo usuário (
mycompanies) securityFilterda API aplicado às consultas de pedidos, vendas e faturas; produtos e estoque filtrados explicitamente pelas empresas acessíveis- Projeções fixas sem documentos, descrições livres, dados de contato ou serialização genérica de entidades
- Escritas disponíveis somente com provider explicitamente registrado pela aplicação; o pacote permanece somente para consulta sem esse provider
- Movimentações de estoque feitas por pedidos de compra, venda e transferência; os triggers do banco atualizam os saldos
Tools disponíveis
list_my_companies: empresas habilitadas que o usuário pode acessar.list_query_datasets: áreas de dados habilitadas:sales,orders,invoices,products,inventory,wallets,employees,clients,suppliers,salespeople,commissions,configs,devices,displayseproduction_queue.query_business_data: consulta com intervalo opcional de datas, empresa e limite de até 100 linhas. Para perguntas por período, informefrometo; uselist_my_companiesantes para resolvercompany_id.dataset=ordersconsulta pedidos de todos os tipos;dataset=salesconsulta somente vendas encerradas.configsconsulta somente metadados da configuraçãodevices; valores de configuração e segredos não são retornados.deviceslista aliases e tipos configurados para as empresas acessíveis.displayslista displays e filas vinculadas às empresas acessíveis;production_queueretorna itens de preparação de pedidos de venda e seu status operacional.- Pedidos e faturas usam somente empresas acessíveis ao usuário: cliente/fornecedor nos pedidos e pagador/recebedor nas faturas.
- Pessoas e comissões são lidas por vínculos ativos com essas empresas; comissões só são incluídas quando
PeopleLinkServiceautoriza o usuário a gerenciar a empresa do vendedor. - Projeções de pessoas retornam nome e vínculo, sem documentos, telefone, e-mail, endereço ou credenciais.
query_business_datacomaggregate: true: total e quantidade de vendas encerradas no intervalo (sem truncar o agregado ao limite de linhas).health_checkelist_capabilities: estado e descoberta do servidor.write_business_data(quando habilitada pela aplicação): configuração de devices, produtos e pedidos de compra, venda e transferência, sempre sob as regras e permissões da API.
Datas de vendas e faturas usam o fuso APP_TIMEZONE da API. O escopo de empresas é recalculado no banco do tenant para cada solicitação; app-domain, Origin e Referer enviados pelo cliente não alteram o tenant de um token.
Configuração e validação local
- Instale a versão da task dos módulos API
controleonline/mcpecontroleonline/usersnoapi-communitye registre o provider de consultas no container. - Confirme que
app-community/config/env.local.jstemMANAGER_APPdefinido para a tela de consentimento OAuth. O móduloui-loginhospeda essa tela e preserva o pedido durante o login. - Configure o cliente MCP para conectar a
https://api.controleonline.com/mcp; o cliente inicia o OAuth via metadata, abre a tela ControleOnline e guarda o Bearer token localmente. - Execute os testes dos módulos MCP e users e
bin/console lint:container --env=testnoapi-community.
O fluxo usa cache.app e o lock.factory da Symfony para consumir cada código de autorização uma só vez. Em instalações com mais de um nó API, configure ambos com armazenamento compartilhado entre os nós.
Mais detalhes: fluxo OAuth e isolamento por tenant.