env_set_group
Assigns or changes the group of an existing API environment. Use an empty string to make the environment global.
Instructions
Asigna o cambia el grupo de un entorno existente. Para sacarlo a global, pasar group vacío "".
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | Nombre del entorno | |
| group | Yes | Nombre del grupo. Cadena vacía "" para hacerlo global |
Implementation Reference
- src/tools/environment.ts:639-670 (handler)Main tool handler for 'env_set_group'. Registers the tool on the MCP server, parses the 'environment' and 'group' params, auto-creates the group if it doesn't exist (when groupName is non-empty), then calls storage.setEnvironmentGroup() to assign the environment to the group (or make it global with empty string). Returns a success/error message.
// ── env_set_group ── server.tool( 'env_set_group', 'Asigna o cambia el grupo de un entorno existente. Para sacarlo a global, pasar group vacío "".', { environment: z.string().describe('Nombre del entorno'), group: z.string().describe('Nombre del grupo. Cadena vacía "" para hacerlo global'), }, async (params) => { try { const groupName = params.group || null // Si el grupo no existe, crearlo if (groupName) { const existing = await storage.getGroup(groupName) if (!existing) { await storage.createGroup(groupName) } } await storage.setEnvironmentGroup(params.environment, groupName) const msg = groupName ? `Entorno '${params.environment}' asignado al grupo '${groupName}'` : `Entorno '${params.environment}' ahora es global (sin grupo)` return { content: [{ type: 'text' as const, text: msg }] } } catch (error) { const message = error instanceof Error ? error.message : String(error) return { content: [{ type: 'text' as const, text: `Error: ${message}` }], isError: true } } }, ) - src/tools/environment.ts:641-646 (schema)Schema definition for env_set_group inputs: expects 'environment' (string) and 'group' (string, where empty string makes it global). Uses Zod for validation.
'env_set_group', 'Asigna o cambia el grupo de un entorno existente. Para sacarlo a global, pasar group vacío "".', { environment: z.string().describe('Nombre del entorno'), group: z.string().describe('Nombre del grupo. Cadena vacía "" para hacerlo global'), }, - src/tools/environment.ts:639-670 (registration)Registration of the 'env_set_group' tool via server.tool() inside registerEnvironmentTools(). The tool is named 'env_set_group' with Spanish-language description.
// ── env_set_group ── server.tool( 'env_set_group', 'Asigna o cambia el grupo de un entorno existente. Para sacarlo a global, pasar group vacío "".', { environment: z.string().describe('Nombre del entorno'), group: z.string().describe('Nombre del grupo. Cadena vacía "" para hacerlo global'), }, async (params) => { try { const groupName = params.group || null // Si el grupo no existe, crearlo if (groupName) { const existing = await storage.getGroup(groupName) if (!existing) { await storage.createGroup(groupName) } } await storage.setEnvironmentGroup(params.environment, groupName) const msg = groupName ? `Entorno '${params.environment}' asignado al grupo '${groupName}'` : `Entorno '${params.environment}' ahora es global (sin grupo)` return { content: [{ type: 'text' as const, text: msg }] } } catch (error) { const message = error instanceof Error ? error.message : String(error) return { content: [{ type: 'text' as const, text: `Error: ${message}` }], isError: true } } }, ) - src/lib/storage.ts:270-290 (helper)storage.setEnvironmentGroup() helper: loads the environment by name, clears its old group's default if needed, sets the new group (or undefined for global), and persists.
async setEnvironmentGroup(envName: string, groupName: string | null): Promise<void> { const env = await this.getEnvironment(envName) if (!env) { throw new Error(`Entorno '${envName}' no encontrado`) } // Si tenia grupo y era el default, limpiar if (env.group) { const oldGroup = await this.getGroup(env.group) if (oldGroup?.default === envName) { oldGroup.default = undefined oldGroup.updatedAt = new Date().toISOString() await this.saveGroup(oldGroup) } } env.group = groupName ?? undefined env.updatedAt = new Date().toISOString() const filePath = join(this.environmentsDir, `${this.sanitizeName(envName)}.json`) await this.writeJson(filePath, env) } - src/lib/storage.ts:386-401 (helper)storage.createGroup() and storage.getGroup() helpers used by the handler to auto-create groups if they don't exist.
async createGroup(name: string): Promise<EnvironmentGroup> { await this.ensureDir('groups') const existing = await this.getGroup(name) if (existing) { throw new Error(`El grupo '${name}' ya existe`) } const now = new Date().toISOString() const group: EnvironmentGroup = { name, scopes: [], createdAt: now, updatedAt: now } await this.saveGroup(group) return group } async getGroup(name: string): Promise<EnvironmentGroup | null> { const filePath = join(this.groupsDir, `${this.sanitizeName(name)}.json`) return this.readJson<EnvironmentGroup>(filePath) }