Skip to main content
Glama

magg_kit_info

Retrieve comprehensive details about a specific kit by providing its name. This tool is part of the MAGG MCP server, which enhances LLM capabilities through dynamic tool management and aggregation.

Instructions

Get detailed information about a specific kit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesKit name to get information about

Implementation Reference

  • Handler method for the 'magg_kit_info' tool. Calls kit_manager.get_kit_details(name) and returns a formatted MaggResponse.
    self, name: Annotated[str, Field(description="Kit name to get information about")], ) -> MaggResponse: """Get detailed information about a specific kit.""" try: info = self.kit_manager.get_kit_details(name) if info: return MaggResponse.success(info) else: return MaggResponse.error(f"Kit '{name}' not found") except Exception as e: return MaggResponse.error(f"Failed to get kit info: {str(e)}")
  • Registration of all Magg tools including 'magg_kit_info' via self.mcp.tool() in the loop after this list. self_prefix_ is 'magg_'.
    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), ]
  • Core helper method implementing the logic to retrieve kit details, either from loaded kits or by discovering and loading from file.
    def get_kit_details(self, kit_name: str) -> dict[str, Any] | None: """Get detailed information about a specific kit. Returns: Kit information dict or None if not found """ loaded_kits = self.kits if kit_name in loaded_kits: kit_config = loaded_kits[kit_name] return { 'loaded': True, 'name': kit_config.name, 'description': kit_config.description, 'author': kit_config.author, 'version': kit_config.version, 'keywords': kit_config.keywords, 'links': kit_config.links, 'servers': { name: server.model_dump(mode="json", exclude_unset=True, exclude_none=True, exclude_defaults=True) for name, server in kit_config.servers.items() } } available_kits = self.discover_kits() if kit_name in available_kits: kit_path = available_kits[kit_name] kit_config = self.load_kit(kit_path) if kit_config: return { 'loaded': False, 'path': str(kit_path), 'name': kit_config.name, 'description': kit_config.description, 'author': kit_config.author, 'version': kit_config.version, 'keywords': kit_config.keywords, 'links': kit_config.links, 'servers': { name: server.model_dump(mode="json", exclude_unset=True, exclude_none=True, exclude_defaults=True) for name, server in kit_config.servers.items() } } return None
  • Pydantic model used for kit metadata in configuration, part of the output structure.
    class KitInfo(BaseModel): """Information about a loaded kit.""" model_config = { "extra": "allow", "validate_assignment": True, } name: str = Field(..., description="Kit name") description: str | None = Field(None, description="Kit description") path: str | None = Field(None, description="Path to kit file (if file-based)") source: str | None = Field(None, description="Source of the kit (file, inline, etc)")
  • Pydantic model for parsing kit configuration files, used by get_kit_details to extract details.
    class KitConfig(BaseSettings): """Configuration for a kit - a bundle of related MCP servers.""" model_config = SettingsConfigDict( extra="allow", validate_assignment=True, ) name: str = Field(..., description="Unique kit name") description: str = Field("", description="What this kit provides") author: str | None = Field(None, description="Kit author/maintainer") version: str | None = Field(None, description="Kit version") keywords: list[str] = Field(default_factory=list, description="Keywords for discovery") links: dict[str, str] = Field(default_factory=dict, description="Related links (homepage, docs, etc)") servers: dict[str, ServerConfig] = Field( default_factory=dict, description="Servers included in this kit" ) @field_validator('servers', mode='before') def validate_servers(cls, v: dict[str, Any]) -> dict[str, ServerConfig]: """Convert raw server data to ServerConfig objects.""" if not isinstance(v, dict): return {} servers = {} for name, server_data in v.items(): try: if isinstance(server_data, ServerConfig): servers[name] = server_data else: if isinstance(server_data, dict): server_data = server_data.copy() server_data.pop('kits', None) # Remove any kits field, only allowed in config.json server_data['name'] = name servers[name] = ServerConfig(**server_data) except Exception as e: logger.error("Error loading server %r in kit: %s", name, e) continue return servers

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