Skip to main content
Glama
ui.py3.36 kB
#!/usr/bin/env python # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai __license__ = 'GPL v3' __copyright__ = '2025, Miguel Iglesias' __docformat__ = 'restructuredtext en' if False: # This is here to keep my python error checker from complaining about # the builtin functions that will be defined by the plugin loading system # You do not need this code in your plugins get_icons = get_resources = None # The class that all interface action plugins must inherit from from calibre.gui2.actions import InterfaceAction from calibre_plugins.mcp_server_recherche.main import MCPServerRechercheDialog class MCPServerRechercheAction(InterfaceAction): """Interface action for MCP Server Recherche.""" name = 'MCP Server Recherche' # Declare the main action associated with this plugin # The keyboard shortcut can be None if you don't want to use a keyboard # shortcut. Remember that currently calibre has no central management for # keyboard shortcuts, so try to use an unusual/unused shortcut. action_spec = ( 'MCP Server Recherche', None, 'MCP Server Recherche-Fenster oeffnen', 'Ctrl+Shift+F1', ) def genesis(self): """Initial setup for this interface action.""" # Set toolbar/menu icon # This method is called once per plugin, do initial setup here # Set the icon for this interface action # The get_icons function is a builtin function defined for all your # plugin code. It loads icons from the plugin zip file. It returns # QIcon objects, if you want the actual data, use the analogous # get_resources builtin function. # # Note that if you are loading more than one icon, for performance, you # should pass a list of names to get_icons. In this case, get_icons # will return a dictionary mapping names to QIcons. Names that # are not found in the zip file will result in null QIcons. icon = get_icons('images/icon.png', 'MCP Server Recherche') # The qaction is automatically created from the action_spec defined # above self.qaction.setIcon(icon) self.qaction.triggered.connect(self.show_dialog) def show_dialog(self): """Create and show the main MCP dialog.""" # The base plugin object defined in __init__.py base_plugin_object = self.interface_action_base_plugin # Show the config dialog # The config dialog can also be shown from within # Preferences->Plugins, which is why the do_user_config # method is defined on the base plugin class do_user_config = base_plugin_object.do_user_config # self.gui is the main calibre GUI. It acts as the gateway to access # all the elements of the calibre user interface, it should also be the # parent of the dialog d = MCPServerRechercheDialog(self.gui, self.qaction.icon(), do_user_config) d.show() def apply_settings(self): """React to settings changes (no special handling needed yet).""" from calibre_plugins.mcp_server_recherche.config import prefs # In an actual non trivial plugin, you would probably need to # do something based on the settings in prefs # Keep reference so linter does not complain prefs

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/Miguel0888/mcp-server'

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