Skip to main content
Glama

magg_remove_server

Delete a specified server from the MAGG MCP server to manage and optimize server configurations effectively. Input the server name to execute the removal process.

Instructions

Remove a server.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesServer name to remove

Implementation Reference

  • Core handler for 'magg_remove_server' tool. Removes the specified server from configuration, saves config, unmounts the server, and returns appropriate success/error response.
    async def remove_server(
        self,
        name: Annotated[str, Field(description="Server name to remove")],
    ) -> MaggResponse:
        """Remove a server."""
        try:
            config = self.config
    
            if name in config.servers:
                config.remove_server(name)
    
                if not self.save_config(config):
                    return MaggResponse.error(f"Failed to save configuration after removing server '{name}'")
    
                await self.server_manager.unmount_server(name)
                return MaggResponse.success({
                    "action": "server_removed",
                    "server": {"name": name}
                })
            else:
                return MaggResponse.error(f"Server '{name}' not found")
    
        except Exception as e:
            return MaggResponse.error(f"Failed to remove server: {str(e)}")
  • The tools list in _register_tools() method that includes the registration tuple for 'magg_remove_server' using self.remove_server method and dynamic name f'{self_prefix_}remove_server'.
    tools = [
        (self.add_server, f"{self_prefix_}add_server", None),
        (self.remove_server, f"{self_prefix_}remove_server", None),
        (self.list_servers, f"{self_prefix_}list_servers", None),
        (self.enable_server, f"{self_prefix_}enable_server", None),
        (self.disable_server, f"{self_prefix_}disable_server", None),
        (self.search_servers, f"{self_prefix_}search_servers", None),
        (self.smart_configure, f"{self_prefix_}smart_configure", None),
        (self.analyze_servers, f"{self_prefix_}analyze_servers", None),
        (self.status, f"{self_prefix_}status", None),
        (self.check, f"{self_prefix_}check", None),
        (self.reload_config_tool, f"{self_prefix_}reload_config", None),
        (self.load_kit, f"{self_prefix_}load_kit", None),
        (self.unload_kit, f"{self_prefix_}unload_kit", None),
        (self.list_kits, f"{self_prefix_}list_kits", None),
        (self.kit_info, f"{self_prefix_}kit_info", None),
    ]
  • The registration loop that applies self.mcp.tool() decorator to each method in the tools list, including remove_server, using a wrapper.
    for method, tool_name, options in tools:
        self.mcp.tool(name=tool_name, **(options or {}))(call_tool_wrapper(method))
  • Helper method called by the handler to unmount the server: closes client, removes from FastMCP internals, and cleans up tracking.
    async def unmount_server(self, name: str) -> bool:
        """Unmount a server."""
        if name in self.mounted_servers:
            unmounted = self._unmount_from_fastmcp(name)
            if unmounted:
                logger.debug("Unmounted server %s from FastMCP", name)
            else:
                logger.debug("Server %s was not found in FastMCP's mounted servers", name)
    
            server_info = self.mounted_servers.get(name)
            if server_info and server_info.client:
                try:
                    await server_info.client.close()
                    logger.debug("Closed client for server %s", name)
                except Exception as e:
                    logger.warning("Error closing client for server %s: %s", name, e)
    
            del self.mounted_servers[name]
            logger.debug("Unmounted server %s", name)
            return True
    
        else:
            logger.warning("Server %s is not mounted, cannot unmount", name)
            return False
  • Input schema defined via Pydantic Annotated Field for the 'name' parameter.
    async def remove_server(
        self,
        name: Annotated[str, Field(description="Server name to remove")],
    ) -> MaggResponse:

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/sitbon/magg'

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