src.core.service_registry module#

Marcus Service Registry.

Manages service advertisement and discovery for Marcus instances. Allows multiple clients (Cato, Claude Desktop, etc.) to discover and connect to running Marcus instances.

class src.core.service_registry.MarcusServiceRegistry[source]#

Bases: object

Manages Marcus service advertisement and discovery.

When Marcus starts, it registers itself in a discoverable location. Clients like Cato can find running Marcus instances automatically.

__init__(instance_id=None)[source]#

Initialize service registry.

Parameters:

instance_id (Optional[str]) – Unique identifier for this Marcus instance

register_service(mcp_command, log_dir, project_name=None, provider=None, **kwargs)[source]#

Register this Marcus instance as available service.

Parameters:
  • mcp_command (str) – Command to connect to this Marcus MCP server

  • log_dir (str) – Directory where Marcus writes logs

  • project_name (Optional[str]) – Current project name

  • provider (Optional[str]) – Kanban provider being used

  • **kwargs (Any) – Additional service metadata

Returns:

Service registration info

Return type:

Dict[str, Any]

update_heartbeat(**updates)[source]#

Update service heartbeat and optional fields.

Return type:

None

Parameters:

updates (Any)

unregister_service()[source]#

Remove service registration.

Return type:

None

classmethod discover_services()[source]#

Discover all running Marcus services.

Returns:

List of available Marcus services

Return type:

List[Dict[str, Any]]

classmethod get_preferred_service()[source]#

Get the preferred Marcus service to connect to.

Returns most recently started service, or None if none available.

Returns:

Preferred service info, or None

Return type:

Optional[Dict[str, Any]]

src.core.service_registry.get_service_registry(instance_id=None)[source]#

Get or create global service registry instance.

Return type:

MarcusServiceRegistry

Parameters:

instance_id (str | None)

src.core.service_registry.register_marcus_service(**kwargs)[source]#

Register Marcus service.

Return type:

Dict[str, Any]

Parameters:

kwargs (Any)

src.core.service_registry.unregister_marcus_service()[source]#

Unregister Marcus service.

Return type:

None