- Add inotify-based config file watching for runtime server updates
- Include external server information in mcp_discover results
- Add comprehensive default onboarding explaining proxy architecture
- Update sparse tool description to show server count
- Config changes are now automatically detected and reloaded
- No restart required when adding new MCP servers to config.yaml
The onboarding now fully explains:
- Proxy mode connecting to external MCP servers
- Built-in tools always available
- Discovery examples for finding servers and tools
- Runtime configuration without restarts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix protocol version mismatch (0.1.0 -> 2024-11-05)
- Fix server mode blocking on startup causing Claude Desktop timeout
- Add --version flag to show version information
- Implement proper daemon cleanup when starting new daemon
- Add kill_daemon_with_children() to properly terminate process tree
- Fix dictionary iteration error during shutdown
- Ensure sparse mode is always enabled (3 tools only)
- Fix async stdin reading in base server to prevent EOF loops
- Add syslog support for server mode logging
- Switch from stdin.read() to readline() for proper JSON-RPC handling
- Add comprehensive MCP protocol test suite
The tool now works correctly as an MCP proxy between Claude Desktop
and MCP servers with additional built-in tools.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added comprehensive logging system with configurable levels
- TRACE: Shows raw JSON-RPC I/O with server names
- DEBUG: Detailed operational logging
- INFO/WARNING/ERROR: Standard logging levels
- New command line options:
- --log-level: Set logging level (TRACE/DEBUG/INFO/WARNING/ERROR)
- --log-file: Log to file instead of stderr
- Improved error handling and timeouts:
- Initial server discovery timeout reduced to 3 seconds
- Servers marked as offline for 30 minutes after failure
- Better error messages with server context
- All debug output now goes to stderr, keeping stdout clean for JSON
Example usage:
mcp-browser --log-level TRACE tools-list # See raw I/O
mcp-browser --debug --log-file debug.log # Debug to file
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement socket-based daemon mode using Unix domain sockets
- Allows multiple clients to connect to a single MCP Browser instance
- Supports automatic daemon detection and connection
- Added --daemon-start, --daemon-stop, --daemon-status commands
- Improve debug output handling
- All debug output now goes to stderr instead of stdout
- Added debug_print() and debug_json() utilities
- Debug messages show before and after server communication
- Fix builtin-only mode handling
- Properly route tools/list and tools/call when no external server
- Apply sparse mode filtering to builtin server tools
- Improve JSON-RPC command output
- Raw jsonrpc command now outputs proper JSON for piping
- Other commands use human-friendly formatting
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed NameError by adding missing Union import in filter.py
- Reorganized all tests into tests/ subdirectory
- Fixed recursive initialization issue in proxy.py
- Added proper test infrastructure with Makefile and setup.py test target
- Created test_config.yaml for test configurations
- Added Brave Search integration test (requires BRAVE_API_KEY)
- Fixed async test fixtures to use @pytest_asyncio.fixture
- Updated tests to handle 3 sparse tools (including onboarding)
- Fixed JSONPath queries to avoid unsupported filter syntax
- Created unit tests that don't require server initialization
- Added test_simple.py for basic functionality tests
All unit tests now pass successfully. Integration tests that require
full server setup are marked as skipped.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>