Skip to main content
Glama
2025-12-09-context-logging-implementation.md4 kB
# Context Logging Implementation ## 1. Primary Request and Intent The user wanted to: 1. Merge `feat/fastmcp-background-tasks` branch into main (COMPLETED) 2. Plan and implement FastMCP Context logging and progress reporting for MCP tools 3. Apply code review feedback to simplify the implementation The key insight was that FastMCP Context was already injected but **never used** - the feature simply activates it for client-visible status updates. ## 2. Key Technical Concepts - **FastMCP Context**: Provides `ctx.info()`, `ctx.debug()`, `ctx.warning()`, `ctx.error()` methods for client-visible logging - **Progress Dependency**: Already in use for background task progress tracking - **Step Callbacks**: `register_new_step_callback` in browser-use Agent for per-step progress - **Page Transition Logging**: Only log when URL changes, not every step (signal, not noise) - **TYPE_CHECKING imports**: For type hints without runtime imports ## 3. Files and Code Sections ### `src/mcp_server_browser_use/server.py` - **Why important**: Main MCP server with tool definitions - **Changes made**: Added Context logging and step callback for page transitions - **Code snippet**: ```python if TYPE_CHECKING: from browser_use.agent.views import AgentOutput from browser_use.browser.views import BrowserStateSummary # In run_browser_agent: await ctx.info(f"Starting: {task}") # Track page changes only (not every step) last_url: str | None = None async def step_callback( state: "BrowserStateSummary", output: "AgentOutput", step_num: int, ) -> None: nonlocal last_url if state.url != last_url: await ctx.info(f"→ {state.title or state.url}") last_url = state.url await progress.increment() # Pass to Agent constructor: register_new_step_callback=step_callback, # At completion: await ctx.info(f"Completed: {final[:100]}") ``` ### `src/mcp_server_browser_use/research/machine.py` - **Why important**: Research workflow that needed Context for phase transition logging - **Changes made**: Added ctx parameter and 3 ctx.info() calls - **Code snippet**: ```python if TYPE_CHECKING: from fastmcp.server.context import Context # In __init__: ctx: Optional["Context"] = None, self.ctx = ctx # In run(): if self.ctx: await self.ctx.info(f"Planning: {self.topic}") # ... if self.ctx: await self.ctx.info(f"Searching ({i + 1}/{len(queries)})") # ... if self.ctx: await self.ctx.info("Synthesizing report") ``` ### `plans/feat-context-logging-progress.md` - **Why important**: Simplified plan document with review feedback applied - **Changes made**: Reduced from 280 lines to 60 lines based on DHH/Simplicity/Python reviews - **Key principle**: "Log page transitions, not every action. Signal, not noise." ## 4. Problem Solving **Solved**: - Identified that Context was injected but never used - Avoided over-engineering by applying 3 parallel code reviews - Reduced plan from 280 lines to 60 lines - Implemented in ~20 lines vs original 170+ line plan - All 70 tests pass, ruff checks pass **Review Feedback Applied**: - DHH: "Pick one logging system. This is a 10-line change, not 280-line architecture." - Simplicity: "Log only page transitions, not every action. YAGNI on helper methods." - Python: "Add type hints to step callback" ## 5. Pending Tasks The implementation is complete. Changes are ready to commit but not yet committed. ## 6. Current Work Just completed implementing Context logging for MCP tools: - `run_browser_agent`: logs start, page transitions, completion - `run_deep_research`: logs planning, searching, synthesizing phases - All tests pass (70/70) - Linting/formatting passes ## 7. Next Step Commit the changes with message like: ``` feat: add client-visible status updates via Context logging - Add ctx.info() for start/completion in run_browser_agent - Add step callback for page transition logging - Add ctx parameter to ResearchMachine with phase logging ``` Then optionally push to main.

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/Saik0s/mcp-browser-use'

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