Skip to main content
Glama
devlimelabs

MCP Environment & Installation Manager

by devlimelabs

update-profile

Modify an existing profile's name and description in the MCP Environment & Installation Manager to adjust configuration settings.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
profileIdYesProfile ID to update
nameNoNew name for the profile
descriptionNoNew description for the profile

Implementation Reference

  • The handler function for the 'update-profile' tool. It validates the profileId and name if provided, constructs updates object, calls configService.updateProfile, and returns a JSON response with the updated profile.
    async ({ profileId, name, description }, extra) => { if (!profileId.trim()) { throw new Error("Profile ID cannot be empty"); } if (name !== undefined && !name.trim()) { throw new Error("Profile name cannot be empty"); } const updates: { name?: string; description?: string } = {}; if (name !== undefined) { updates.name = name; } if (description !== undefined) { updates.description = description; } const profile = await configService.updateProfile(profileId, updates); return { content: [ { type: "text", text: JSON.stringify({ success: true, profile }, null, 2) } ] }; }
  • Zod input schema defining parameters for the update-profile tool: required profileId, optional name and description.
    { profileId: z.string().describe("Profile ID to update"), name: z.string().optional().describe("New name for the profile"), description: z.string().optional().describe("New description for the profile") },
  • Registration of the 'update-profile' tool using server.tool(), specifying name, input schema, and handler function within registerProfileTools.
    server.tool( "update-profile", { profileId: z.string().describe("Profile ID to update"), name: z.string().optional().describe("New name for the profile"), description: z.string().optional().describe("New description for the profile") }, async ({ profileId, name, description }, extra) => { if (!profileId.trim()) { throw new Error("Profile ID cannot be empty"); } if (name !== undefined && !name.trim()) { throw new Error("Profile name cannot be empty"); } const updates: { name?: string; description?: string } = {}; if (name !== undefined) { updates.name = name; } if (description !== undefined) { updates.description = description; } const profile = await configService.updateProfile(profileId, updates); return { content: [ { type: "text", text: JSON.stringify({ success: true, profile }, null, 2) } ] }; } );
  • Helper method in ConfigService that performs the actual profile update by modifying the in-memory profiles config and persisting to disk.
    async updateProfile(id: string, updates: Partial<Pick<Profile, 'name' | 'description'>>): Promise<Profile> { const profileIndex = this.profilesConfig.profiles.findIndex(p => p.id === id); if (profileIndex === -1) { throw new Error(`Profile not found: ${id}`); } const profile = this.profilesConfig.profiles[profileIndex]; const updatedProfile = { ...profile, ...updates, updatedAt: new Date().toISOString() }; this.profilesConfig.profiles[profileIndex] = updatedProfile; await this.saveProfiles(); return updatedProfile; }
  • src/server.ts:32-32 (registration)
    Top-level call to registerProfileTools in initializeServer, which registers all profile tools including 'update-profile'.
    registerProfileTools(server, configService);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/devlimelabs/mcp-env-manager-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server