Major refactoring to fix high CPU usage and improve architecture:
## Fixed Issues
- MCP servers were stuck in infinite loops when stdin closed
- Fixed by checking for EOF (empty string) from stdin.read()
- Fixed indentation error in base.py causing syntax errors
## New Architecture
- Split into separate client and daemon binaries:
- `mcp-browser`: Smart client that can use daemon or run standalone
- `mcp-browser-daemon`: Persistent daemon process
- `mcp-browser-legacy`: Old monolithic version (deprecated)
## Client Features
- Auto-detects and uses daemon if available
- Can auto-start daemon if needed
- Falls back to standalone mode
- Supports `--use-daemon` with modes: auto, always, never
- Works as MCP server (stdin/stdout) or CLI tool
## Daemon Features
- Runs as background process with socket server
- Supports multiple concurrent clients
- Can run in foreground with `--foreground`
- Includes systemd service files for production
- Proper signal handling and cleanup
## Usage Examples
```bash
# CLI usage (auto-uses daemon if available)
mcp-browser tools-list
mcp-browser tools-call builtin:patterns::list_patterns '{}'
# Force standalone mode
mcp-browser --use-daemon never tools-list
# Run daemon manually
mcp-browser-daemon --foreground --log-level DEBUG
# Use as MCP server
echo '{"method":"tools/list"}' | mcp-browser --mode server
```
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added parents=True to mkdir call to create parent directories
- Fixes FileNotFoundError when starting daemon in background
🤖 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>
- Created comprehensive default configuration system
- Config directory at ~/.claude/mcp-browser/ with:
- config.yaml with example MCP server configurations
- onboarding.md with detailed usage documentation
- patterns/ directory for system and custom patterns
- logs/ and backups/ directories
- Added checksum system to detect unmodified config files
- Enhanced CLI with new options:
- --list-servers to show available servers
- --show-config to display configuration
- --test to test server connections
- --debug for detailed output
- Improved help text with examples and better documentation
- Updated ConfigLoader to use new config directory structure
- First run automatically creates default configuration
The system now provides a user-friendly experience similar to
claude-composer with proper configuration management.
🤖 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>
- Change license to GPLv3+ (OSI approved)
- Update repository URL to github.com/Xilope0/mcp-browser
- Set correct author as Claude4Ξlope <xilope@esus.name>
- Add installation instructions and badges to README
- Add contributing section highlighting AI-only development
- Update all metadata consistently across files
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude4Ξlope <xilope@esus.name>
- Use temporary YAML config file to specify claude MCP server
- Update to work with current MCPBrowser API
- Add better error handling and cleanup
- Test sparse mode and tool discovery
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced setup.py with AI-friendly documentation generation
- Added 'python setup.py aidocs' command for:
- Automatic API documentation via pydoc
- ctags generation for code navigation
- Project structure documentation
- API summary generation
- Added CLAUDE.md explaining AI-only development
- Created __main__.py for command-line interface
- Added test_claude_connection.py to verify claude-code integration
- Added py.typed for type checking support
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>