Skip to main content
Glama
managers.rst10.6 kB
Managers API Reference ====================== This section documents the core manager classes that form the foundation of Shannon MCP. Base Manager ------------ .. module:: shannon_mcp.base.manager .. autoclass:: BaseManager :members: :undoc-members: :show-inheritance: :special-members: __init__ The BaseManager provides lifecycle management for all Shannon MCP components. **Example Usage:** .. code-block:: python from shannon_mcp.base.manager import BaseManager class MyManager(BaseManager): async def initialize(self): await super().initialize() # Custom initialization async def cleanup(self): # Custom cleanup await super().cleanup() Binary Manager -------------- .. module:: shannon_mcp.managers.binary .. autoclass:: BinaryManager :members: :undoc-members: :show-inheritance: Discovers and manages Claude Code binary installations. **Key Methods:** .. automethod:: discover_binaries .. automethod:: get_binary .. automethod:: validate_binary .. automethod:: check_updates **Example Usage:** .. code-block:: python from shannon_mcp.managers.binary import BinaryManager async def find_claude_code(): manager = BinaryManager() await manager.initialize() # Discover all binaries binaries = await manager.discover_binaries() for binary in binaries: print(f"Found: {binary.path} (v{binary.version})") # Get specific binary binary = await manager.get_binary(min_version="1.0.0") if binary: print(f"Using: {binary.path}") **Discovery Methods:** The BinaryManager uses multiple strategies to find Claude Code: 1. **Which Command** - Uses system ``which`` command 2. **NVM Discovery** - Checks Node Version Manager installations 3. **Standard Paths** - Searches platform-specific locations 4. **Database Cache** - Returns previously discovered binaries Session Manager --------------- .. module:: shannon_mcp.managers.session .. autoclass:: SessionManager :members: :undoc-members: :show-inheritance: Manages Claude Code session lifecycle and streaming. **Key Methods:** .. automethod:: create_session .. automethod:: get_session .. automethod:: execute_prompt .. automethod:: stream_prompt .. automethod:: cancel_session **Session Options:** .. code-block:: python options = { "model": "claude-3-opus-20240229", "temperature": 0.7, "max_tokens": 4000, "system_prompt": "You are a helpful assistant", "stop_sequences": ["\\n\\n"], "top_p": 0.9, "top_k": 40 } **Example Usage:** .. code-block:: python from shannon_mcp.managers.session import SessionManager from shannon_mcp.managers.binary import BinaryManager async def chat_session(): binary_manager = BinaryManager() session_manager = SessionManager(binary_manager) await session_manager.initialize() # Create session session = await session_manager.create_session( session_id="my-chat", options={"temperature": 0.5} ) # Execute prompt response = await session_manager.execute_prompt( session.id, "Explain quantum computing" ) print(response) # Stream response async for chunk in session_manager.stream_prompt( session.id, "Write a story about AI" ): print(chunk, end="", flush=True) **Session States:** .. list-table:: :header-rows: 1 * - State - Description * - CREATED - Session initialized but not started * - STARTING - Claude Code process is starting * - RUNNING - Session is active and ready * - COMPLETED - Session finished successfully * - FAILED - Session encountered an error * - CANCELLED - Session was cancelled by user Agent Manager ------------- .. module:: shannon_mcp.managers.agent .. autoclass:: AgentManager :members: :undoc-members: :show-inheritance: Manages the 26 specialized AI agents. **Agent Types:** .. list-table:: :header-rows: 1 * - Category - Agents * - Core Architecture - Architecture, Infrastructure, Integration, Orchestration * - Development - Backend, Frontend, Full-Stack, Database * - Quality - Testing, Code Review, Documentation, Security * - Operations - DevOps, Monitoring, Performance, Deployment * - Specialized - UI/UX, API, Data Engineering, ML, Mobile, Cloud **Example Usage:** .. code-block:: python from shannon_mcp.managers.agent import AgentManager async def use_agents(): manager = AgentManager(db, session_manager) await manager.initialize() # Register an agent agent = await manager.register_agent({ "name": "Code Review Agent", "type": "quality", "capabilities": ["code_review", "security_audit"], "expertise_level": 0.9 }) # Assign task task = await manager.assign_task( agent_id=agent.id, task_type="review", description="Review authentication module", context={"file_path": "src/auth.py"} ) # Execute task result = await manager.execute_task(task.id) print(f"Review: {result.output}") **Multi-Agent Collaboration:** .. code-block:: python # Create collaboration group group = await manager.create_collaboration_group({ "name": "Feature Team", "agents": [architect.id, developer.id, tester.id], "coordination": "sequential" }) # Assign collaborative task result = await manager.assign_collaborative_task({ "group_id": group.id, "description": "Implement user registration", "subtasks": [ {"agent": architect.id, "task": "Design API"}, {"agent": developer.id, "task": "Implement endpoints"}, {"agent": tester.id, "task": "Write tests"} ] }) Checkpoint Manager ------------------ .. module:: shannon_mcp.storage.checkpoint .. autoclass:: CheckpointManager :members: :undoc-members: :show-inheritance: Provides Git-like checkpoint functionality for sessions. **Example Usage:** .. code-block:: python from shannon_mcp.storage.checkpoint import CheckpointManager async def checkpoint_workflow(): manager = CheckpointManager(checkpoint_dir, cas, session_manager) # Create checkpoint checkpoint = await manager.create_checkpoint( session_id="my-session", description="Before major refactoring", tags=["stable", "v1.0"] ) # List checkpoints checkpoints = await manager.list_checkpoints( session_id="my-session", tags=["stable"] ) # Restore checkpoint new_session = await manager.restore_checkpoint( checkpoint.id, new_session_id="restored-session" ) # Create branch branch = await manager.create_branch( checkpoint.id, branch_name="feature/new-ui" ) Analytics Manager ----------------- .. module:: shannon_mcp.analytics.engine .. autoclass:: AnalyticsEngine :members: :undoc-members: :show-inheritance: Collects and analyzes usage metrics. **Metrics Types:** - Session metrics (start, complete, duration) - Performance metrics (response time, throughput) - Resource metrics (CPU, memory, disk) - Token metrics (usage, cost estimates) - Error metrics (types, frequency, recovery) **Example Usage:** .. code-block:: python from shannon_mcp.analytics.engine import AnalyticsEngine async def analytics_example(): engine = AnalyticsEngine(db) await engine.initialize() # Track metric await engine.track_metric({ "type": "session_complete", "session_id": "123", "duration": 145.3, "tokens_used": 1523 }) # Generate report report = await engine.generate_report( start_date=datetime.now() - timedelta(days=7), metrics=["sessions", "tokens", "errors"], format="html" ) # Real-time monitoring async for metric in engine.stream_metrics(): print(f"{metric.type}: {metric.value}") Common Patterns --------------- Manager Lifecycle ~~~~~~~~~~~~~~~~~ All managers follow a consistent lifecycle pattern: .. code-block:: python manager = SomeManager(dependencies) try: # Initialize (connect to resources) await manager.initialize() # Use the manager result = await manager.some_operation() finally: # Always cleanup await manager.cleanup() Error Handling ~~~~~~~~~~~~~~ Managers provide consistent error handling: .. code-block:: python from shannon_mcp.errors import ( BinaryNotFoundError, SessionError, AgentError ) try: binary = await binary_manager.get_binary() except BinaryNotFoundError: print("Claude Code not found. Please install it.") except Exception as e: print(f"Unexpected error: {e}") Event System ~~~~~~~~~~~~ Managers emit events through the notification system: .. code-block:: python from shannon_mcp.notifications import NotificationCenter async def setup_listeners(): center = NotificationCenter() # Subscribe to events await center.subscribe( "session.created", lambda event: print(f"New session: {event.session_id}") ) await center.subscribe( "agent.task_complete", lambda event: print(f"Task done: {event.result}") )

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/krzemienski/shannon-mcp'

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