treasy-mcp 0.0.0.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- treasy_mcp-0.0.0.dev0/INSTALAR.md +78 -0
- treasy_mcp-0.0.0.dev0/LICENSE +28 -0
- treasy_mcp-0.0.0.dev0/MANIFEST.in +6 -0
- treasy_mcp-0.0.0.dev0/PKG-INFO +98 -0
- treasy_mcp-0.0.0.dev0/README.md +448 -0
- treasy_mcp-0.0.0.dev0/_data_/seed/openapi/catalog.json +139510 -0
- treasy_mcp-0.0.0.dev0/pyproject.toml +52 -0
- treasy_mcp-0.0.0.dev0/setup.cfg +4 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/__init__.py +24 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/__main__.py +89 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/_versao.py +7 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/arquivos.py +471 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/auditoria.py +134 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/cache.py +73 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/catalogo_vivo.py +457 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/client.py +3831 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/config.py +61 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/constants.py +27 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/coverage.py +135 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/credenciais.py +297 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/doctor.py +186 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/efeito.py +124 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/escrita.py +259 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/exportacao.py +583 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/formatters.py +153 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/gateway.py +700 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/helpers.py +216 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/instalacao.py +91 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/login_navegador.py +1022 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/modo.py +357 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/paridade.py +473 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/server.py +1825 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/sessao_auth.py +482 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/spec_catalog.py +383 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tenant_session.py +93 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/__init__.py +1 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/analise/__init__.py +1 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/analise/treasy_analise_alavancas.py +151 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/analise/treasy_comparativo_periodos.py +119 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/analise/treasy_projecao_fluxo_caixa.py +159 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/controle/__init__.py +1 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/controle/treasy_aging_recebiveis.py +157 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/controle/treasy_detectar_duplicatas.py +155 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/planejamento/__init__.py +1 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp/tools/planejamento/treasy_desvio_orcado_realizado.py +133 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp.egg-info/PKG-INFO +98 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp.egg-info/SOURCES.txt +49 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp.egg-info/dependency_links.txt +1 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp.egg-info/entry_points.txt +2 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp.egg-info/requires.txt +4 -0
- treasy_mcp-0.0.0.dev0/treasy_mcp.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# treasy-mcp: o seu Treasy dentro do Claude Code
|
|
2
|
+
|
|
3
|
+
O `treasy-mcp` liga o Claude Code à sua conta do Treasy FP&A. Depois de instalado, você pede ao
|
|
4
|
+
Claude, em português, o que hoje faz no Treasy, e ele consulta os seus dados com o seu usuário.
|
|
5
|
+
|
|
6
|
+
Em produção o pacote é **somente leitura**: ele consulta, nunca altera.
|
|
7
|
+
|
|
8
|
+
## 1. Instale o `uv` (uma vez por computador)
|
|
9
|
+
|
|
10
|
+
O `uv` é o programa que baixa e roda o `treasy-mcp`. Se o comando `uv --version` já responde,
|
|
11
|
+
pule para o passo 2.
|
|
12
|
+
|
|
13
|
+
**Windows** (no PowerShell):
|
|
14
|
+
|
|
15
|
+
```powershell
|
|
16
|
+
winget install --id astral-sh.uv -e
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**macOS** (no Terminal):
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Linux** (no terminal):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Feche e abra o terminal depois de instalar.
|
|
32
|
+
|
|
33
|
+
## 2. Ligue o Treasy ao Claude Code (a linha da instalação)
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
claude mcp add treasy -- uvx treasy-mcp
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 3. Entre com o seu usuário do Treasy (a linha do login)
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
uvx treasy-mcp login
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
O navegador abre na página de login do Treasy. Entre com o seu e-mail e a sua senha de sempre.
|
|
46
|
+
A senha fica só no navegador: o `treasy-mcp` guarda uma sessão no seu computador, na pasta
|
|
47
|
+
`.treasy` da sua pasta de usuário, e nunca vê a senha.
|
|
48
|
+
|
|
49
|
+
## 4. Pronto: peça ao Claude
|
|
50
|
+
|
|
51
|
+
Abra o Claude Code e peça, por exemplo: "liste as minhas empresas no Treasy".
|
|
52
|
+
|
|
53
|
+
## Quando algo não funciona
|
|
54
|
+
|
|
55
|
+
Rode o diagnóstico e mande as seis linhas ao suporte da Treasy (elas não têm segredo):
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
uvx treasy-mcp doctor
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
| O que aparece | O que fazer |
|
|
62
|
+
|---|---|
|
|
63
|
+
| `sem sessão de prod` | Rode `uvx treasy-mcp login`. |
|
|
64
|
+
| `a sessão de prod venceu` | Rode `uvx treasy-mcp login` de novo. |
|
|
65
|
+
| `porta 47650 ocupada` | Feche o programa que usa a porta 47650 e rode o login de novo. |
|
|
66
|
+
| `não respondeu` no SSO ou na API | Confira a internet, o proxy ou o firewall da empresa para `*.treasy.com.br`. |
|
|
67
|
+
|
|
68
|
+
Outros comandos:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
uvx treasy-mcp status # mostra a sessão gravada (nunca o token)
|
|
72
|
+
uvx treasy-mcp sair # apaga a sessão deste computador
|
|
73
|
+
uvx treasy-mcp --version # a versão instalada
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Para usar outro ambiente que a Treasy lhe indicar (`qa` ou `sandbox`), acrescente o nome ao
|
|
77
|
+
login (`uvx treasy-mcp login sandbox`) e ligue o Claude com a variável do ambiente:
|
|
78
|
+
`claude mcp add treasy -e TREASY_AMBIENTE=sandbox -- uvx treasy-mcp`.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Licença de uso do treasy-mcp
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Treasy. Todos os direitos reservados.
|
|
4
|
+
|
|
5
|
+
Este software (o pacote "treasy-mcp", com o código, o catálogo de operações e a documentação que o
|
|
6
|
+
acompanham) é propriedade da Treasy e é licenciado, não vendido.
|
|
7
|
+
|
|
8
|
+
1. Permissão de uso. Quem tem um usuário ativo do Treasy pode instalar e executar este software,
|
|
9
|
+
sem custo, em qualquer número de computadores próprios ou da sua empresa, com o único fim de
|
|
10
|
+
acessar a própria conta do Treasy por um cliente compatível com o Model Context Protocol (MCP),
|
|
11
|
+
como o Claude Code.
|
|
12
|
+
|
|
13
|
+
2. O que não é permitido. Sem autorização por escrito da Treasy, não é permitido: (a) vender,
|
|
14
|
+
sublicenciar, alugar ou redistribuir este software, no todo ou em parte, fora do índice oficial
|
|
15
|
+
onde a Treasy o publica; (b) modificar o software e distribuir a versão modificada; (c) usá-lo
|
|
16
|
+
para acessar conta, empresa ou dado de terceiro sem a permissão dele; (d) remover este aviso.
|
|
17
|
+
|
|
18
|
+
3. Uso interno nas empresas. Copiar o pacote para o espelho interno de pacotes da empresa, sem
|
|
19
|
+
modificação, para instalar nos computadores dela, é permitido.
|
|
20
|
+
|
|
21
|
+
4. Sem garantia. O software é fornecido "no estado em que se encontra", sem garantia de qualquer
|
|
22
|
+
tipo. O uso do Treasy segue os termos de uso do serviço contratado.
|
|
23
|
+
|
|
24
|
+
5. Responsabilidade. Na máxima extensão permitida pela lei, a Treasy não responde por dano
|
|
25
|
+
indireto decorrente do uso deste software. Nada aqui limita direito que a lei brasileira
|
|
26
|
+
garanta ao consumidor.
|
|
27
|
+
|
|
28
|
+
Dúvidas sobre esta licença: fale com o suporte da Treasy.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: treasy-mcp
|
|
3
|
+
Version: 0.0.0.dev0
|
|
4
|
+
Summary: Servidor MCP do Treasy: o seu Treasy FP&A dentro do Claude Code, com login pelo navegador
|
|
5
|
+
Author: Treasy
|
|
6
|
+
License-Expression: LicenseRef-Treasy-Proprietaria
|
|
7
|
+
Keywords: treasy,mcp,claude,fpa,orcamento
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Natural Language :: Portuguese (Brazilian)
|
|
12
|
+
Requires-Python: >=3.11
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Requires-Dist: mcp<1.27,>=1.5.0
|
|
16
|
+
Requires-Dist: httpx>=0.27.0
|
|
17
|
+
Requires-Dist: jsonschema>=4.0
|
|
18
|
+
Requires-Dist: openpyxl>=3.1
|
|
19
|
+
Dynamic: license-file
|
|
20
|
+
|
|
21
|
+
# treasy-mcp: o seu Treasy dentro do Claude Code
|
|
22
|
+
|
|
23
|
+
O `treasy-mcp` liga o Claude Code à sua conta do Treasy FP&A. Depois de instalado, você pede ao
|
|
24
|
+
Claude, em português, o que hoje faz no Treasy, e ele consulta os seus dados com o seu usuário.
|
|
25
|
+
|
|
26
|
+
Em produção o pacote é **somente leitura**: ele consulta, nunca altera.
|
|
27
|
+
|
|
28
|
+
## 1. Instale o `uv` (uma vez por computador)
|
|
29
|
+
|
|
30
|
+
O `uv` é o programa que baixa e roda o `treasy-mcp`. Se o comando `uv --version` já responde,
|
|
31
|
+
pule para o passo 2.
|
|
32
|
+
|
|
33
|
+
**Windows** (no PowerShell):
|
|
34
|
+
|
|
35
|
+
```powershell
|
|
36
|
+
winget install --id astral-sh.uv -e
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**macOS** (no Terminal):
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Linux** (no terminal):
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Feche e abra o terminal depois de instalar.
|
|
52
|
+
|
|
53
|
+
## 2. Ligue o Treasy ao Claude Code (a linha da instalação)
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
claude mcp add treasy -- uvx treasy-mcp
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 3. Entre com o seu usuário do Treasy (a linha do login)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
uvx treasy-mcp login
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
O navegador abre na página de login do Treasy. Entre com o seu e-mail e a sua senha de sempre.
|
|
66
|
+
A senha fica só no navegador: o `treasy-mcp` guarda uma sessão no seu computador, na pasta
|
|
67
|
+
`.treasy` da sua pasta de usuário, e nunca vê a senha.
|
|
68
|
+
|
|
69
|
+
## 4. Pronto: peça ao Claude
|
|
70
|
+
|
|
71
|
+
Abra o Claude Code e peça, por exemplo: "liste as minhas empresas no Treasy".
|
|
72
|
+
|
|
73
|
+
## Quando algo não funciona
|
|
74
|
+
|
|
75
|
+
Rode o diagnóstico e mande as seis linhas ao suporte da Treasy (elas não têm segredo):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
uvx treasy-mcp doctor
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
| O que aparece | O que fazer |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `sem sessão de prod` | Rode `uvx treasy-mcp login`. |
|
|
84
|
+
| `a sessão de prod venceu` | Rode `uvx treasy-mcp login` de novo. |
|
|
85
|
+
| `porta 47650 ocupada` | Feche o programa que usa a porta 47650 e rode o login de novo. |
|
|
86
|
+
| `não respondeu` no SSO ou na API | Confira a internet, o proxy ou o firewall da empresa para `*.treasy.com.br`. |
|
|
87
|
+
|
|
88
|
+
Outros comandos:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
uvx treasy-mcp status # mostra a sessão gravada (nunca o token)
|
|
92
|
+
uvx treasy-mcp sair # apaga a sessão deste computador
|
|
93
|
+
uvx treasy-mcp --version # a versão instalada
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Para usar outro ambiente que a Treasy lhe indicar (`qa` ou `sandbox`), acrescente o nome ao
|
|
97
|
+
login (`uvx treasy-mcp login sandbox`) e ligue o Claude com a variável do ambiente:
|
|
98
|
+
`claude mcp add treasy -e TREASY_AMBIENTE=sandbox -- uvx treasy-mcp`.
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
# treasy-copilot-mcp
|
|
2
|
+
Treasy Copilot MCP
|
|
3
|
+
|
|
4
|
+
> **Para instalar no Claude Code como cliente** (sem clonar este repositório), siga o
|
|
5
|
+
> [`INSTALAR.md`](INSTALAR.md): é a fonte única das instruções do pacote `treasy-mcp`. Para construir e
|
|
6
|
+
> conferir o pacote: `python -m build` e depois `python scripts/verificar_wheel.py dist` (sai 0 limpo,
|
|
7
|
+
> 1 achou segredo ou lixo, 2 não mediu).
|
|
8
|
+
|
|
9
|
+
## Pré-requisitos
|
|
10
|
+
|
|
11
|
+
- Python 3.11 gerenciado pelo **pyenv**
|
|
12
|
+
- **pyenv-virtualenv** para criar o ambiente virtual do projeto
|
|
13
|
+
> Instale o **pyenv** antes de continuar: [linux](https://github.com/pyenv/pyenv) ou [windows](https://github.com/pyenv-win/pyenv-win). Para gerenciar ambientes virtuais pelo pyenv, instale também o [pyenv-virtualenv](https://github.com/pyenv/pyenv-virtualenv).
|
|
14
|
+
|
|
15
|
+
## Primeira execução do projeto
|
|
16
|
+
|
|
17
|
+
Siga os passos abaixo após baixar ou clonar o projeto pela primeira vez.
|
|
18
|
+
|
|
19
|
+
### 1. Instalar o Python e criar o virtualenv com pyenv
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pyenv install 3.11
|
|
23
|
+
pyenv virtualenv 3.11 treasy-copilot-mcp
|
|
24
|
+
pyenv local treasy-copilot-mcp
|
|
25
|
+
python --version
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
O comando `pyenv local treasy-copilot-mcp` cria o arquivo `.python-version` na raiz do projeto. Assim, sempre que você estiver nesta pasta, o `pyenv` selecionará automaticamente o ambiente virtual `treasy-copilot-mcp`.
|
|
29
|
+
|
|
30
|
+
Se a versão `3.11` não estiver disponível no seu ambiente, instale uma versão específica do Python 3.11, por exemplo:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pyenv install 3.11.9
|
|
34
|
+
pyenv virtualenv 3.11.9 treasy-copilot-mcp
|
|
35
|
+
pyenv local treasy-copilot-mcp
|
|
36
|
+
python --version
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Para confirmar que o virtualenv do pyenv está ativo:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pyenv version
|
|
43
|
+
pyenv which python
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2. Instalar as dependências
|
|
47
|
+
|
|
48
|
+
Para instalar o projeto em modo editável com as dependências de execução:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
python -m pip install --upgrade pip
|
|
52
|
+
python -m pip install -e .
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Se também for rodar testes localmente, instale as dependências de desenvolvimento:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
python -m pip install -r requirements-dev.txt
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 3. Configurar variáveis de ambiente
|
|
62
|
+
|
|
63
|
+
Crie o arquivo `.env` a partir do exemplo:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
cp .env.example .env
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
No Windows PowerShell:
|
|
70
|
+
|
|
71
|
+
```powershell
|
|
72
|
+
Copy-Item .env.example .env
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Depois, preencha no `.env` os valores necessários:
|
|
76
|
+
|
|
77
|
+
```env
|
|
78
|
+
TREASY_CLIENT_SECRET=
|
|
79
|
+
TREASY_CLIENT_SECRET_QA=
|
|
80
|
+
TREASY_API_BASE_URL_SANDBOX=
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 4. Inicializar o servidor MCP
|
|
84
|
+
|
|
85
|
+
Com o ambiente virtual do pyenv ativo, execute:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
python -m treasy_mcp
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Após instalar o projeto com `python -m pip install -e .`, também é possível iniciar pelo script:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
treasy-mcp
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Por padrão, a execução local usa transporte stdio. Para rodar o MCP como serviço HTTP separado, use:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
MCP_TRANSPORT=http MCP_HOST=0.0.0.0 MCP_PORT=7000 python -m treasy_mcp
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Nesse modo, o endpoint MCP fica disponível em:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
http://localhost:7000/mcp
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
No Docker Compose da raiz do projeto agregador, esse serviço é chamado pelo backend em:
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
http://treasy-copilot-mcp:7000/mcp
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 5. Rodar os testes
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
pytest
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 6. Login pelo navegador (opcional, sem guardar senha)
|
|
122
|
+
|
|
123
|
+
Para usar o Treasy MCP no Claude Code sem deixar a senha num arquivo, a pessoa entra pelo navegador
|
|
124
|
+
com um comando que ela mesma roda no terminal. O comando abre a tela do Keycloak (Authorization Code
|
|
125
|
+
com PKCE, client público, sem segredo), confere que a API aceita o token e grava só o `refresh_token`
|
|
126
|
+
em `%USERPROFILE%\.treasy\sessao-<ambiente>.json`, o arquivo que o modo claude-code já lê. O MCP nunca
|
|
127
|
+
abre navegador sozinho, e este módulo não é importado por nenhum outro (o Copilot não o sente).
|
|
128
|
+
|
|
129
|
+
Não há nada a configurar: o client público `treasy-mcp-navegador` (esforço `002677`, nos três
|
|
130
|
+
ambientes) já vem no programa. A variável `TREASY_CLIENT_ID_NAVEGADOR_<AMBIENTE>` só existe para
|
|
131
|
+
trocá-lo, se a Treasy pedir; o `ambassador` nunca serve. Na pasta do projeto:
|
|
132
|
+
|
|
133
|
+
```powershell
|
|
134
|
+
python -m treasy_mcp.login_navegador login sandbox # prod | qa | sandbox
|
|
135
|
+
python -m treasy_mcp.login_navegador status # o que está gravado (nunca o token)
|
|
136
|
+
python -m treasy_mcp.login_navegador sair sandbox # apaga a sessão deste computador
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
- O `login` diz o ambiente e o host antes de abrir o navegador, e no fim com que e-mail entrou.
|
|
140
|
+
- A volta usa `http://127.0.0.1:47650/callback`; essa é a `redirect_uri` cadastrada no client. Outra
|
|
141
|
+
porta só serve se estiver cadastrada (`TREASY_NAVEGADOR_PORTA` ou `--porta`).
|
|
142
|
+
- Escopos pedidos: `openid email profile` (`TREASY_NAVEGADOR_ESCOPOS` troca; `offline_access` faz o
|
|
143
|
+
refresh durar dias em disco).
|
|
144
|
+
- Sem navegador (`--sem-abrir` ou o navegador não abre): o comando imprime o endereço; abra-o no
|
|
145
|
+
MESMO computador em que o comando roda. Em terminal SSH ou WSL o comando avisa isso antes de
|
|
146
|
+
esperar. Sessão remota (nuvem, Remote Control) não é suportada.
|
|
147
|
+
- Códigos de saída: `0` fez; `1` o SSO ou a API recusou; `2` não fez (ambiente sem login liberado,
|
|
148
|
+
porta ocupada, tempo esgotado de 180 s, rede, ambiente `local`, que não usa SSO).
|
|
149
|
+
- A sessão dura no máximo 10 h (o teto do Keycloak): depois disso, um novo `login`.
|
|
150
|
+
- Qualquer falha deixa o arquivo de sessão anterior como estava. A senha do `.env` não é apagada:
|
|
151
|
+
se ela existir, o comando só avisa qual linha remover.
|
|
152
|
+
- O `sair` apaga a sessão deste computador e deixa a marca `sair-<ambiente>.json`: um servidor MCP já
|
|
153
|
+
aberto larga a sessão no pedido seguinte e passa a pedir login. Ele não encerra a sessão no
|
|
154
|
+
Keycloak: a versão da Treasy não revoga só o acesso do MCP, e encerrar a sessão derrubaria também o
|
|
155
|
+
T30 web. O refresh já emitido segue válido lá até vencer, mas não fica guardado em lugar nenhum.
|
|
156
|
+
- Sem o segredo do `ambassador` (quem não é da casa), o MCP nunca tenta a senha: o único caminho é
|
|
157
|
+
este login.
|
|
158
|
+
|
|
159
|
+
## Modo claude-code (login sozinho, só por stdio)
|
|
160
|
+
|
|
161
|
+
Para usar o Treasy MCP dentro do Claude Code com o seu usuário, sem a senha passar pelo chat.
|
|
162
|
+
O modo liga só com as **duas** variáveis juntas, no processo que o Claude Code lança:
|
|
163
|
+
|
|
164
|
+
```env
|
|
165
|
+
TREASY_MCP_MODO=claude-code
|
|
166
|
+
TREASY_AMBIENTE=sandbox # prod | qa | sandbox | local
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
- Sem `TREASY_MCP_MODO`, nada muda: é o modo do backend do Copilot (`treasy_set_token`).
|
|
170
|
+
- Valor inválido em qualquer uma das duas, ou `MCP_TRANSPORT=http`, e o processo não sobe.
|
|
171
|
+
- `treasy_login` e `treasy_set_token` somem da lista e são recusados.
|
|
172
|
+
- **Prod escreve com confirmação a cada chamada** (seção "Escrita em produção", abaixo); só o operador desliga,
|
|
173
|
+
com `TREASY_MCP_ESCRITA_PROD=off`. qa, sandbox e local escrevem com a mesma confirmação.
|
|
174
|
+
- Em sandbox, qa e local a escrita pelo gateway exige `TREASY_GATEWAY_WRITES` no ambiente do processo que lança o
|
|
175
|
+
MCP, porque o `.env` do modo só carrega `TREASY_CLIENT_SECRET*`, `TREASY_API_BASE_URL_*` e `TREASY_SSO_URL_*`.
|
|
176
|
+
- `treasy_listar_empresas` lê todas as páginas e aceita `filtro` (parte do nome ou do CNPJ);
|
|
177
|
+
`treasy_selecionar_empresa` só aceita id que veio dessa lista e passa a mandar `XXX-LITE-EMPRESA`.
|
|
178
|
+
|
|
179
|
+
**Onde mora o seu login.** Num arquivo fora de qualquer repositório, que só você edita:
|
|
180
|
+
`%USERPROFILE%\.treasy\treasy-mcp.env` (ou o caminho em `TREASY_CREDENCIAIS_FILE`), com
|
|
181
|
+
`TREASY_LOGIN_<AMBIENTE>` e `TREASY_SENHA_<AMBIENTE>` (`PROD`, `QA`, `SANDBOX`). Os segredos do
|
|
182
|
+
client `ambassador` continuam no `.env` deste repositório (ou no arquivo de `TREASY_ENV_FILE`).
|
|
183
|
+
|
|
184
|
+
```powershell
|
|
185
|
+
python -m treasy_mcp.credenciais modelo # cria o arquivo com as chaves vazias (nunca sobrescreve)
|
|
186
|
+
python -m treasy_mcp.credenciais status # diz por ambiente se há login e senha, sem mostrar valor
|
|
187
|
+
python -m treasy_mcp.credenciais medir sandbox # UM login: ok ou negado, e os prazos dos tokens
|
|
188
|
+
python -m treasy_mcp.modo listar escrita # as ferramentas de uma classe, uma por linha
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**A sessão.** O `refresh_token` fica em `%USERPROFILE%\.treasy\sessao-<ambiente>.json` e é tentado
|
|
192
|
+
antes da senha. Se o SSO recusar a senha, o MCP não tenta de novo até o arquivo de credenciais
|
|
193
|
+
mudar (`senha-negada-<ambiente>.json`), para não bloquear a sua conta. Nunca cole a senha no chat.
|
|
194
|
+
|
|
195
|
+
### Escrita em produção
|
|
196
|
+
|
|
197
|
+
No modo `claude-code` com `TREASY_AMBIENTE=prod`, o MCP faz CRUD completo (criar, alterar, excluir, pelas
|
|
198
|
+
ferramentas dedicadas e pelo `treasy_api_executar`), **sempre com o humano no meio**:
|
|
199
|
+
|
|
200
|
+
1. **Confirmação a cada escrita.** Se o cliente MCP atende `elicitation`, o servidor pergunta ao humano, com o
|
|
201
|
+
resumo (verbo, alvo, empresa com id e nome, ambiente; excluir diz "NÃO se desfaz"), e só grava com "aceitar".
|
|
202
|
+
Senão, a 1ª chamada devolve `requer_confirmacao` com o resumo e um `confirmacao_id` de uso único, que vale 60 s
|
|
203
|
+
e só com os mesmos argumentos e a mesma empresa ativa. `confirmar_escrita=true` sozinho não grava.
|
|
204
|
+
2. **Auditoria antes.** Cada escrita grava duas linhas (`pedido` e `resultado`, ligadas por `id_do_evento`, esquema
|
|
205
|
+
`v1`) em `~/.treasy/auditoria/AAAA-MM.jsonl` (`TREASY_MCP_AUDITORIA_DIR` troca a pasta; arquivos com mais de
|
|
206
|
+
180 dias saem). `senha`, `token`, CPF e e-mail saem mascarados. Se a linha `pedido` não grava, nada é enviado.
|
|
207
|
+
3. **Teto.** 10 escritas por minuto e 50 por sessão (`TREASY_MCP_TETO_POR_MINUTO`, `TREASY_MCP_TETO_POR_SESSAO`).
|
|
208
|
+
4. **Resposta incerta.** Timeout, 5xx ou corpo ilegível depois do envio: "a gravação pode ter acontecido: confira com
|
|
209
|
+
a leitura antes de repetir".
|
|
210
|
+
|
|
211
|
+
**Como o operador desliga:** `TREASY_MCP_ESCRITA_PROD=off` no ambiente do processo que lança o MCP. Com ela, prod volta
|
|
212
|
+
a ser somente leitura (as escritas somem da lista e são recusadas). Só `off` e vazio são aceitos; outro valor e o
|
|
213
|
+
processo não sobe. A variável não vale fora de prod, nem fora do modo.
|
|
214
|
+
|
|
215
|
+
**Códigos de `motivo`** (estáveis; a recusa volta como `{"recusado": true, "motivo": ..., "mensagem": ...}`):
|
|
216
|
+
|
|
217
|
+
| `motivo` | Quando |
|
|
218
|
+
|---|---|
|
|
219
|
+
| `desligada_pelo_operador` | `TREASY_MCP_ESCRITA_PROD=off` em prod |
|
|
220
|
+
| `segredo_ou_plataforma` | operação de segredo ou de plataforma pelo `treasy_api_executar`, recusada em prod |
|
|
221
|
+
| `teto` | 10 por minuto ou 50 por sessão atingidos |
|
|
222
|
+
| `auditoria` | a linha `pedido` não pôde ser gravada; nada foi enviado |
|
|
223
|
+
| `autenticacao` | `treasy_login` e `treasy_set_token` no modo |
|
|
224
|
+
| `sem_classe` | ferramenta fora das classes leitura, escrita e autenticação |
|
|
225
|
+
| `negada_pelo_humano` | o humano recusou a pergunta do cliente MCP |
|
|
226
|
+
| `confirmacao_desconhecida` | `confirmacao_id` que o servidor não emitiu |
|
|
227
|
+
| `confirmacao_ja_usada` | `confirmacao_id` reusado |
|
|
228
|
+
| `confirmacao_expirada` | `confirmacao_id` com mais de 60 s |
|
|
229
|
+
| `confirmacao_divergente` | argumentos ou empresa ativa diferentes dos do pedido |
|
|
230
|
+
|
|
231
|
+
**Risco residual, no caminho por id.** O `confirmacao_id` volta ao modelo, que pode repeti-lo sem mostrar o resumo
|
|
232
|
+
ao usuário: nesse caminho a barreira contra uma instrução maliciosa é fraca. O caminho por `elicitation` não tem
|
|
233
|
+
esse furo, porque a pergunta vai direto ao humano. Não há desfazer: o que o T30 gravou só se corrige gravando de novo.
|
|
234
|
+
|
|
235
|
+
**Fora de prod.** Dentro do modo, qa, sandbox e local têm a mesma confirmação, auditoria e teto. Só a recusa de
|
|
236
|
+
segredo e plataforma (`segredo_ou_plataforma`) e o interruptor do operador valem apenas em prod. Antes de pedir,
|
|
237
|
+
o servidor lê o alvo (GET do mesmo caminho, só se liberado) e mostra nome, valor e antes e depois; sem leitura
|
|
238
|
+
prévia, o resumo diz "sem leitura prévia". Fora do modo (Copilot) nada muda.
|
|
239
|
+
|
|
240
|
+
<br>
|
|
241
|
+
<br>
|
|
242
|
+
|
|
243
|
+
----
|
|
244
|
+
|
|
245
|
+
## Enviar e baixar arquivo pelo gateway (003966)
|
|
246
|
+
|
|
247
|
+
- **Enviar** (anexo de fato, causa, ação ou comentário; logo; foto): peça ao Claude passando o **caminho completo** do arquivo, por exemplo `C:/Users/ana/Documents/nota.pdf`. O `treasy_api_executar` recebe isso em `arquivos` (`{"file": "<caminho>"}`) e os demais campos em `campos`. Antes de enviar, ele mostra ambiente, schema, empresa, nome, bytes e sha256 e pede a sua confirmação; se o arquivo mudar entre o resumo e a confirmação, nada sobe.
|
|
248
|
+
- **Baixar**: o arquivo vai para `~/treasy-exportacoes/<ambiente>/<schema>/arquivos/` (ou `TREASY_EXPORTACAO_DIR`), e o Claude recebe só o caminho, o tamanho e o sha256. Conteúdo executável ganha a extensão `.bin`.
|
|
249
|
+
- **Limites**: 50 MB nos dois sentidos (`TREASY_ARQUIVO_TETO_ENVIO_MB`, `TREASY_ARQUIVO_TETO_DOWNLOAD_MB`); o servidor do T30 corta o pedido entre 45 e 50 MB (medido no sandbox em 2026-11-01). Tipos que sobem: pdf, png, jpg, jpeg, xlsx, csv, txt, docx. `TREASY_ENVIO_DIR` restringe o envio a uma pasta. Pastas sensíveis (`.treasy`, `.ssh`, `.git`, `.env*`, chaves) nunca sobem. Envio em produção está desligado; o servidor por HTTP remoto não vê o seu disco e recusa.
|
|
250
|
+
- **Troca de logo**: o MCP baixa o logo atual para a pasta acima antes de trocar; se não conseguir, não troca.
|
|
251
|
+
|
|
252
|
+
## Exportar o resultado de uma consulta para arquivo
|
|
253
|
+
|
|
254
|
+
A ferramenta `treasy_exportar` roda por dentro uma ferramenta de **leitura** e grava o resultado em
|
|
255
|
+
arquivo. Ao modelo volta só o caminho, o formato e as contagens de linhas e colunas: nenhuma célula
|
|
256
|
+
entra na conversa. Ela só existe no **modo claude-code** (`TREASY_MCP_MODO=claude-code`); fora dele
|
|
257
|
+
não aparece na lista e, se for chamada, é recusada sem tocar em rede nem em disco.
|
|
258
|
+
|
|
259
|
+
| Argumento | O que é |
|
|
260
|
+
|---|---|
|
|
261
|
+
| `ferramenta` | nome da leitura a consultar (ex.: `treasy_listar_contas`) |
|
|
262
|
+
| `argumentos` | os argumentos dessa leitura (opcional) |
|
|
263
|
+
| `formato` | `csv`, `xlsx` ou `json` (obrigatório) |
|
|
264
|
+
|
|
265
|
+
- **Pasta:** `%USERPROFILE%\treasy-exportacoes\<ambiente>\<schema>\`. `TREASY_EXPORTACAO_DIR` (caminho
|
|
266
|
+
absoluto) troca a pasta base. O MCP recusa destino dentro de um repositório git ou de uma pasta do
|
|
267
|
+
OneDrive. O nome do arquivo é gerado pelo MCP (`<ferramenta>_AAAAMMDD-HHMMSS.<formato>`) e nunca
|
|
268
|
+
sobrescreve outro.
|
|
269
|
+
- **CSV:** `utf-8-sig`, separador `;`, vírgula decimal (o formato que o Excel em português abre). A origem
|
|
270
|
+
(ambiente, empresa, CNPJ, ferramenta, hora) vai no arquivo irmão `.origem.json`; no Excel, na aba
|
|
271
|
+
`Origem`; no JSON, em `_origem`.
|
|
272
|
+
- **Excel:** precisa do pacote `openpyxl`, que **não** é dependência declarada do MCP. Sem ele, o
|
|
273
|
+
`xlsx` recusa com a instrução `pip install openpyxl` e o CSV e o JSON seguem funcionando.
|
|
274
|
+
- **O que é recusado:** escrita, login, `treasy_selecionar_empresa`, a própria exportadora, empresa não
|
|
275
|
+
selecionada, `schema` diferente do selecionado, mais de 200 mil linhas e ferramenta que devolve texto
|
|
276
|
+
de tela em vez de tabela.
|
|
277
|
+
- **Gateway:** `treasy_exportar` não exporta resposta do gateway, porque `treasy_api_executar` é de escrita.
|
|
278
|
+
- **Cuidado:** o arquivo fica em texto puro no disco. O Claude Code não deve lê-lo (`Read`, `Bash`):
|
|
279
|
+
a negação de leitura dessa pasta é configurada no esforço `002676`.
|
|
280
|
+
|
|
281
|
+
----
|
|
282
|
+
|
|
283
|
+
# SANDBOX
|
|
284
|
+
|
|
285
|
+
## Build
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
docker build -t treasy/sandbox/treasy-copilot-mcp . -f Dockerfile
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Scripts Helm
|
|
292
|
+
|
|
293
|
+
### install
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
helm install treasy-copilot-mcp helm/sandbox/. --debug
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### install test
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
helm install treasy-copilot-mcp helm/sandbox/. --dry-run --debug
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### upgrade
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
helm upgrade treasy-copilot-mcp helm/sandbox/. --debug
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### upgrade test
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
helm upgrade treasy-copilot-mcp helm/sandbox/. --dry-run --debug
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### rollback
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
helm rollback treasy-copilot-mcp --debug
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### delete
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
helm delete treasy-copilot-mcp --debug
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### package
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
helm package treasy-copilot-mcp helm/sandbox/. --debug
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
<br>
|
|
336
|
+
<br>
|
|
337
|
+
|
|
338
|
+
----
|
|
339
|
+
|
|
340
|
+
# QA
|
|
341
|
+
|
|
342
|
+
## Build
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
docker build -t treasy/qa/treasy-copilot-mcp . -f Dockerfile
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
## Scripts Helm
|
|
349
|
+
|
|
350
|
+
### install
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
helm install treasy-copilot-mcp-qa helm/qa/. --debug
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### install test
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
helm install treasy-copilot-mcp-qa helm/qa/. --dry-run --debug
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### upgrade
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
helm upgrade treasy-copilot-mcp-qa helm/qa/. --debug
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### upgrade test
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
helm upgrade treasy-copilot-mcp-qa helm/qa/. --dry-run --debug
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### rollback
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
helm rollback treasy-copilot-mcp-qa --debug
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### delete
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
helm delete treasy-copilot-mcp-qa --debug
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### package
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
helm package treasy-copilot-mcp-qa helm/qa/. --debug
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
<br>
|
|
394
|
+
<br>
|
|
395
|
+
|
|
396
|
+
----
|
|
397
|
+
|
|
398
|
+
# MASTER (PROD)
|
|
399
|
+
|
|
400
|
+
## Build
|
|
401
|
+
|
|
402
|
+
```bash
|
|
403
|
+
docker build -t treasy/master/treasy-copilot-mcp . -f Dockerfile
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
## Scripts Helm
|
|
407
|
+
|
|
408
|
+
### install
|
|
409
|
+
|
|
410
|
+
```bash
|
|
411
|
+
helm install treasy-copilot-mcp helm/master/. --debug
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### install test
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
helm install treasy-copilot-mcp helm/master/. --dry-run --debug
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### upgrade
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
helm upgrade treasy-copilot-mcp helm/master/. --debug
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### upgrade test
|
|
427
|
+
|
|
428
|
+
```bash
|
|
429
|
+
helm upgrade treasy-copilot-mcp helm/master/. --dry-run --debug
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### rollback
|
|
433
|
+
|
|
434
|
+
```bash
|
|
435
|
+
helm rollback treasy-copilot-mcp --debug
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### delete
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
helm delete treasy-copilot-mcp --debug
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### package
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
helm package treasy-copilot-mcp helm/master/. --debug
|
|
448
|
+
```
|