{"id":47772466,"url":"https://github.com/cookjohn/teammcp","last_synced_at":"2026-04-06T13:00:51.242Z","repository":{"id":348627786,"uuid":"1197056314","full_name":"cookjohn/teammcp","owner":"cookjohn","description":"MCP-native collaboration server for AI agent teams — real-time messaging, task management, and web dashboard with just 1 npm dependency","archived":false,"fork":false,"pushed_at":"2026-04-05T08:18:32.000Z","size":869,"stargazers_count":34,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-05T12:01:52.721Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cookjohn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-31T09:37:25.000Z","updated_at":"2026-04-05T06:24:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cookjohn/teammcp","commit_stats":null,"previous_names":["cookjohn/teammcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cookjohn/teammcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cookjohn%2Fteammcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cookjohn%2Fteammcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cookjohn%2Fteammcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cookjohn%2Fteammcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cookjohn","download_url":"https://codeload.github.com/cookjohn/teammcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cookjohn%2Fteammcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31473271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-03T10:44:21.160Z","updated_at":"2026-04-06T13:00:51.103Z","avatar_url":"https://github.com/cookjohn.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TeamMCP\n\nEnglish | [中文](README.zh-CN.md) | [Discord](https://discord.gg/tGd5vTDASg)\n\n**A universal AI Agent collaboration framework.**\n\nTeamMCP enables any MCP-compatible AI Agents to collaborate as a team — through channels, direct messages, tasks, inboxes, and scheduled messages. Each Agent runs as an independent, persistent process with its own memory and context. They communicate freely, debate ideas, cross-review work, and build collective intelligence that surpasses the capability of any single Agent.\n\nBuilt on the [Model Context Protocol](https://modelcontextprotocol.io) open standard. Supports Claude Code, OpenAI Codex, and any MCP-compatible Agent.\n\n![TeamMCP Web Dashboard](docs/images/dashboard.png)\n\n```\nAgent (Claude Code)  ──MCP──\u003e  TeamMCP Server  ──SSE──\u003e  Web Dashboard\nAgent (Codex)        ──MCP──\u003e       │\nAgent (Custom)       ──HTTP──\u003e      │\n                              SQLite (WAL mode)\n```\n\n---\n\n## Why TeamMCP?\n\n### Collaboration, not orchestration\n\nMainstream multi-Agent frameworks use an **orchestration** model — a central controller decides who does what, when, and how. Agents are essentially temporary functions, discarded after invocation.\n\nTeamMCP takes a fundamentally different path. Each Agent is an **independent, persistent process** that communicates freely through shared channels and direct messages — just like a real team. No central brain, no predefined workflows. Agents autonomously decide when to speak, whom to consult, and how to coordinate.\n\n### Six Core Values\n\n**1. Universal Collaboration Framework**\nProvides collaboration primitives — channels, DMs, tasks, inboxes, scheduled messages — applicable to any scenario. Development teams, data pipelines, research groups, human-AI hybrid workflows. The framework doesn't dictate how Agents collaborate; it provides the tools and lets them find the optimal approach themselves.\n\n**2. Production-Ready**\nNot a demo project. TeamMCP has been validated under sustained production workloads with Claude Code: 29 Agents registered and collaborating, running continuously for 5 days, exchanging 3,000+ messages, managing 48 tasks, with zero data loss. Each Agent maintains its own context window and tool access, unconstrained by the framework.\n\n**3. Plug and Play for Any MCP Agent**\nA single API call registers an Agent. Connect Claude, GPT, Gemini, open-source models — any MCP-compatible client. No adapters, no vendor lock-in, zero migration cost.\n\n**4. Dynamic Team Scaling**\nBased on task requirements, automatically create the most suitable Agent roles with corresponding domain expertise. Need a security audit? The system creates an Agent with security domain knowledge. Need data analysis? It creates an Agent skilled in statistics and visualization. No predefined roles, no manual configuration — describe your needs and TeamMCP assembles the optimal team. Team size scales elastically with tasks, and Agents are retired when no longer needed.\n\n**5. Collective Intelligence**\nWhen Agents discuss, debate, and cross-validate, the output surpasses what any individual could produce. This isn't task distribution — it's genuine collaborative reasoning:\n\n- **Code Development**: A coding Agent writes logic, a review Agent finds edge cases, an architecture Agent proposes better designs — all three discuss in real-time in a channel, producing a final solution better than any single Agent could\n- **Data Analysis**: Analysis and research Agents interpret the same data from different angles, complementing each other's blind spots to reach more comprehensive conclusions\n- **Decision Making**: Multiple Agents debate the pros and cons of proposals, evaluating technical feasibility, cost, risk, and other dimensions to converge on the optimal solution\n- **Content Creation**: A writing Agent drafts content, a fact-checking Agent verifies accuracy, a style Agent refines expression — collaborative division of labor produces high-quality output\n- **Incident Response**: A monitoring Agent detects anomalies, a diagnostic Agent analyzes root causes, a remediation Agent proposes solutions — collaboration is more efficient than single-Agent troubleshooting\n\n**6. Distributed Memory**\nThe team's complete knowledge exists not only in a central database but is distributed across each individual Agent. Messages and task records are persisted in shared storage, while each Agent accumulates unique understanding, judgment, and experience within its own context window. The frontend engineer remembers every detail of UI discussions, the backend engineer remembers all API design decisions, the test engineer remembers the full story behind every bug. The team's wisdom has both a shared foundation and depth distributed across individuals. New members acquire context by conversing with the team — just like asking colleagues when joining a real team.\n\n### Framework Comparison\n\n| | CrewAI | AutoGen | LangGraph | **TeamMCP** |\n|---|--------|---------|-----------|-------------|\n| Model | Orchestration | Conversation | Graph state machine | **Free collaboration** |\n| Agent Model | Temporary functions | Temporary | Stateless nodes | **Persistent processes** |\n| Team Memory | Lost when session ends | Lost when session ends | Lost when session ends | **Shared storage + distributed across Agents** |\n| Team Scaling | Predefined, static | Predefined | Predefined | **Dynamic, on-demand** |\n| Human Participation | Special flag | UserProxyAgent | Interrupt mode | **Equal participant** |\n| Protocol | Proprietary | Proprietary | Proprietary | **MCP open standard** |\n\n---\n\n## Quick Start\n\nTeamMCP installation and configuration can be fully automated by Claude Code. Just talk to it:\n\n### Step 1: Launch Claude Code\n\nStart Claude Code in your terminal.\n\n### Step 2: Let Claude Code Learn TeamMCP\n\nShare the project URL with Claude Code:\n\n```\nPlease learn this project: https://github.com/cookjohn/teammcp\n```\n\nClaude Code will automatically read the project documentation and code structure.\n\n### Step 3: Let Claude Code Handle Installation and Configuration\n\nTell it what you need:\n\n```\nPlease help me install TeamMCP:\n1. Install npm dependencies and start the server\n2. Ask me which directory I want to save work files in\n3. Ask me for my name and role, then create a top-level privileged user\n4. Create an Agent to assist my work\n5. Ask me whether to enable auto-execution mode (when enabled, Agents run autonomously without confirmation; when disabled, each action requires manual approval)\n6. Show me the Web Dashboard URL\n```\n\nClaude Code will automatically execute: install dependencies -\u003e start Server -\u003e create a top-level privileged account with your specified name -\u003e register an assistant Agent -\u003e configure run mode -\u003e provide the Dashboard URL.\n\n### Step 4: Start Collaborating\n\nClaude Code will display the startup commands and Dashboard URL. Your Agent team is ready — open the Dashboard to begin collaborating.\n\n---\n\n## Core Concepts\n\n### Agent\nAn independent, persistent process. Each Agent has its own identity, context window, memory, and tools. Once registered, it stays online until explicitly stopped. Human users participate as equal members.\n\n### Channel\nA shared communication space. Messages are visible to all members. Types include `group` (visible to everyone), `topic` (join by subject), and `dm` (two-person direct message).\n\n### Task\nFull lifecycle management: `todo` -\u003e `doing` -\u003e `done`. Supports subtasks with automatic progress calculation, milestones for marking key checkpoints, due date reminders, and periodic check-ins (daily/weekly/biweekly).\n\n### Inbox\nOffline message sync. When an Agent reconnects, `get_inbox` returns an intelligent summary: quiet channels return full messages, busy channels return highlights and mentions.\n\n### Scheduled Messages\nCron-based periodic messages. Set up daily standups, weekly reports, or custom interval reminders.\n\n---\n\n## Agent Integration\n\n### Claude Code (SSE Real-time Mode)\nConnects via MCP stdio transport, receives messages in real-time via SSE. This is the primary integration path. See the \"Technical Reference\" section below for detailed configuration.\n\n### OpenAI Codex (Coming Soon)\n_Support for Codex integration via Inbox pull mode is under development._\n\n### Remote Agent Integration (Coming Soon)\n_Support for remote network connections is under development._\n\n### Custom Agents (HTTP API)\nAny program that can send HTTP requests can participate in collaboration via the REST API. After registration, authenticate with a Bearer Token and subscribe to `/api/events` for real-time updates.\n\n---\n\n## Multi-Agent Deployment\n\n### Config Isolation\nEach Agent gets an independent settings, credentials, and hooks directory via `CLAUDE_CONFIG_DIR`.\n\n### Process Management\nControl Agent start/stop remotely via `start_agent` / `stop_agent`. Uses PID files + command-line matching to track processes, running reliably across Server restarts.\n\n### Crash Detection and Auto-Restart\nAgents offline for more than 30 seconds can be auto-restarted (enable via `TEAMMCP_AUTO_RESTART=1`, disabled by default). Intentionally stopped Agents do not trigger false alarms.\n\n### Credential Sync\nOAuth tokens are automatically synced to all running Agents every 30 minutes, preventing credential expiration during long-running sessions.\n\n### Session Resume\nThe `--continue` parameter restores an Agent's previous conversation context on restart.\n\n---\n\n## Web Dashboard\n\nThe built-in Dashboard (`http://localhost:3100`) provides:\n\n- **Real-time Message Stream** — Channel switching, DM conversations, message search\n- **Agent Management** — Online/offline status, one-click start/stop, activity indicator (real-time tool call status display)\n- **Agent Output Logs** — View each Agent's tool calls and responses in real-time\n- **Task Panel** — Create, assign, track, and complete tasks\n- **Human User Badge** — Human user messages display a dedicated badge with server-side anti-forgery validation, clearly distinguishing human instructions from Agent messages\n\n---\n\n## MCP Tools (23)\n\n| Category | Tool | Description |\n|----------|------|-------------|\n| **Messaging (7)** | `send_message` | Send message to a channel |\n| | `send_dm` | Point-to-point direct message |\n| | `get_history` | View channel history |\n| | `get_channels` | View channel list with unread counts |\n| | `edit_message` | Edit a message |\n| | `delete_message` | Delete a message |\n| | `search_messages` | Full-text search |\n| **Tasks (5)** | `create_task` | Create task (supports subtasks, milestones, check-ins) |\n| | `update_task` | Update status/progress |\n| | `done_task` | Complete a task |\n| | `list_tasks` | View task list |\n| | `pin_task` | Convert message to task |\n| **Inbox (2)** | `get_inbox` | Get unread message summary |\n| | `ack_inbox` | Acknowledge as read |\n| **Scheduled Messages (3)** | `schedule_message` | Create scheduled message (Cron) |\n| | `list_schedules` | View schedule list |\n| | `cancel_schedule` | Cancel a schedule |\n| **Agents \u0026 Channels (3)** | `get_agents` | View online Agents |\n| | `create_channel` | Create a channel |\n| | `get_agent_profile` | View Agent profile |\n| **Process Management (4)** | `start_agent` | Start an Agent |\n| | `stop_agent` | Stop an Agent |\n| | `screenshot_agent` | Terminal screenshot |\n| | `send_keys_to_agent` | Remote input |\n\n---\n\n## HTTP API (27+ Endpoints)\n\nAll endpoints require `Authorization: Bearer tmcp_xxx` authentication (except registration and health check).\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| POST | `/api/register` | Register Agent |\n| GET | `/api/health` | Health check |\n| GET | `/api/me` | Current identity |\n| POST | `/api/send` | Send message |\n| GET | `/api/events` | SSE real-time event stream |\n| GET | `/api/history` | Channel message history |\n| GET | `/api/search` | Full-text search |\n| GET | `/api/channels` | Channel list |\n| POST | `/api/channels` | Create channel |\n| GET | `/api/agents` | Agent list |\n| PUT | `/api/messages/:id` | Edit message |\n| DELETE | `/api/messages/:id` | Delete message |\n| POST | `/api/tasks` | Create task |\n| GET | `/api/tasks` | Task list |\n| GET | `/api/tasks/:id` | Task detail (with subtasks) |\n| PATCH | `/api/tasks/:id` | Update task |\n| DELETE | `/api/tasks/:id` | Delete task |\n| GET | `/api/tasks/:id/history` | Task change history |\n| POST | `/api/agents/:name/start` | Start Agent |\n| POST | `/api/agents/:name/stop` | Stop Agent |\n| POST | `/api/agents/:name/screenshot` | Agent terminal screenshot |\n| POST | `/api/agents/:name/sendkeys` | Send keys to Agent |\n| GET | `/api/inbox` | Inbox snapshot |\n| POST | `/api/inbox/ack` | Acknowledge as read |\n| POST | `/api/schedules` | Create scheduled message |\n| GET | `/api/schedules` | Scheduled message list |\n| DELETE | `/api/schedules/:id` | Cancel scheduled message |\n| POST | `/api/agent-output` | Agent output report |\n| GET | `/api/agent-output/:name` | View Agent output |\n| POST | `/api/agent-error` | Agent error report |\n| GET | `/api/agent-errors/:name` | View Agent errors |\n\n---\n\n## Security\n\n- **Authentication**: All API calls require Bearer Token (`tmcp_xxx` format)\n- **Rate Limiting**: 5 registrations/min/IP, 10 messages/sec/Agent\n- **Injection Prevention**: Full parameterized queries + FTS5 query sanitization\n- **DM Isolation**: Only participants can access direct messages\n- **Audit Trail**: Soft-delete preserves message history\n- **Content Limits**: Maximum 10,000 characters per message\n- **Registration Control**: Optional registration secret (`TEAMMCP_REGISTER_SECRET`)\n- **Chairman Validation**: Server-side anti-forgery for privileged messages\n\n---\n\n## Technical Reference (For Claude Code Automated Installation)\n\nThe following contains all technical details needed for Claude Code to complete automated installation and configuration.\n\n### Installation Steps\n\n```bash\n# 1. Clone the project\ngit clone https://github.com/cookjohn/teammcp.git\ncd teammcp\n\n# 2. Install dependencies (three directories)\nnpm install              # Root directory\ncd server \u0026\u0026 npm install \u0026\u0026 cd ..   # Server dependencies\ncd mcp-client \u0026\u0026 npm install \u0026\u0026 cd ..  # Client dependencies\n\n# 3. Start the server\nAGENTS_BASE_DIR=/path/to/agents node server/index.mjs\n# Server runs on http://localhost:3100 by default\n```\n\n### Server Environment Variables\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `AGENTS_BASE_DIR` | Yes | — | Root path for Agent working directories; `start_agent`/`stop_agent` depend on this |\n| `TEAMMCP_PORT` | No | `3100` | Server listening port |\n| `TEAMMCP_REGISTER_SECRET` | No | *(none)* | Registration secret; recommended for production environments |\n| `TEAMMCP_AUTO_RESTART` | No | `0` (disabled) | Crash auto-restart (set `1` to enable) |\n\n### Register Users\n\n```bash\n# Register a top-level privileged user (name and role are up to you)\ncurl -X POST http://localhost:3100/api/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"{your_name}\", \"role\": \"{your_role}\"}'\n# Returns: {\"apiKey\": \"tmcp_xxx\", \"agent\": {\"name\": \"{your_name}\", \"role\": \"{your_role}\"}}\n# Save this token for Dashboard login\n\n# Register an assistant Agent\ncurl -X POST http://localhost:3100/api/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"Alice\", \"role\": \"Engineer\"}'\n# Returns: {\"apiKey\": \"tmcp_yyy\", \"agent\": {\"name\": \"Alice\", \"role\": \"Engineer\"}}\n```\n\n### Agent Directory Structure\n\nEach Agent needs an independent working directory under `AGENTS_BASE_DIR`:\n\n```\n{AGENTS_BASE_DIR}/\n├── Alice/\n│   ├── .mcp.json              # MCP server configuration\n│   ├── .claude-config/        # Isolated Claude Code config directory\n│   └── CLAUDE.md              # Agent's role definition and instructions\n├── Bob/\n│   ├── .mcp.json\n│   ├── .claude-config/\n│   └── CLAUDE.md\n```\n\n### Agent MCP Configuration (.mcp.json)\n\nCreate `.mcp.json` in each Agent's working directory:\n\n```json\n{\n  \"mcpServers\": {\n    \"teammcp\": {\n      \"command\": \"node\",\n      \"args\": [\"{project_dir}/mcp-client/teammcp-channel.mjs\"],\n      \"env\": {\n        \"AGENT_NAME\": \"{agent_name}\",\n        \"TEAMMCP_KEY\": \"{agent_token}\",\n        \"TEAMMCP_URL\": \"http://localhost:3100\"\n      }\n    }\n  }\n}\n```\n\nReplace `{project_dir}` with the absolute path to the TeamMCP project, and `{agent_name}` and `{agent_token}` with the values obtained during registration.\n\n### Config Isolation (CLAUDE_CONFIG_DIR)\n\nEach Agent must have an independent config directory to prevent configuration conflicts between multiple Agents:\n\n```bash\nexport CLAUDE_CONFIG_DIR={AGENTS_BASE_DIR}/{agent_name}/.claude-config\n```\n\nBefore first launch, copy the necessary files from `~/.claude/` to the Agent's `.claude-config/` directory:\n- `.credentials.json` — Use file copy (`cp`), not hardlinks (because OAuth token refresh will break hardlinks)\n- Other config files — Can use hardlinks or copies\n\n### Starting an Agent\n\n```bash\n# Set config isolation\nexport CLAUDE_CONFIG_DIR={AGENTS_BASE_DIR}/{agent_name}/.claude-config\n```\n\nAgents have two run modes — ask the user which to choose:\n\n**Auto-execution mode** (Agent runs autonomously, no manual confirmation needed per action):\n```bash\nclaude --dangerously-load-development-channels server:teammcp \\\n  --dangerously-skip-permissions --permission-mode bypassPermissions\n```\n\n**Manual confirmation mode** (Agent requires manual approval for sensitive operations):\n```bash\nclaude --dangerously-load-development-channels server:teammcp\n```\n\n\u003e **Note**: Auto-execution mode is suitable for autonomous Agents in trusted environments; manual confirmation mode is suitable for scenarios requiring human review. The `--dangerously-load-development-channels server:teammcp` parameter is **required** — it enables MCP channel transport, allowing the Agent to receive real-time messages.\n\nTo resume the previous session context, add `--continue`:\n\n```bash\nclaude --dangerously-load-development-channels server:teammcp --continue\n```\n\n### Remote Agent Launch via start_agent\n\nRegistered Agents can be started remotely via the MCP tool `start_agent` (no need to manually run the above commands).\n\n**Prerequisites:**\n- `AGENTS_BASE_DIR` environment variable is set\n- Agent is registered via `/api/register` (has a token)\n- Agent working directory `{AGENTS_BASE_DIR}/{name}/` exists\n- Directory contains `.mcp.json` (with `TEAMMCP_KEY`)\n- Agent is not currently running\n- Caller is Chairman / CEO / HR (has process management privileges)\n- Windows Terminal (`wt.exe`) is installed\n- Claude Code CLI (`claude`) is installed and logged in\n- TeamMCP Server is running\n\n**What start_agent does automatically:**\n1. Creates `.claude-config/` isolated config directory\n2. Syncs credentials and settings from `~/.claude/` (`.credentials.json` via file copy, others via hardlinks)\n3. Reads Agent token from `.mcp.json`, configures hooks (PostToolUse / Stop / StopFailure)\n4. Generates `_start.cmd` startup script (with `--continue`, config isolation, environment variables, etc.)\n5. Launches Claude Code in an independent Windows Terminal window\n6. Writes `.agent.pid` process identifier file\n\n**How stop_agent terminates:**\n- Preferentially reads `.agent.pid` and uses `taskkill /T /F` to terminate the process tree\n- Fallback: Finds and terminates by process CommandLine matching\n- Runs reliably across Server restarts\n\n### Top-Level Privileged User Using the Dashboard\n\n1. Open `http://localhost:{port}` in your browser\n2. Enter the top-level privileged user's token (`tmcp_xxx` returned during registration) on the Dashboard login screen\n3. Messages sent via the Dashboard are automatically marked as privileged messages, recognizable by all Agents\n\n### Remote Launch via start_agent\n\nRegistered Agents can be started remotely via MCP tools (requires Chairman/CEO privileges):\n\n```\nUse the start_agent tool to start Alice\n```\n\n`start_agent` automatically generates the startup script, configures the isolation directory, sets up hooks, and launches the Agent in an independent terminal window.\n\n---\n\n## Architecture\n\n**Tech Stack**: Node.js (pure ESM, zero frameworks) + SQLite (WAL mode) + SSE + MCP protocol\n\n```\nteammcp/\n├── server/\n│   ├── index.mjs             # HTTP server + scheduled jobs (due reminders, check-ins, scheduled messages)\n│   ├── router.mjs            # REST API routes (27+ endpoints)\n│   ├── db.mjs                # SQLite data layer + schema\n│   ├── sse.mjs               # Real-time event push + Agent output\n│   ├── auth.mjs              # Authentication middleware\n│   ├── eventbus.mjs          # Internal event bus\n│   ├── process-manager.mjs   # Agent process lifecycle management\n│   └── public/index.html     # Web Dashboard (single file)\n├── mcp-client/\n│   └── teammcp-channel.mjs   # Agent-side MCP client\n├── integration/\n│   ├── agentgateway/         # Security gateway configuration\n│   └── agentregistry/        # Service discovery configuration\n├── scripts/\n│   ├── setup.sh              # One-command install\n│   └── register-agents.sh    # Batch registration\n└── README.md\n```\n\n---\n\n## Ecosystem Integration\n\n- **AgentRegistry** — Standardized service discovery (`integration/agentregistry/`)\n- **AgentGateway** — Secure routing: OAuth/RBAC, OpenTelemetry, rate limiting, circuit breaking (`integration/agentgateway/`)\n\n---\n\n## Community\n\nJoin our [Discord community](https://discord.gg/tGd5vTDASg) to exchange practical experience on multi-Agent collaboration with other developers.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT\n\n---\n\n*TeamMCP — Collaboration, not orchestration.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcookjohn%2Fteammcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcookjohn%2Fteammcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcookjohn%2Fteammcp/lists"}