@weppy/roblox-mcp 0.1.7 → 0.1.9
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.
- package/.claude-plugin/marketplace.json +3 -3
- package/CHANGELOG.md +5 -9
- package/README.md +38 -26
- package/docs/en/installation/README.md +51 -0
- package/docs/en/installation/roblox-plugin.md +6 -6
- package/docs/en/pro-upgrade.md +5 -6
- package/docs/en/tools/overview.md +87 -230
- package/docs/es/README.md +27 -28
- package/docs/es/installation/README.md +44 -0
- package/docs/es/installation/roblox-plugin.md +6 -6
- package/docs/es/pro-upgrade.md +5 -6
- package/docs/es/tools/overview.md +88 -231
- package/docs/id/README.md +39 -27
- package/docs/id/installation/README.md +51 -0
- package/docs/id/installation/roblox-plugin.md +6 -6
- package/docs/id/pro-upgrade.md +5 -6
- package/docs/id/tools/overview.md +88 -231
- package/docs/ja/README.md +40 -28
- package/docs/ja/installation/README.md +51 -0
- package/docs/ja/installation/roblox-plugin.md +6 -6
- package/docs/ja/pro-upgrade.md +5 -6
- package/docs/ja/tools/overview.md +88 -231
- package/docs/ko/README.md +39 -27
- package/docs/ko/installation/README.md +51 -0
- package/docs/ko/installation/roblox-plugin.md +6 -6
- package/docs/ko/pro-upgrade.md +5 -6
- package/docs/ko/tools/overview.md +88 -231
- package/docs/pt-br/README.md +39 -27
- package/docs/pt-br/installation/README.md +51 -0
- package/docs/pt-br/installation/roblox-plugin.md +6 -6
- package/docs/pt-br/pro-upgrade.md +5 -6
- package/docs/pt-br/tools/overview.md +88 -231
- package/package.json +1 -1
- package/plugins/weppy-roblox-mcp/.claude-plugin/plugin.json +1 -1
- package/plugins/weppy-roblox-mcp/dist/index.js +1 -1
- package/plugins/weppy-roblox-mcp/skills/roblox-game-dev/references/mcp-tools.md +9 -4
- /package/docs/en/installation/{antigravity.md → ai-apps/antigravity.md} +0 -0
- /package/docs/en/installation/{claude-app.md → ai-apps/claude-app.md} +0 -0
- /package/docs/en/installation/{claude-code.md → ai-apps/claude-code.md} +0 -0
- /package/docs/en/installation/{codex-app.md → ai-apps/codex-app.md} +0 -0
- /package/docs/en/installation/{codex-cli.md → ai-apps/codex-cli.md} +0 -0
- /package/docs/en/installation/{gemini-cli.md → ai-apps/gemini-cli.md} +0 -0
- /package/docs/es/installation/{antigravity.md → ai-apps/antigravity.md} +0 -0
- /package/docs/es/installation/{claude-app.md → ai-apps/claude-app.md} +0 -0
- /package/docs/es/installation/{claude-code.md → ai-apps/claude-code.md} +0 -0
- /package/docs/es/installation/{codex-app.md → ai-apps/codex-app.md} +0 -0
- /package/docs/es/installation/{codex-cli.md → ai-apps/codex-cli.md} +0 -0
- /package/docs/es/installation/{gemini-cli.md → ai-apps/gemini-cli.md} +0 -0
- /package/docs/id/installation/{antigravity.md → ai-apps/antigravity.md} +0 -0
- /package/docs/id/installation/{claude-app.md → ai-apps/claude-app.md} +0 -0
- /package/docs/id/installation/{claude-code.md → ai-apps/claude-code.md} +0 -0
- /package/docs/id/installation/{codex-app.md → ai-apps/codex-app.md} +0 -0
- /package/docs/id/installation/{codex-cli.md → ai-apps/codex-cli.md} +0 -0
- /package/docs/id/installation/{gemini-cli.md → ai-apps/gemini-cli.md} +0 -0
- /package/docs/ja/installation/{antigravity.md → ai-apps/antigravity.md} +0 -0
- /package/docs/ja/installation/{claude-app.md → ai-apps/claude-app.md} +0 -0
- /package/docs/ja/installation/{claude-code.md → ai-apps/claude-code.md} +0 -0
- /package/docs/ja/installation/{codex-app.md → ai-apps/codex-app.md} +0 -0
- /package/docs/ja/installation/{codex-cli.md → ai-apps/codex-cli.md} +0 -0
- /package/docs/ja/installation/{gemini-cli.md → ai-apps/gemini-cli.md} +0 -0
- /package/docs/ko/installation/{antigravity.md → ai-apps/antigravity.md} +0 -0
- /package/docs/ko/installation/{claude-app.md → ai-apps/claude-app.md} +0 -0
- /package/docs/ko/installation/{claude-code.md → ai-apps/claude-code.md} +0 -0
- /package/docs/ko/installation/{codex-app.md → ai-apps/codex-app.md} +0 -0
- /package/docs/ko/installation/{codex-cli.md → ai-apps/codex-cli.md} +0 -0
- /package/docs/ko/installation/{gemini-cli.md → ai-apps/gemini-cli.md} +0 -0
- /package/docs/pt-br/installation/{antigravity.md → ai-apps/antigravity.md} +0 -0
- /package/docs/pt-br/installation/{claude-app.md → ai-apps/claude-app.md} +0 -0
- /package/docs/pt-br/installation/{claude-code.md → ai-apps/claude-code.md} +0 -0
- /package/docs/pt-br/installation/{codex-app.md → ai-apps/codex-app.md} +0 -0
- /package/docs/pt-br/installation/{codex-cli.md → ai-apps/codex-cli.md} +0 -0
- /package/docs/pt-br/installation/{gemini-cli.md → ai-apps/gemini-cli.md} +0 -0
|
@@ -1,238 +1,95 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Funcionalidades do Roblox MCP
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Conecte a IA ao Roblox Studio e automatize diversas tarefas. Veja o que voce pode fazer por categoria.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
###
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
| Ferramenta | Descricao |
|
|
45
|
-
|------------|-----------|
|
|
46
|
-
| `create_script` | Criar novo script |
|
|
47
|
-
| `get_script_source` | Obter codigo fonte do script |
|
|
48
|
-
| `set_script_source` | Atualizar codigo fonte do script |
|
|
49
|
-
| `delete_script` | Excluir script |
|
|
50
|
-
| `edit_script_lines` | Editar linhas especificas |
|
|
51
|
-
| `insert_script_lines` | Inserir linhas |
|
|
52
|
-
| `delete_script_lines` | Excluir linhas |
|
|
53
|
-
| `search_in_scripts` | Pesquisar em scripts |
|
|
54
|
-
| `get_script_dependencies` | Obter dependencias |
|
|
55
|
-
|
|
56
|
-
### Selection (Selecao) - 12
|
|
57
|
-
|
|
58
|
-
| Ferramenta | Descricao |
|
|
59
|
-
|------------|-----------|
|
|
60
|
-
| `get_selection` | Obter instancias selecionadas atualmente |
|
|
61
|
-
| `get_selection_context` | Obter selecao com contexto |
|
|
62
|
-
| `get_selection_details` | Obter detalhes da selecao |
|
|
63
|
-
| `set_selection` | Definir selecao de instancias |
|
|
64
|
-
| `clear_selection` | Limpar selecao |
|
|
65
|
-
| `add_to_selection` | Adicionar a selecao |
|
|
66
|
-
| `remove_from_selection` | Remover da selecao |
|
|
67
|
-
| `get_place_info` | Obter informacoes do Place |
|
|
68
|
-
| `get_services` | Obter lista de servicos do jogo |
|
|
69
|
-
| `get_studio_settings` | Obter configuracoes do Studio |
|
|
70
|
-
| `run_command` | Executar comando do Studio |
|
|
71
|
-
| `watch_selection` | Monitorar alteracoes de selecao |
|
|
72
|
-
|
|
73
|
-
### Search (Pesquisa) - 2
|
|
74
|
-
|
|
75
|
-
| Ferramenta | Descricao |
|
|
76
|
-
|------------|-----------|
|
|
77
|
-
| `search_by_name` | Pesquisar instancias por nome |
|
|
78
|
-
| `search_by_class` | Pesquisar instancias por classe |
|
|
79
|
-
|
|
80
|
-
### Tag - 5
|
|
81
|
-
|
|
82
|
-
| Ferramenta | Descricao |
|
|
83
|
-
|------------|-----------|
|
|
84
|
-
| `add_tag` | Adicionar tag a instancia |
|
|
85
|
-
| `remove_tag` | Remover tag da instancia |
|
|
86
|
-
| `get_tags` | Obter lista de tags da instancia |
|
|
87
|
-
| `get_tagged` | Obter lista de instancias com tag |
|
|
88
|
-
| `has_tag` | Verificar se instancia possui tag |
|
|
89
|
-
|
|
90
|
-
### Camera - 4
|
|
91
|
-
|
|
92
|
-
| Ferramenta | Descricao |
|
|
93
|
-
|------------|-----------|
|
|
94
|
-
| `get_camera_info` | Obter informacoes da camera |
|
|
95
|
-
| `get_suggested_camera_view` | Obter visualizacao de camera sugerida |
|
|
96
|
-
| `focus_camera_path` | Focar camera em instancia por caminho |
|
|
97
|
-
| `focus_camera_position` | Focar camera em posicao do mundo |
|
|
98
|
-
|
|
99
|
-
### Log - 3
|
|
100
|
-
|
|
101
|
-
| Ferramenta | Descricao |
|
|
102
|
-
|------------|-----------|
|
|
103
|
-
| `get_output_logs` | Obter logs de saida |
|
|
104
|
-
| `clear_output_logs` | Limpar logs de saida |
|
|
105
|
-
| `get_recent_errors` | Obter erros recentes |
|
|
106
|
-
|
|
107
|
-
### Connection (Conexao) - 2
|
|
108
|
-
|
|
109
|
-
| Ferramenta | Descricao |
|
|
110
|
-
|------------|-----------|
|
|
111
|
-
| `get_connection_info` | Obter status da conexao |
|
|
112
|
-
| `get_usage_status` | Obter status de uso/cota |
|
|
7
|
+
## Basic (Gratuito)
|
|
8
|
+
|
|
9
|
+
### Gerenciamento de Objetos
|
|
10
|
+
|
|
11
|
+
Crie, clone, delete e mova objetos do jogo como partes, modelos e pastas. Tarefas como "Crie uma parte vermelha" ou "Clone este modelo e coloque ao lado" sao possiveis.
|
|
12
|
+
|
|
13
|
+
### Propriedades
|
|
14
|
+
|
|
15
|
+
Leia e altere todas as propriedades dos objetos como tamanho, cor, posicao e material. Voce pode alterar varias propriedades de uma vez ou ajustar relativamente com base nos valores atuais.
|
|
16
|
+
|
|
17
|
+
### Scripts
|
|
18
|
+
|
|
19
|
+
Crie novos scripts, leia o codigo existente e modifique. Voce pode editar linhas especificas, buscar texto dentro de scripts ou identificar dependencias para ver quais modulos sao referenciados.
|
|
20
|
+
|
|
21
|
+
### Selecao
|
|
22
|
+
|
|
23
|
+
Verifique os objetos selecionados, altere a selecao e limpe a selecao. Essencial para entender e controlar com o que voce esta trabalhando no Studio.
|
|
24
|
+
|
|
25
|
+
### Busca
|
|
26
|
+
|
|
27
|
+
Encontre objetos no jogo por nome ou classe (tipo).
|
|
28
|
+
|
|
29
|
+
### Tags
|
|
30
|
+
|
|
31
|
+
Adicione ou remova tags de objetos e encontre todos os objetos com uma tag especifica de uma vez. Util para gerenciar grupos de objetos semelhantes.
|
|
32
|
+
|
|
33
|
+
### Camera
|
|
34
|
+
|
|
35
|
+
Mova a camera para objetos ou posicoes especificas. Conveniente para verificar rapidamente a area em que voce esta trabalhando.
|
|
36
|
+
|
|
37
|
+
### Logs
|
|
38
|
+
|
|
39
|
+
Confira logs de saida e erros que ocorreram durante a execucao do jogo. Ajuda a encontrar e corrigir bugs.
|
|
40
|
+
|
|
41
|
+
### Conexao
|
|
42
|
+
|
|
43
|
+
Verifique o status de conexao e uso entre o servidor MCP e o Roblox Studio.
|
|
113
44
|
|
|
114
45
|
---
|
|
115
46
|
|
|
116
|
-
##
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|------------|-----------|
|
|
166
|
-
| `set_lighting` | Definir propriedades de iluminacao |
|
|
167
|
-
| `set_atmosphere` | Definir propriedades de Atmosphere |
|
|
168
|
-
| `set_sky` | Definir propriedades de Sky |
|
|
169
|
-
| `set_terrain` | Definir propriedades de Terrain |
|
|
170
|
-
| `set_time_of_day` | Definir hora do dia |
|
|
171
|
-
|
|
172
|
-
### State (Estado) - 9
|
|
173
|
-
|
|
174
|
-
| Ferramenta | Descricao |
|
|
175
|
-
|------------|-----------|
|
|
176
|
-
| `sync_workspace_state` | Sincronizar estado do Workspace |
|
|
177
|
-
| `get_workspace_snapshot` | Obter snapshot do Workspace |
|
|
178
|
-
| `get_recent_changes` | Obter alteracoes recentes |
|
|
179
|
-
| `clear_change_history` | Limpar historico de alteracoes |
|
|
180
|
-
| `get_viewport_info` | Obter informacoes do viewport |
|
|
181
|
-
| `get_workspace_metadata` | Obter metadados do Workspace |
|
|
182
|
-
| `get_script_list` | Obter lista de scripts |
|
|
183
|
-
| `get_selection_info` | Obter informacoes de selecao |
|
|
184
|
-
| `clear_state_cache` | Limpar cache de estado |
|
|
185
|
-
|
|
186
|
-
### Spatial (Espacial) - 5
|
|
187
|
-
|
|
188
|
-
| Ferramenta | Descricao |
|
|
189
|
-
|------------|-----------|
|
|
190
|
-
| `get_spatial_map` | Obter mapa espacial da area |
|
|
191
|
-
| `find_empty_space` | Encontrar espaco vazio na area |
|
|
192
|
-
| `get_bounds` | Obter bounding box da instancia |
|
|
193
|
-
| `snap_to_grid` | Ajustar posicao a grade |
|
|
194
|
-
| `check_collision` | Verificar colisao entre instancias |
|
|
195
|
-
|
|
196
|
-
### Raycast - 8
|
|
197
|
-
|
|
198
|
-
| Ferramenta | Descricao |
|
|
199
|
-
|------------|-----------|
|
|
200
|
-
| `raycast` | Executar raycast e obter informacoes de colisao |
|
|
201
|
-
| `find_ground` | Encontrar posicao do solo naquele ponto |
|
|
202
|
-
| `check_placement` | Verificar se objeto pode ser colocado |
|
|
203
|
-
| `multi_raycast` | Executar multiplos raycasts |
|
|
204
|
-
| `scan_area` | Escanear area e gerar mapa de altura |
|
|
205
|
-
| `find_flat_areas` | Encontrar areas planas para colocacao |
|
|
206
|
-
| `find_spawn_positions` | Encontrar posicoes de spawn validas |
|
|
207
|
-
| `analyze_walkable_area` | Analisar area transitavel |
|
|
208
|
-
|
|
209
|
-
### Terrain (Terreno) - 14
|
|
210
|
-
|
|
211
|
-
| Ferramenta | Descricao |
|
|
212
|
-
|------------|-----------|
|
|
213
|
-
| `terrain_fill_block` | Preencher terreno em forma de bloco |
|
|
214
|
-
| `terrain_fill_ball` | Preencher terreno em forma de esfera |
|
|
215
|
-
| `terrain_fill_cylinder` | Preencher terreno em forma de cilindro |
|
|
216
|
-
| `terrain_fill_wedge` | Preencher terreno em forma de cunha |
|
|
217
|
-
| `terrain_clear` | Limpar terreno (usando objeto Region) |
|
|
218
|
-
| `terrain_clear_region` | Limpar terreno (usando coordenadas min/max) |
|
|
219
|
-
| `terrain_replace_material` | Substituir material do terreno |
|
|
220
|
-
| `terrain_get_material_color` | Obter cor do material do terreno |
|
|
221
|
-
| `terrain_set_material_color` | Definir cor do material do terreno |
|
|
222
|
-
| `terrain_read_voxel` | Ler voxel unico |
|
|
223
|
-
| `terrain_read_voxels` | Ler dados de voxels |
|
|
224
|
-
| `terrain_write_voxels` | Escrever dados de voxels |
|
|
225
|
-
| `terrain_generate` | Gerar terreno proceduralmente |
|
|
226
|
-
| `terrain_smooth` | Suavizar terreno |
|
|
227
|
-
|
|
228
|
-
### Visualization (Visualizacao) - 7
|
|
229
|
-
|
|
230
|
-
| Ferramenta | Descricao |
|
|
231
|
-
|------------|-----------|
|
|
232
|
-
| `visualization_create_area` | Criar visualizacao de area |
|
|
233
|
-
| `visualization_create_marker` | Criar visualizacao de marcador (com preview) |
|
|
234
|
-
| `visualization_create_line` | Criar visualizacao de linha |
|
|
235
|
-
| `visualization_remove` | Remover visualizacao |
|
|
236
|
-
| `visualization_clear` | Remover todas as visualizacoes |
|
|
237
|
-
| `visualization_get_status` | Obter status da visualizacao |
|
|
238
|
-
| `visualization_focus` | Focar camera em item de visualizacao |
|
|
47
|
+
## Pro
|
|
48
|
+
|
|
49
|
+
Se voce precisa de funcionalidades mais poderosas, pode fazer upgrade para o Pro.
|
|
50
|
+
|
|
51
|
+
### Selecao Avancada
|
|
52
|
+
|
|
53
|
+
Obtenha o contexto detalhado da selecao com propriedades e codigo-fonte, explore a hierarquia de selecao, adicione/remova itens da selecao, e consulte informacoes do Place e servicos do jogo. Util para fluxos de trabalho avancados e automacao.
|
|
54
|
+
|
|
55
|
+
### Scripts Avancados
|
|
56
|
+
|
|
57
|
+
Substitua conteudo em multiplos scripts de uma vez ou execute codigo Luau instantaneamente. Util para modificacoes repetitivas de codigo ou testes rapidos.
|
|
58
|
+
|
|
59
|
+
### Busca Avancada
|
|
60
|
+
|
|
61
|
+
Explore a arvore de arquivos completa ou busque objetos por propriedade ou tag. Tenha uma visao completa da estrutura do projeto e consulte todos os descendentes ou ancestrais de objetos especificos.
|
|
62
|
+
|
|
63
|
+
### Operacoes em Massa
|
|
64
|
+
|
|
65
|
+
Crie, delete, modifique ou duplique centenas de objetos de uma vez. Lide rapidamente com tarefas em grande escala como plantar arvores no mapa, mudar a cor de todas as partes ou posicionar objetos segundo padroes.
|
|
66
|
+
|
|
67
|
+
### Assets
|
|
68
|
+
|
|
69
|
+
Busque modelos gratuitos no Roblox Creator Store e insira instantaneamente. Adicione assets por conversa como "Procure um modelo de castelo medieval" ou "Insira um modelo de arma".
|
|
70
|
+
|
|
71
|
+
### Ambiente
|
|
72
|
+
|
|
73
|
+
Configure iluminacao, ceu, nevoa, propriedades do terreno e hora do dia com linguagem natural. Solicitacoes como "Mude para clima de por do sol" ou "Coloque meia-noite" sao possiveis.
|
|
74
|
+
|
|
75
|
+
### Gerenciamento de Estado
|
|
76
|
+
|
|
77
|
+
Salve o estado atual do Workspace como snapshot e consulte mudancas recentes e o estado do viewport. Ajuda a entender o estado atual durante tarefas complexas.
|
|
78
|
+
|
|
79
|
+
### Analise Espacial
|
|
80
|
+
|
|
81
|
+
Determine com precisao o tamanho e posicao de objetos, encontre espacos vazios e verifique colisoes. Voce tambem pode alinhar objetos a uma grade.
|
|
82
|
+
|
|
83
|
+
### Raycast
|
|
84
|
+
|
|
85
|
+
Lance raios invisiveis para encontrar pontos de colisao com terreno ou objetos. Essencial para design de niveis: encontrar posicoes do chao, verificar se objetos podem ser colocados, buscar locais de spawn e analisar areas caminhaveis.
|
|
86
|
+
|
|
87
|
+
### Terreno
|
|
88
|
+
|
|
89
|
+
Preencha, escave e suavize terreno com diversas formas como blocos, esferas, cilindros e cunhas. Altere materiais e cores, ou gere proceduralmente terreno natural com montanhas e rios.
|
|
90
|
+
|
|
91
|
+
### Visualizacao
|
|
92
|
+
|
|
93
|
+
Exiba areas, marcadores e linhas na tela para confirmar visualmente o espaco de trabalho. Util para debugging e revisao de design de niveis.
|
|
94
|
+
|
|
95
|
+
👉 [Guia de Upgrade para Pro](../pro-upgrade.md)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weppy/roblox-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "MCP (Model Context Protocol) server for Roblox Studio integration - enables AI coding agents to interact with Roblox Studio in real-time",
|
|
5
5
|
"main": "plugins/weppy-roblox-mcp/dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -145,7 +145,7 @@ Basic tier users cannot use Pro tools - they will receive a friendly message sug
|
|
|
145
145
|
Stack: ${e.stack}`;if(typeof e=="object")try{return`
|
|
146
146
|
`+JSON.stringify(e,null,2).replace(/\n/g,`
|
|
147
147
|
`)}catch{return`
|
|
148
|
-
[Circular or non-serializable object]`}return` ${String(e)}`}static log(e,r,n){if(!this.shouldLog(e))return;let i=this.getTimestamp(),a=up[e],o=this.formatData(n),s=`${up.gray}[${i}]${up.reset} ${a}[${e.toUpperCase()}]${up.reset} ${r}${o}`;console.error(s)}static debug(e,r){this.log("debug",e,r)}static info(e,r){this.log("info",e,r)}static warn(e,r){this.log("warn",e,r)}static error(e,r){this.log("error",e,r)}},S=ox;var RB=new Set(["
|
|
148
|
+
[Circular or non-serializable object]`}return` ${String(e)}`}static log(e,r,n){if(!this.shouldLog(e))return;let i=this.getTimestamp(),a=up[e],o=this.formatData(n),s=`${up.gray}[${i}]${up.reset} ${a}[${e.toUpperCase()}]${up.reset} ${r}${o}`;console.error(s)}static debug(e,r){this.log("debug",e,r)}static info(e,r){this.log("info",e,r)}static warn(e,r){this.log("warn",e,r)}static error(e,r){this.log("error",e,r)}},S=ox;var RB=new Set(["get_selection_context","get_selection_details","add_to_selection","remove_from_selection","watch_selection","get_place_info","get_services","get_studio_settings","run_command","replace_in_scripts","execute_script","get_file_tree","get_project_structure","search_by_property","search_by_tag","get_descendants","get_ancestors","mass_create_instances","mass_delete_instances","mass_set_property","mass_get_property","mass_duplicate","smart_duplicate","batch_execute","modify_children","insert_model","get_asset_info","search_creator_store","search_and_insert_model","insert_free_model","insert_package","export_selection","set_lighting","set_atmosphere","set_sky","set_terrain","set_time_of_day","sync_workspace_state","get_workspace_snapshot","get_recent_changes","get_viewport_info","get_spatial_map","find_empty_space","get_bounds","snap_to_grid","check_collision","raycast","find_ground","check_placement","multi_raycast","scan_area","find_flat_areas","find_spawn_positions","analyze_walkable_area","terrain_fill_block","terrain_fill_ball","terrain_fill_cylinder","terrain_fill_wedge","terrain_clear","terrain_clear_region","terrain_replace_material","terrain_get_material_color","terrain_set_material_color","terrain_read_voxel","terrain_read_voxels","terrain_write_voxels","terrain_generate","terrain_smooth","visualization_create_area","visualization_create_marker","visualization_create_line","visualization_remove","visualization_clear","visualization_get_status","visualization_focus"]),CB=60*1e3,lp=null;function pp(t){return RB.has(t)?"pro":"basic"}function zP(t){lp={...t,timestamp:Date.now()}}function DB(){return!lp||Date.now()-lp.timestamp>CB?null:lp}function TP(t){if(pp(t)==="basic")return{allowed:!0,tier:"basic"};let r=DB();if(!r)return{allowed:!0,tier:"pro"};if(r.tier==="pro")return{allowed:!0,tier:"pro"};if(r.remaining<=0){let n=Math.floor(r.resetIn/3600),i=Math.floor(r.resetIn%3600/60);return{allowed:!1,tier:"pro",remaining:0,error:`Pro tool quota exhausted (${r.used}/${r.limit}). Resets in ${n}h ${i}m. Use basic alternatives or upgrade to Pro.`}}return{allowed:!0,tier:"pro",remaining:r.remaining}}var At="0.1.9";var lx=class{app;server=null;config;commandQueue=new Map;pendingCommands=new Map;globalPendingCommands=[];sseClients=new Set;startTime=Date.now();requestCounts=new Map;cachedSelection=null;isClientMode=!1;baseUrl="";instanceId=Rr();sessionId="";pluginClients=new Map;mcpInstances=new Map;totalCommandsProcessed=0;historyManager=null;constructor(e){this.config=e,this.app=(0,ux.default)(),this.baseUrl=`http://${e.httpHost}:${e.httpPort}`,this.sessionId=this.generateSessionId(),this.setupMiddleware(),this.setupRoutes()}generateSessionId(){let e=this.instanceId.replace(/-/g,"").substring(0,8).toUpperCase();return`${e.substring(0,4)}-${e.substring(4,8)}`}getSessionId(){return this.sessionId}setupMiddleware(){this.app.use(ux.default.json()),this.app.use((e,r,n)=>{r.setHeader("Access-Control-Allow-Origin","http://localhost:3002"),r.setHeader("Access-Control-Allow-Methods","GET, POST, OPTIONS"),r.setHeader("Access-Control-Allow-Headers","Content-Type"),n()}),this.app.use((e,r,n)=>{if(!this.checkRateLimit(e.ip||"unknown")){r.status(429).json({error:"Rate limit exceeded",limit:this.config.maxRequestsPerMinute});return}n()}),this.app.use((e,r,n)=>{S.debug(`${e.method} ${e.path}`,{ip:e.ip}),n()})}checkRateLimit(e){let r=Date.now(),n=r-6e4,i=this.requestCounts.get(e)||[];return i=i.filter(a=>a>n),i.length>=this.config.maxRequestsPerMinute?!1:(i.push(r),this.requestCounts.set(e,i),!0)}setupRoutes(){this.app.get("/events",(e,r)=>this.handleSSEConnection(e,r)),this.app.get("/commands",(e,r)=>this.handleCommandsPoll(e,r)),this.app.post("/result",(e,r)=>this.handleResult(e,r)),this.app.post("/selection-update",(e,r)=>this.handleSelectionUpdate(e,r)),this.app.post("/execute",(e,r)=>this.handleExecute(e,r)),this.app.get("/cached-selection",(e,r)=>this.handleCachedSelectionRequest(e,r)),this.app.post("/register-plugin",(e,r)=>this.handleRegisterPlugin(e,r)),this.app.post("/unregister-plugin",(e,r)=>this.handleUnregisterPlugin(e,r)),this.app.post("/register-mcp",(e,r)=>this.handleRegisterMCP(e,r)),this.app.post("/unregister-mcp",(e,r)=>this.handleUnregisterMCP(e,r)),this.app.get("/connection-info",(e,r)=>this.handleConnectionInfo(r)),this.app.post("/logs",(e,r)=>this.handleLogs(e,r)),this.app.post("/quota-status",(e,r)=>this.handleQuotaStatus(e,r)),this.app.get("/status",(e,r)=>this.handleStatus(r)),this.app.post("/shutdown",(e,r)=>this.handleShutdown(e,r)),this.app.options("*",(e,r)=>{r.sendStatus(200)})}setHistoryManager(e){this.historyManager=e}handleSSEConnection(e,r){S.info("Plugin connected via SSE"),r.setHeader("Content-Type","text/event-stream"),r.setHeader("Cache-Control","no-cache"),r.setHeader("Connection","keep-alive"),this.sseClients.add(r),this.sendSSEEvent(r,{event:"command",id:Rr(),data:{action:"connected",requestId:Rr(),params:{serverVersion:At,timestamp:Date.now()}}});let n=setInterval(()=>{this.sendSSEEvent(r,{event:"command",id:Rr(),data:{action:"keepalive",requestId:Rr(),params:{timestamp:Date.now()}}})},3e4);r.on("close",()=>{S.info("Plugin disconnected from SSE"),clearInterval(n),this.sseClients.delete(r)})}sendSSEEvent(e,r){let n=JSON.stringify(r.data);e.write(`event: ${r.event}
|
|
149
149
|
`),e.write(`id: ${r.id}
|
|
150
150
|
`),e.write(`data: ${n}
|
|
151
151
|
|
|
@@ -51,22 +51,27 @@ For detailed parameters, check MCP tool definitions directly.
|
|
|
51
51
|
| `get_script_dependencies` | Get dependencies |
|
|
52
52
|
| `execute_script` | Execute script |
|
|
53
53
|
|
|
54
|
-
## Selection
|
|
54
|
+
## Selection (Basic)
|
|
55
55
|
|
|
56
56
|
| Tool | Description |
|
|
57
57
|
|------|-------------|
|
|
58
58
|
| `get_selection` | Get currently selected instances |
|
|
59
|
-
| `get_selection_context` | Get selection with context |
|
|
60
|
-
| `get_selection_details` | Get detailed selection info |
|
|
61
59
|
| `set_selection` | Set selection to instances |
|
|
62
60
|
| `clear_selection` | Clear selection |
|
|
61
|
+
|
|
62
|
+
## Selection (Pro)
|
|
63
|
+
|
|
64
|
+
| Tool | Description |
|
|
65
|
+
|------|-------------|
|
|
66
|
+
| `get_selection_context` | Get selection with context |
|
|
67
|
+
| `get_selection_details` | Get detailed selection info |
|
|
63
68
|
| `add_to_selection` | Add to selection |
|
|
64
69
|
| `remove_from_selection` | Remove from selection |
|
|
70
|
+
| `watch_selection` | Watch selection changes |
|
|
65
71
|
| `get_place_info` | Get place information |
|
|
66
72
|
| `get_services` | Get game services |
|
|
67
73
|
| `get_studio_settings` | Get Studio settings |
|
|
68
74
|
| `run_command` | Run Studio command |
|
|
69
|
-
| `watch_selection` | Watch selection changes |
|
|
70
75
|
| `get_cached_selection` | Get cached selection state |
|
|
71
76
|
|
|
72
77
|
## Search
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|