@renanlido/tia-openness-mcp 1.1.0 → 1.2.0

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.
Files changed (3) hide show
  1. package/README.md +25 -8
  2. package/dist/index.js +396 -396
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # TIA Openness MCP server
2
2
 
3
3
  Servidor **MCP (stdio)** que é um **cliente HTTP puro** sobre a API `serve` do TIA Openness
4
- (veja [../docs/API-HTTP.md](../docs/API-HTTP.md)). Não referencia Openness / net48 / x64 — toda a
4
+ (veja `docs/API-HTTP.md` no repositório). Não referencia Openness / net48 / x64 — toda a
5
5
  complexidade (`AssemblyResolve`, worker serial MTA) vive no processo `serve`. Aqui só falamos **MCP de um
6
6
  lado** e **HTTP/JSON do outro**.
7
7
 
@@ -76,12 +76,12 @@ com o **mesmo `planHash`**. Hash errado ou `approved` ausente → envelope `requ
76
76
  re-externalizado, o "Load Preview" real não é exposto e o G3 é a salvaguarda da **camada do MCP** (não bypassável só por texto do LLM).
77
77
 
78
78
  ### M5 — ingestão de project-spec (orquestra M1–M4)
79
- Aceita o **project-spec** estruturado ([../docs/TIA-BEST-PRACTICES.md](../docs/TIA-BEST-PRACTICES.md) §13.2; JSON Schema em [../.claude-plugin/schemas/project-spec.schema.json](../.claude-plugin/schemas/project-spec.schema.json)):
79
+ Aceita o **project-spec** estruturado (`docs/TIA-BEST-PRACTICES.md` §13.2; JSON Schema em `.claude-plugin/schemas/project-spec.schema.json`):
80
80
  - **`tia_spec_validate`** (R, determinístico, **sem serve**): valida forma + regras de campo cruzado — R-NAMES (nomes únicos), R-TYPEID (`OrderNumber:<MLFB>/V<fw>`), R-SUBNET (IP∈CIDR, CPU+IO na mesma subnet, 1 IO-system), R-LANGFAM (STL/GRAPH só S7-1500), R-MODLIMIT, e **G5** (`safety.required && autonomous ⇒ REJECT`).
81
81
  - **`tia_spec_plan`** (sem serve): transforma um spec válido na sequência ordenada de operações (subnets→devices→módulos→rede→tags→blocos→compile).
82
82
  - **`tia_spec_apply`**: orquestra o build OFFLINE num projeto aberto (valida → G5 → executa serial → compila), **para no 1º erro** e **nunca baixa** (download é o GATE G3, sempre humano). `dryRun:true` devolve o plano.
83
83
 
84
- > **MCP M0–M5 COMPLETO** (73 tools). O que falta é **runtime** (validar contra um TIA real — precisa reload + serve + hardware nos gates) e o **C# P0.5** (re-externalizar o auto-confirm do download p/ o G3 expor o Load-Preview de verdade). Detalhe em [../docs/ROADMAP.md](../docs/ROADMAP.md) §3.
84
+ > **MCP M0–M5 COMPLETO** (~74 tools), **validado em runtime** contra um TIA Portal V21 real (incluindo **deploy em hardware** num S7-1200) e **publicado no npm**. Roadmap e marcos em `docs/ROADMAP.md` §3.
85
85
 
86
86
  ## Configuração (env)
87
87
 
@@ -149,7 +149,7 @@ npm install -g . # o prepack compila e instala o b
149
149
  ## Publicação (npm público + semantic-release)
150
150
 
151
151
  Versionamento **automático por commits convencionais** (`feat` → minor, `fix` → patch, `BREAKING CHANGE`
152
- → major). O workflow [../.github/workflows/release-mcp.yml](../.github/workflows/release-mcp.yml) dispara
152
+ → major). O workflow `.github/workflows/release-mcp.yml` dispara
153
153
  no push para `main` **quando algo em `mcp/` muda** (e `semantic-release-monorepo` filtra os commits por
154
154
  esse path), builda e publica no **npm público** (`registry.npmjs.org`, `publishConfig.access: public`).
155
155
 
@@ -169,16 +169,24 @@ commitar o `CHANGELOG`.
169
169
  > Config validada localmente: versões dedupadas em `semantic-release@24`; o dry-run carregou config/plugins
170
170
  > e só parou por o repo remoto ainda não existir.
171
171
 
172
- ## Registro no Claude Code (escopo de projeto)
172
+ ## Registro no Claude Code
173
173
 
174
- O [../.mcp.json](../.mcp.json) na raiz já registra o servidor `tia` apontando para o binário instalado:
174
+ **Não precisa instalar nada** — o recomendado é o `npx`, que baixa e roda o pacote publicado. Um comando
175
+ só (escopo de **usuário**):
176
+
177
+ ```bash
178
+ claude mcp add --transport stdio --env TIA_API_BASE=http://localhost:5000 --scope user tia -- npx -y @renanlido/tia-openness-mcp
179
+ ```
180
+
181
+ Confira com `claude mcp list` e `claude mcp get tia`. O equivalente por **`.mcp.json`** na raiz do projeto
182
+ (escopo de **projeto**) — também via `npx`, sem instalar:
175
183
 
176
184
  ```jsonc
177
185
  {
178
186
  "mcpServers": {
179
187
  "tia": {
180
- "command": "tia-openness-mcp", // binário do pacote (PATH); requer instalação (A ou B)
181
- "args": [],
188
+ "command": "npx", // baixa e roda o pacote do npm — NADA instalado
189
+ "args": ["-y", "@renanlido/tia-openness-mcp"],
182
190
  "env": {
183
191
  "TIA_API_BASE": "${TIA_API_BASE:-http://localhost:5000}" // IP:porta do serve (use o IP da VM se remoto)
184
192
  }
@@ -187,6 +195,15 @@ O [../.mcp.json](../.mcp.json) na raiz já registra o servidor `tia` apontando p
187
195
  }
188
196
  ```
189
197
 
198
+ > **`tia-openness-mcp` NÃO é um arquivo do repositório** — é o nome do **bin** do pacote (`package.json` →
199
+ > `"bin": { "tia-openness-mcp": "dist/index.js" }`). Esse atalho só fica no seu PATH **se** você instalar
200
+ > global (`npm install -g @renanlido/tia-openness-mcp`); só então faria sentido
201
+ > `"command": "tia-openness-mcp", "args": []`. O `npx` dispensa esse passo — por isso é o recomendado.
202
+
203
+ **Outros clientes** (Claude Desktop, Codex, Gemini CLI, Cursor, VS Code, Windsurf): o guia canônico de
204
+ instalação — com os formatos exatos de cada um e a pegadinha do `cmd /c npx` no Windows — está em
205
+ `docs/INSTALL.md` no repositório.
206
+
190
207
  **Envs opcionais** (default embutido no MCP — só defina para sobrescrever): `TIA_API_TIMEOUT_MS` (15000),
191
208
  `TIA_SLOW_TIMEOUT_MS` (120000), `TIA_CONNECT_TIMEOUT_MS` (30000). Ex.: `--env TIA_SLOW_TIMEOUT_MS=180000`
192
209
  no `claude mcp add`, ou a chave correspondente no `env` do `.mcp.json`.