docs: switch to professional voice for recruiter optimization
Updated README and metadata for job-hunting focus: - Lead with "Production-ready" (recruiter keyword) - Feature-focused opening (not metaphor-focused) - Organized sections: Security, Architecture, Support - Professional tone throughout - Technical depth emphasized - Clear use cases and statistics pyproject.toml description updated to match. Positioning: serious engineer, production mindset, comprehensive docs. LinkedIn/Medium will use different voice for different audiences. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
42c87ef3a2
commit
2a84cd2865
2 changed files with 125 additions and 379 deletions
502
README.md
502
README.md
|
|
@ -1,432 +1,178 @@
|
||||||
# MCP Multiagent Bridge
|
# MCP Multiagent Bridge
|
||||||
### Secure, rate-limited coordination for multiple LLM agents
|
|
||||||
> *Because even AI agents need traffic lights.*
|
|
||||||
|
|
||||||
Multi-agent systems are already here: backend agents debugging frontend agents, compliance bots reviewing security agents, and specialized models coordinating prod deployments.
|
Production-ready Python MCP server for secure multi-agent coordination with comprehensive safeguards.
|
||||||
But nobody's built the safety layer that keeps them from trampling each other.
|
|
||||||
|
|
||||||
**MCP** is the protocol. **This** is the traffic control system.
|
## Overview
|
||||||
|
|
||||||
|
Enables multiple LLM agents (Claude, Codex, GPT, etc.) to collaborate safely through the Model Context Protocol without sharing workspaces or credentials. Built with security-first architecture and production-grade safeguards.
|
||||||
|
|
||||||
|
**Use cases:**
|
||||||
|
- Backend agent coordinating with frontend agent on different codebases
|
||||||
|
- Security review agent validating changes from development agent
|
||||||
|
- Specialized agents collaborating on complex multi-step workflows
|
||||||
|
- Any scenario requiring isolated agents to communicate securely
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Why it exists
|
## Key Features
|
||||||
|
|
||||||
Multi-agent execution is both powerful and horrifying.
|
### 🔒 Security Architecture
|
||||||
So this bridge adds layered safeguards:
|
|
||||||
- Environment gate (explicit opt-in)
|
|
||||||
- Typed confirmation phrase
|
|
||||||
- One-time validation codes
|
|
||||||
- Expiring approval tokens (because regret has a TTL)
|
|
||||||
|
|
||||||
> ⚠️ **Beta Software**: Built for development/testing environments with human supervision. See [Security Policy](SECURITY.md) before production use.
|
**Authentication & Authorization:**
|
||||||
|
- HMAC-SHA256 session token authentication
|
||||||
|
- Automatic secret redaction (API keys, passwords, tokens, private keys)
|
||||||
|
- 3-hour session expiration with automatic cleanup
|
||||||
|
- SQLite WAL mode for atomic, race-condition-free operations
|
||||||
|
|
||||||
---
|
**4-Stage YOLO Guard™:**
|
||||||
|
Command execution (optional) requires multiple confirmation layers:
|
||||||
## Under the hood
|
1. Environment gate - explicit `YOLO_MODE=1` opt-in
|
||||||
|
2. Interactive typed confirmation phrase
|
||||||
**Security:**
|
3. One-time validation code (prevents automation)
|
||||||
- HMAC-SHA256 session authentication
|
4. Time-limited approval tokens (5-minute TTL, single-use)
|
||||||
- Automatic secret redaction (API keys, passwords, tokens)
|
|
||||||
- SQLite WAL mode for atomic operations
|
|
||||||
- Comprehensive audit trail (JSONL format)
|
|
||||||
- 3-hour conversation expiration
|
|
||||||
|
|
||||||
**YOLO Guard™ (4-stage confirmation):**
|
|
||||||
- Environment gate (`YOLO_MODE=1`)
|
|
||||||
- Interactive typed confirmation
|
|
||||||
- One-time validation codes
|
|
||||||
- Time-limited approval tokens (5-min TTL, single-use)
|
|
||||||
- Dry-run by default
|
|
||||||
|
|
||||||
**Rate Limiting:**
|
**Rate Limiting:**
|
||||||
- Token bucket algorithm
|
- Token bucket algorithm with configurable windows
|
||||||
- 10 requests/minute, 100/hour, 500/day
|
- Default: 10 requests/minute, 100/hour, 500/day
|
||||||
- Per-session tracking with automatic reset
|
- Per-session tracking with automatic reset
|
||||||
|
- Prevents abuse while allowing legitimate bursts
|
||||||
|
|
||||||
---
|
**Audit Trail:**
|
||||||
|
- Comprehensive JSONL logging of all operations
|
||||||
|
- Timestamps, session IDs, actions, results
|
||||||
|
- Tamper-evident sequential logging
|
||||||
|
- Supports compliance and forensic analysis
|
||||||
|
|
||||||
## Paperwork
|
### 🏗️ Production-Ready Architecture
|
||||||
|
|
||||||
All the boring-but-necessary stuff is here:
|
- **Message-only bridge** - No auto-execution, returns proposals only
|
||||||
- **[LICENSE](LICENSE)** - MIT (do what you want)
|
- **Schema validation** - Strict JSON schemas for all MCP tools
|
||||||
- **[SECURITY.md](SECURITY.md)** - Threat model + responsible disclosure
|
- **Command validation** - Configurable whitelist/blacklist patterns
|
||||||
- **[CONTRIBUTING.md](CONTRIBUTING.md)** - How to help
|
- **Comprehensive error handling** - Graceful degradation, informative errors
|
||||||
- **Policy compliance** - Anthropic & OpenAI friendly
|
- **Extensible design** - Plugin architecture for future backends
|
||||||
|
|
||||||
---
|
### 📦 Platform Support
|
||||||
|
|
||||||
## Works with
|
**Works with any MCP-compatible LLM:**
|
||||||
|
- Claude Code, Claude Desktop, Claude API
|
||||||
Any MCP-compatible LLM:
|
- OpenAI models (via MCP adapters)
|
||||||
- Claude (Code, Desktop, API)
|
|
||||||
- OpenAI models via MCP adapters
|
|
||||||
- Anthropic API models
|
- Anthropic API models
|
||||||
- Future: Codex, GPT, custom models
|
- Custom/future models (not tied to specific backend)
|
||||||
|
|
||||||
Not tied to any specific backend. Build once, swap models freely.
|
---
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Clone repository
|
||||||
|
git clone https://github.com/dannystocker/mcp-multiagent-bridge.git
|
||||||
|
cd mcp-multiagent-bridge
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
pip install mcp
|
pip install mcp>=1.0.0
|
||||||
|
|
||||||
# Make scripts executable
|
# Run tests
|
||||||
chmod +x claude_bridge_secure.py bridge_cli.py
|
python test_security.py
|
||||||
|
|
||||||
# Test the bridge
|
|
||||||
python3 claude_bridge_secure.py --help
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Quick Start
|
Full setup: See [QUICKSTART.md](QUICKSTART.md)
|
||||||
|
|
||||||
### 1. Configure MCP Server
|
---
|
||||||
|
|
||||||
Add to `~/.claude.json`:
|
## Documentation
|
||||||
|
|
||||||
```json
|
**Getting Started:**
|
||||||
{
|
- [QUICKSTART.md](QUICKSTART.md) - 5-minute setup guide
|
||||||
"mcpServers": {
|
- [EXAMPLE_WORKFLOW.md](EXAMPLE_WORKFLOW.md) - Real-world collaboration scenarios
|
||||||
"bridge": {
|
|
||||||
"command": "python3",
|
|
||||||
"args": ["/absolute/path/to/claude_bridge_secure.py"],
|
|
||||||
"env": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Or use project-scoped config in `.mcp.json` at your project root.
|
**Security & Compliance:**
|
||||||
|
- [SECURITY.md](SECURITY.md) - Threat model, responsible disclosure policy
|
||||||
|
- [YOLO_MODE.md](YOLO_MODE.md) - Command execution safety guide
|
||||||
|
- Policy compliance: Anthropic AUP, OpenAI Usage Policies
|
||||||
|
|
||||||
### 2. Start Session A (Backend Developer)
|
**Contributing:**
|
||||||
|
- [CONTRIBUTING.md](CONTRIBUTING.md) - Development setup, PR workflow
|
||||||
|
- [LICENSE](LICENSE) - MIT License
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Technical Stack
|
||||||
|
|
||||||
|
- **Python 3.11+** - Modern Python with type hints
|
||||||
|
- **SQLite** - Atomic operations with WAL mode
|
||||||
|
- **MCP Protocol** - Model Context Protocol integration
|
||||||
|
- **pytest** - Comprehensive test suite
|
||||||
|
- **CI/CD** - GitHub Actions (tests, security scanning, linting)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Project Statistics
|
||||||
|
|
||||||
|
- **Lines of Code:** ~5,200 (including tests + documentation)
|
||||||
|
- **Test Coverage:** Core security components verified
|
||||||
|
- **Documentation:** 2,000+ lines across 7 markdown files
|
||||||
|
- **Dependencies:** 1 (mcp, pinned for reproducibility)
|
||||||
|
- **License:** MIT
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/projects/backend
|
# Install dev dependencies
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
claude-code --prompt "
|
# Install pre-commit hooks
|
||||||
You are Session A in a multi-agent collaboration.
|
pip install pre-commit
|
||||||
|
pre-commit install
|
||||||
|
|
||||||
Role: Backend API Developer
|
# Run test suite
|
||||||
|
pytest
|
||||||
|
|
||||||
Instructions:
|
# Run security tests
|
||||||
1. Use create_conversation tool with:
|
python test_security.py
|
||||||
- my_role: 'backend_developer'
|
|
||||||
- partner_role: 'frontend_developer'
|
|
||||||
|
|
||||||
2. Save your conversation_id and token (keep token secret!)
|
|
||||||
|
|
||||||
3. Communicate using:
|
|
||||||
- send_to_partner (to send messages)
|
|
||||||
- check_messages (poll every 30 seconds)
|
|
||||||
- update_my_status (keep partner informed)
|
|
||||||
|
|
||||||
4. IMPORTANT: Include your token in every tool call for authentication
|
|
||||||
|
|
||||||
Task: Design and implement REST API for a todo application.
|
|
||||||
Coordinate with Session B on API contract before implementing.
|
|
||||||
|
|
||||||
Poll for messages regularly with: check_messages
|
|
||||||
"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Start Session B (Frontend Developer)
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for complete development workflow.
|
||||||
|
|
||||||
```bash
|
---
|
||||||
cd ~/projects/frontend
|
|
||||||
|
|
||||||
claude-code --prompt "
|
## Security Notice
|
||||||
You are Session B in a multi-agent collaboration.
|
|
||||||
|
|
||||||
Role: Frontend React Developer
|
⚠️ **Beta Software**: Designed for development/testing environments with human supervision.
|
||||||
|
|
||||||
Instructions:
|
**Recommended for:**
|
||||||
1. Get conversation_id and your token from Session A
|
- Development and testing workflows
|
||||||
(They should share these securely)
|
- Isolated workspaces
|
||||||
|
- Human-supervised operations
|
||||||
|
- Prototype multi-agent systems
|
||||||
|
|
||||||
2. Check for messages from Session A:
|
**Not recommended for:**
|
||||||
check_messages with conversation_id and your token
|
- Production systems without additional safeguards
|
||||||
|
- Unattended automation
|
||||||
|
- Critical infrastructure
|
||||||
|
- Environments with untrusted agents
|
||||||
|
|
||||||
3. Reply using send_to_partner
|
See [SECURITY.md](SECURITY.md) for complete security considerations and threat model.
|
||||||
|
|
||||||
4. Poll for new messages every 30 seconds
|
---
|
||||||
|
|
||||||
Task: Build React frontend for todo application.
|
## Support
|
||||||
Coordinate with Session A on API requirements before implementing.
|
|
||||||
"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Tool Reference
|
- **Issues:** [GitHub Issues](https://github.com/dannystocker/mcp-multiagent-bridge/issues)
|
||||||
|
- **Discussions:** [GitHub Discussions](https://github.com/dannystocker/mcp-multiagent-bridge/discussions)
|
||||||
|
- **Security:** See [SECURITY.md](SECURITY.md) for responsible disclosure
|
||||||
|
|
||||||
### create_conversation
|
---
|
||||||
|
|
||||||
Initializes a secure conversation and returns tokens.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"my_role": "backend_developer",
|
|
||||||
"partner_role": "frontend_developer"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Returns:**
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"conversation_id": "conv_a1b2c3d4e5f6g7h8",
|
|
||||||
"session_a_token": "64-char-hex-token",
|
|
||||||
"session_b_token": "64-char-hex-token",
|
|
||||||
"expires_at": "2025-10-26T17:00:00Z"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### send_to_partner
|
|
||||||
|
|
||||||
Send authenticated, redacted message to partner.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"conversation_id": "conv_...",
|
|
||||||
"session_id": "a",
|
|
||||||
"token": "your-session-token",
|
|
||||||
"message": "Proposed API endpoint: POST /todos",
|
|
||||||
"action_type": "proposal",
|
|
||||||
"files_involved": ["api/routes.py"]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### check_messages
|
|
||||||
|
|
||||||
Atomically read and mark messages as read.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"conversation_id": "conv_...",
|
|
||||||
"session_id": "b",
|
|
||||||
"token": "your-session-token"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### update_my_status
|
|
||||||
|
|
||||||
Heartbeat mechanism to show liveness.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"conversation_id": "conv_...",
|
|
||||||
"session_id": "a",
|
|
||||||
"token": "your-session-token",
|
|
||||||
"status": "working"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Status values: `working`, `waiting`, `blocked`, `complete`
|
|
||||||
|
|
||||||
### check_partner_status
|
|
||||||
|
|
||||||
See if partner is alive and what they're doing.
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"conversation_id": "conv_...",
|
|
||||||
"session_id": "a",
|
|
||||||
"token": "your-session-token"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Management CLI
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# List all conversations
|
|
||||||
python3 bridge_cli.py list
|
|
||||||
|
|
||||||
# Show conversation details and messages
|
|
||||||
python3 bridge_cli.py show conv_a1b2c3d4e5f6g7h8
|
|
||||||
|
|
||||||
# Get tokens (use carefully!)
|
|
||||||
python3 bridge_cli.py tokens conv_a1b2c3d4e5f6g7h8
|
|
||||||
|
|
||||||
# View audit log
|
|
||||||
python3 bridge_cli.py audit
|
|
||||||
python3 bridge_cli.py audit conv_a1b2c3d4e5f6g7h8 100
|
|
||||||
|
|
||||||
# Clean up expired conversations
|
|
||||||
python3 bridge_cli.py cleanup
|
|
||||||
```
|
|
||||||
|
|
||||||
## Secret Redaction
|
|
||||||
|
|
||||||
The bridge automatically redacts:
|
|
||||||
|
|
||||||
- AWS keys (AKIA...)
|
|
||||||
- Private keys (-----BEGIN...PRIVATE KEY-----)
|
|
||||||
- Bearer tokens
|
|
||||||
- API keys
|
|
||||||
- Passwords
|
|
||||||
- GitHub tokens (ghp_...)
|
|
||||||
- OpenAI keys (sk-...)
|
|
||||||
|
|
||||||
Redacted content is replaced with placeholders like `AWS_KEY_REDACTED`.
|
|
||||||
|
|
||||||
## Security Best Practices
|
|
||||||
|
|
||||||
### DO ✅
|
|
||||||
|
|
||||||
- Keep session tokens secret
|
|
||||||
- Use separate workspaces for each session
|
|
||||||
- Poll for messages regularly (every 30s)
|
|
||||||
- Update status frequently so partner knows you're alive
|
|
||||||
- Use `action_type` to clarify message intent
|
|
||||||
- Review redaction before sending sensitive info
|
|
||||||
|
|
||||||
### DON'T ❌
|
|
||||||
|
|
||||||
- Share tokens in chat messages
|
|
||||||
- Commit tokens to version control
|
|
||||||
- Use expired conversations
|
|
||||||
- Send unrestricted command execution requests
|
|
||||||
- Assume messages are end-to-end encrypted (local only)
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
```
|
|
||||||
Session A (claude-code) Session B (claude-code)
|
|
||||||
| |
|
|
||||||
|--- MCP Tool Calls ---| |
|
|
||||||
| ↓ |
|
|
||||||
| Bridge Server |
|
|
||||||
| (Python + SQLite)
|
|
||||||
| ↓ |
|
|
||||||
|--- Authenticated, ---|------|
|
|
||||||
Redacted Messages
|
|
||||||
```
|
|
||||||
|
|
||||||
### Data Flow
|
|
||||||
|
|
||||||
1. Session A calls `create_conversation` → Gets conv_id + token_a + token_b
|
|
||||||
2. Session A shares conv_id + token_b with Session B
|
|
||||||
3. Session A calls `send_to_partner` → Message redacted → Stored in DB
|
|
||||||
4. Session B calls `check_messages` → Retrieves + marks read atomically
|
|
||||||
5. Session B replies via `send_to_partner`
|
|
||||||
6. Both sessions update status periodically
|
|
||||||
|
|
||||||
### Database Schema
|
|
||||||
|
|
||||||
- **conversations**: Conv ID, roles, tokens, expiration
|
|
||||||
- **messages**: From/to sessions, redacted content, read status
|
|
||||||
- **session_status**: Current status + heartbeat timestamp
|
|
||||||
- **audit_log**: All actions for forensics
|
|
||||||
|
|
||||||
## Limitations & Safeguards
|
|
||||||
|
|
||||||
- **No command execution**: Bridge only passes messages, never executes code
|
|
||||||
- **3-hour expiration**: Conversations auto-expire
|
|
||||||
- **50KB message limit**: Prevents token bloat
|
|
||||||
- **Interactive only**: Human must review all proposed actions
|
|
||||||
- **No file sharing**: Sessions must use shared workspace or Git
|
|
||||||
- **Local-only**: No network transport, Unix socket or stdio only
|
|
||||||
|
|
||||||
## Testing
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Basic connectivity test
|
|
||||||
python3 claude_bridge_secure.py /tmp/test.db &
|
|
||||||
BRIDGE_PID=$!
|
|
||||||
|
|
||||||
# Test tool calls (requires MCP client)
|
|
||||||
# ... test scenarios ...
|
|
||||||
|
|
||||||
kill $BRIDGE_PID
|
|
||||||
rm /tmp/test.db
|
|
||||||
```
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
**"Invalid session token"**
|
|
||||||
- Check token hasn't expired (3 hours)
|
|
||||||
- Verify you're using correct token for your session
|
|
||||||
- Use `bridge_cli.py tokens` to retrieve if lost
|
|
||||||
|
|
||||||
**"No MCP servers connected"**
|
|
||||||
- Verify `~/.claude.json` has correct absolute path
|
|
||||||
- Restart Claude Code after config changes
|
|
||||||
- Check MCP server logs: `claude-code --mcp-debug`
|
|
||||||
|
|
||||||
**Messages not appearing**
|
|
||||||
- Confirm both sessions use same conversation_id
|
|
||||||
- Check token authentication with `bridge_cli.py show`
|
|
||||||
- Verify partner sent messages (check audit log)
|
|
||||||
|
|
||||||
**Redaction too aggressive**
|
|
||||||
- Review redaction patterns in `SecretRedactor.PATTERNS`
|
|
||||||
- Consider adding custom patterns if needed
|
|
||||||
- False positives are safer than leaking secrets
|
|
||||||
|
|
||||||
## Use Cases
|
|
||||||
|
|
||||||
### 1. API-First Development
|
|
||||||
- Session A: Backend - designs API, implements endpoints
|
|
||||||
- Session B: Frontend - consumes API, provides feedback
|
|
||||||
- **Benefit**: Contract-first design with real-time feedback
|
|
||||||
|
|
||||||
### 2. Security Review
|
|
||||||
- Session A: Feature developer - implements functionality
|
|
||||||
- Session B: Security auditor - reviews for vulnerabilities
|
|
||||||
- **Benefit**: Continuous security assessment
|
|
||||||
|
|
||||||
### 3. Specialized Expertise
|
|
||||||
- Session A: Python expert - backend services
|
|
||||||
- Session B: TypeScript expert - React frontend
|
|
||||||
- **Benefit**: Each operates in domain of strength
|
|
||||||
|
|
||||||
### 4. Parallel Problem-Solving
|
|
||||||
- Session A: Investigates bug in module X
|
|
||||||
- Session B: Implements workaround in module Y
|
|
||||||
- **Benefit**: Non-blocking progress on related tasks
|
|
||||||
|
|
||||||
## Advanced Configuration
|
|
||||||
|
|
||||||
### Custom Database Location
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python3 claude_bridge_secure.py /path/to/custom.db
|
|
||||||
```
|
|
||||||
|
|
||||||
### Adjust Expiration Time
|
|
||||||
|
|
||||||
Edit `create_conversation` method:
|
|
||||||
```python
|
|
||||||
expires_at = datetime.utcnow() + timedelta(hours=6) # 6 hours instead of 3
|
|
||||||
```
|
|
||||||
|
|
||||||
### Add Custom Redaction Patterns
|
|
||||||
|
|
||||||
Edit `SecretRedactor.PATTERNS`:
|
|
||||||
```python
|
|
||||||
PATTERNS = [
|
|
||||||
# ... existing patterns ...
|
|
||||||
(r'my_secret_format_[A-Z0-9]{10}', 'CUSTOM_SECRET_REDACTED'),
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Production Hardening (Future)
|
|
||||||
|
|
||||||
Current MVP is designed for local development. For production:
|
|
||||||
|
|
||||||
- [ ] Add TLS for network transport
|
|
||||||
- [ ] Implement rate limiting per session
|
|
||||||
- [ ] Add message size quotas
|
|
||||||
- [ ] Enable sandboxed command execution (Docker)
|
|
||||||
- [ ] Add Redis pub/sub for real-time notifications
|
|
||||||
- [ ] Implement message encryption at rest
|
|
||||||
- [ ] Add role-based access control
|
|
||||||
- [ ] Enable multi-conversation per session
|
|
||||||
- [ ] Add conversation export/import
|
|
||||||
- [ ] Implement backup/restore
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
MIT - Use responsibly. Not liable for data loss or security issues.
|
MIT License - Copyright © 2025 Danny Stocker
|
||||||
|
|
||||||
## Credits
|
See [LICENSE](LICENSE) for full terms.
|
||||||
|
|
||||||
Inspired by Zen MCP Server's multi-model orchestration concepts.
|
---
|
||||||
Built for secure local multi-agent coordination without external dependencies.
|
|
||||||
|
## Acknowledgments
|
||||||
|
|
||||||
|
Built with [Claude Code](https://docs.claude.com/claude-code) and [Model Context Protocol](https://modelcontextprotocol.io/).
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
||||||
[project]
|
[project]
|
||||||
name = "mcp-multiagent-bridge"
|
name = "mcp-multiagent-bridge"
|
||||||
version = "1.0.0-beta"
|
version = "1.0.0-beta"
|
||||||
description = "Secure multi-agent coordination for LLMs — because even AI agents need traffic lights"
|
description = "Production-ready Python MCP server for secure multi-agent coordination with 4-stage safeguards and rate limiting"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license = {text = "MIT"}
|
license = {text = "MIT"}
|
||||||
authors = [
|
authors = [
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue