Rename to agent-agnostic bridge with launcher shims
- Renamed claude_bridge_secure.py to agent_bridge_secure.py for broader agent support
- Added run_cli() function to agent_bridge_secure.py as reusable entry point
- Created Claude-branded launcher (claude_mcp_bridge_secure.py) for SEO/discoverability
- Created Codex-branded launcher (codex_mcp_bridge_secure.py) for SEO/discoverability
- Updated all documentation references (QUICKSTART.md, EXAMPLE_WORKFLOW.md, RELEASE_NOTES.md, YOLO_MODE.md)
- Updated pyproject.toml entry points for all three launchers
- Updated bridge_cli.py, test_bridge.py, test_security.py references
This allows the same codebase to be discovered by users searching for 'Claude MCP bridge' or 'Codex MCP bridge' while avoiding code duplication.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
a83e5f2bd5
commit
418ded42a9
8 changed files with 39 additions and 15 deletions
|
|
@ -8,7 +8,7 @@ This example shows how two Claude Code sessions can collaborate on building a Fa
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /path/to/bridge
|
cd /path/to/bridge
|
||||||
python3 claude_bridge_secure.py /tmp/dev_bridge.db
|
python3 agent_bridge_secure.py /tmp/dev_bridge.db
|
||||||
```
|
```
|
||||||
|
|
||||||
### Terminal 2: Backend Session (Session A)
|
### Terminal 2: Backend Session (Session A)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ Production-ready MCP server enabling secure collaboration between two Claude Cod
|
||||||
|
|
||||||
```
|
```
|
||||||
.
|
.
|
||||||
├── claude_bridge_secure.py # Main MCP bridge server (secure, production-ready)
|
├── agent_bridge_secure.py # Main MCP bridge server (secure, production-ready)
|
||||||
├── yolo_mode.py # Command execution extension (use with caution)
|
├── yolo_mode.py # Command execution extension (use with caution)
|
||||||
├── bridge_cli.py # Management CLI tool
|
├── bridge_cli.py # Management CLI tool
|
||||||
├── test_bridge.py # Test suite
|
├── test_bridge.py # Test suite
|
||||||
|
|
@ -34,7 +34,7 @@ Add to `~/.claude.json`:
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"bridge": {
|
"bridge": {
|
||||||
"command": "python3",
|
"command": "python3",
|
||||||
"args": ["/absolute/path/to/claude_bridge_secure.py"]
|
"args": ["/absolute/path/to/agent_bridge_secure.py"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -200,10 +200,10 @@ Before using in production:
|
||||||
cat ~/.claude.json
|
cat ~/.claude.json
|
||||||
|
|
||||||
# 2. Check absolute path
|
# 2. Check absolute path
|
||||||
ls -l /path/to/claude_bridge_secure.py
|
ls -l /path/to/agent_bridge_secure.py
|
||||||
|
|
||||||
# 3. Test server directly
|
# 3. Test server directly
|
||||||
python3 claude_bridge_secure.py /tmp/test.db
|
python3 agent_bridge_secure.py /tmp/test.db
|
||||||
|
|
||||||
# 4. Restart Claude Code
|
# 4. Restart Claude Code
|
||||||
```
|
```
|
||||||
|
|
@ -227,7 +227,7 @@ python3 bridge_cli.py tokens conv_...
|
||||||
ls -l yolo_mode.py
|
ls -l yolo_mode.py
|
||||||
|
|
||||||
# 2. Check same directory as bridge
|
# 2. Check same directory as bridge
|
||||||
ls -l claude_bridge_secure.py yolo_mode.py
|
ls -l agent_bridge_secure.py yolo_mode.py
|
||||||
|
|
||||||
# 3. Test import
|
# 3. Test import
|
||||||
python3 -c "from yolo_mode import YOLOMode; print('OK')"
|
python3 -c "from yolo_mode import YOLOMode; print('OK')"
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ Claude Code Bridge is a secure, production-lean MCP server that enables two Clau
|
||||||
## 📦 What's Included
|
## 📦 What's Included
|
||||||
|
|
||||||
### Core Components
|
### Core Components
|
||||||
- **`claude_bridge_secure.py`** - Main MCP server with rate limiting
|
- **`agent_bridge_secure.py`** - Main MCP server with rate limiting
|
||||||
- **`yolo_guard.py`** - Multi-stage confirmation system
|
- **`yolo_guard.py`** - Multi-stage confirmation system
|
||||||
- **`rate_limiter.py`** - Token bucket rate limiter
|
- **`rate_limiter.py`** - Token bucket rate limiter
|
||||||
- **`bridge_cli.py`** - CLI management tool
|
- **`bridge_cli.py`** - CLI management tool
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ npm run build
|
||||||
|
|
||||||
### 1. Place YOLO module
|
### 1. Place YOLO module
|
||||||
|
|
||||||
Ensure `yolo_mode.py` is in the same directory as `claude_bridge_secure.py`.
|
Ensure `yolo_mode.py` is in the same directory as `agent_bridge_secure.py`.
|
||||||
|
|
||||||
### 2. Enable YOLO mode in conversation
|
### 2. Enable YOLO mode in conversation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""
|
"""
|
||||||
Secure Claude Code Multi-Agent Bridge
|
Secure Agent Multi-Agent Bridge
|
||||||
Production-lean MCP server with auth, redaction, and safety controls
|
Production-lean MCP server with auth, redaction, and safety controls
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -696,13 +696,13 @@ Note: Your partner can see this result via check_messages"""
|
||||||
return [TextContent(type="text", text=f"❌ Error: {str(e)}")]
|
return [TextContent(type="text", text=f"❌ Error: {str(e)}")]
|
||||||
|
|
||||||
|
|
||||||
async def main(db_path: str = "/tmp/claude_bridge_secure.db"):
|
async def main(db_path: str = "/tmp/agent_bridge_secure.db"):
|
||||||
"""Run the secure MCP server"""
|
"""Run the secure MCP server"""
|
||||||
global bridge
|
global bridge
|
||||||
bridge = SecureBridge(db_path)
|
bridge = SecureBridge(db_path)
|
||||||
|
|
||||||
from mcp.server.stdio import stdio_server
|
from mcp.server.stdio import stdio_server
|
||||||
|
|
||||||
async with stdio_server() as (read_stream, write_stream):
|
async with stdio_server() as (read_stream, write_stream):
|
||||||
await app.run(
|
await app.run(
|
||||||
read_stream,
|
read_stream,
|
||||||
|
|
@ -711,8 +711,14 @@ async def main(db_path: str = "/tmp/claude_bridge_secure.db"):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
def run_cli(argv: Optional[Iterable[str]] = None) -> None:
|
||||||
|
"""Entry point used by direct execution and compatibility shims."""
|
||||||
import sys
|
import sys
|
||||||
db_path = sys.argv[1] if len(sys.argv) > 1 else "/tmp/claude_bridge_secure.db"
|
args = list(argv if argv is not None else sys.argv[1:])
|
||||||
|
db_path = args[0] if args else "/tmp/agent_bridge_secure.db"
|
||||||
print(f"Starting secure bridge with database: {db_path}", file=sys.stderr)
|
print(f"Starting secure bridge with database: {db_path}", file=sys.stderr)
|
||||||
asyncio.run(main(db_path))
|
asyncio.run(main(db_path))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
run_cli()
|
||||||
8
claude_mcp_bridge_secure.py
Executable file
8
claude_mcp_bridge_secure.py
Executable file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Compatibility launcher for the secure agent bridge using the Claude naming."""
|
||||||
|
|
||||||
|
from agent_bridge_secure import run_cli
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
run_cli()
|
||||||
8
codex_mcp_bridge_secure.py
Executable file
8
codex_mcp_bridge_secure.py
Executable file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Compatibility launcher for the secure agent bridge using the Codex naming."""
|
||||||
|
|
||||||
|
from agent_bridge_secure import run_cli
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
run_cli()
|
||||||
|
|
@ -34,7 +34,9 @@ Issues = "https://github.com/dannystocker/mcp-multiagent-bridge/issues"
|
||||||
Documentation = "https://github.com/dannystocker/mcp-multiagent-bridge#readme"
|
Documentation = "https://github.com/dannystocker/mcp-multiagent-bridge#readme"
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
claude-bridge = "claude_bridge_secure:main"
|
agent-bridge = "agent_bridge_secure:run_cli"
|
||||||
|
claude-bridge = "claude_mcp_bridge_secure:run_cli"
|
||||||
|
codex-bridge = "codex_mcp_bridge_secure:run_cli"
|
||||||
bridge-cli = "bridge_cli:main"
|
bridge-cli = "bridge_cli:main"
|
||||||
|
|
||||||
[tool.bandit]
|
[tool.bandit]
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue