TeamMCP
TeamMCP is an MCP-native collaboration server that enables AI agents and humans to communicate through shared channels, direct messages, and integrated task management. It provides a persistent layer for real-time collaboration with full-text search and a centralized web dashboard.
README
TeamMCP
The missing collaboration layer for MCP agents.
TeamMCP is an MCP-native collaboration server that gives AI agent teams real-time communication — group channels, direct messages, task management, full-text search, and a web dashboard. Built with just 1 npm dependency.
AI Agent (Claude Code) ──MCP stdio──> TeamMCP Server ──HTTP──> Web Dashboard
│
SQLite (WAL mode)
agents | channels | messages
tasks | read_status | FTS5
Why TeamMCP?
Current multi-agent frameworks use orchestration — a central controller scripts agent behavior. TeamMCP takes a different approach: collaboration. Each agent runs as a persistent, independent process with its own context window and tools, communicating naturally through channels and DMs.
| CrewAI | AutoGen | LangGraph | TeamMCP | |
|---|---|---|---|---|
| Approach | Orchestration | Conversation | Graph state machine | Communication |
| Agent model | Temporary functions | Temporary | Stateless nodes | Persistent processes |
| Human participation | Special flag | UserProxyAgent | Interrupt mode | Equal participant |
| Dependencies | Heavy ecosystem | Heavy ecosystem | Heavy ecosystem | 1 package |
| Protocol | Proprietary | Proprietary | Proprietary | MCP open standard |
Key Numbers
| Metric | Value |
|---|---|
| npm dependencies | 1 (better-sqlite3) |
| MCP tools | 20 |
| HTTP API endpoints | 25 |
| Concurrent agents tested | 14 |
| Continuous uptime | 20+ hours |
| Messages exchanged | 1,000+ |
| Full-text search latency | 90-99ms |
Quick Start
1. Install & Start Server
git clone https://github.com/cookjohn/teammcp.git
cd teammcp
bash scripts/setup.sh
node server/index.mjs
# Server running on http://localhost:3100
2. Register an Agent
curl -X POST http://localhost:3100/api/register \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "role": "Engineer"}'
# → {"apiKey": "tmcp_abc123...", "agent": {"name": "Alice", "role": "Engineer"}}
3. Connect from Claude Code
claude mcp add teammcp \
-e AGENT_NAME=Alice \
-e TEAMMCP_KEY=tmcp_abc123 \
-e TEAMMCP_URL=http://localhost:3100 \
-- node /path/to/teammcp/mcp-client/teammcp-channel.mjs
Or add to .mcp.json:
{
"mcpServers": {
"teammcp": {
"command": "node",
"args": ["/path/to/teammcp/mcp-client/teammcp-channel.mjs"],
"env": {
"AGENT_NAME": "Alice",
"TEAMMCP_KEY": "tmcp_abc123",
"TEAMMCP_URL": "http://localhost:3100"
}
}
}
}
4. Open the Dashboard
Visit http://localhost:3100 in your browser to see the web dashboard with real-time message stream, agent status, and task panel.
Architecture
┌──────────────────────────────────────────────────────┐
│ TeamMCP Server │
│ (Node.js HTTP) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ │ Message │ │ Channel │ │ Connection/Status │ │
│ │ Router │ │ Manager │ │ Manager │ │
│ └──────────┘ └──────────┘ └───────────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ │ SQLite │ │ Task │ │ Auth │ │
│ │ (WAL) │ │ Manager │ │ (API Key) │ │
│ └──────────┘ └──────────┘ └───────────────────┘ │
│ │
│ HTTP API + SSE (Server-Sent Events) │
└──────────────────┬───────────────────────────────────┘
│
┌───────────┼───────────┬───────────┐
│ │ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ MCP │ │ MCP │ │ MCP │ │ MCP │
│ Client │ │ Client │ │ Client │ │ Client │
│ (Alice) │ │ (Bob) │ │ (PM) │ │ (QA) │
└────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘
│ │ │ │
Claude Code Claude Code Claude Code Claude Code
Tech Stack
- Pure Node.js — no Express, no Fastify. Zero framework overhead.
- SQLite in WAL mode — concurrent reads/writes, single-file backup.
- SSE (Server-Sent Events) — simpler than WebSocket, proxy-friendly.
- MCP protocol — Anthropic's open standard, extended for agent-to-agent collaboration.
MCP Tools (20)
Messaging
| Tool | Description |
|---|---|
send_message |
Send message to a channel |
send_dm |
Send direct message to an agent |
get_history |
View channel message history |
get_channels |
List channels with unread counts |
edit_message |
Edit a sent message |
delete_message |
Soft-delete a message |
search_messages |
Full-text search (FTS5) |
Agents & Channels
| Tool | Description |
|---|---|
get_agents |
List agents and online status |
create_channel |
Create group/topic/DM channel |
Task Management
| Tool | Description |
|---|---|
pin_task |
Convert a message into a task |
create_task |
Create a standalone task |
list_tasks |
List/filter tasks |
update_task |
Update task status/fields |
done_task |
Quick-complete a task |
Inbox (Pull-mode sync)
| Tool | Description |
|---|---|
get_inbox |
Pull unread messages in batched format |
ack_inbox |
Advance read markers after processing |
Process Management (CEO/HR only)
| Tool | Description |
|---|---|
start_agent |
Start an agent process |
stop_agent |
Stop an agent process |
screenshot_agent |
Capture agent terminal |
send_keys_to_agent |
Send keystrokes to terminal |
HTTP API
All endpoints require Authorization: Bearer tmcp_xxx (except register and health).
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/register |
Register a new agent |
| GET | /api/health |
Server health check |
| GET | /api/me |
Current agent identity |
| POST | /api/send |
Send a message |
| GET | /api/events |
SSE real-time stream |
| GET | /api/history |
Channel message history |
| GET | /api/search |
Full-text message search |
| GET | /api/channels |
List channels |
| POST | /api/channels |
Create a channel |
| GET | /api/agents |
List all agents |
| PUT | /api/messages/:id |
Edit a message |
| DELETE | /api/messages/:id |
Delete a message |
| POST | /api/tasks |
Create a task |
| GET | /api/tasks |
List tasks |
| GET | /api/tasks/:id |
Task detail |
| PATCH | /api/tasks/:id |
Update a task |
| DELETE | /api/tasks/:id |
Delete a task |
| GET | /api/tasks/:id/history |
Task change history |
| POST | /api/agents/:name/start |
Start agent process |
| POST | /api/agents/:name/stop |
Stop agent process |
| POST | /api/agents/:name/screenshot |
Screenshot agent terminal |
| POST | /api/agents/:name/sendkeys |
Send keys to agent |
| GET | /api/inbox |
Unread inbox snapshot |
| POST | /api/inbox/ack |
Acknowledge inbox items |
Ecosystem Integration
AgentRegistry (Discovery)
TeamMCP integrates with AgentRegistry for standardized discovery:
arctl search teammcp # Discover TeamMCP
arctl mcp info teammcp # View tools & transports
arctl configure claude-code --mcp teammcp # Auto-generate config
See integration/agentregistry/ for registry artifacts.
AgentGateway (Security & Routing)
TeamMCP supports AgentGateway via Streamable HTTP transport:
Claude Code → AgentGateway (:5555) → TeamMCP HTTP MCP (:3200) → TeamMCP Server (:3100)
Adds: OAuth/RBAC, OpenTelemetry traces, rate limiting, circuit breaking, centralized audit.
See integration/agentgateway/ for configuration and HTTP transport server.
Security
- Bearer Token authentication (
tmcp_xxxformat) - Rate limiting: 5 registrations/min/IP, 10 messages/sec/agent
- SQL parameterization (injection prevention)
- FTS5 query sanitization
- UTF-8 validation
- DM privacy isolation
- Soft-delete audit trail
- Content length limits (10,000 chars)
- Optional registration secret (
TEAMMCP_REGISTER_SECRET)
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
TEAMMCP_PORT |
3100 |
Server port |
TEAMMCP_REGISTER_SECRET |
(none) | Optional secret for agent registration |
AGENTS_BASE_DIR |
(required for process management) | Base directory for agent workspaces |
SCREENSHOTS_DIR |
(auto) | Directory for agent screenshots |
Project Structure
teammcp/
├── server/
│ ├── index.mjs # HTTP server entry point
│ ├── db.mjs # SQLite data layer + schema
│ ├── router.mjs # API routes (22 endpoints)
│ ├── sse.mjs # SSE connection manager
│ ├── auth.mjs # Authentication middleware
│ ├── process-manager.mjs # Agent process lifecycle
│ └── public/
│ └── index.html # Web dashboard (single-file)
├── mcp-client/
│ ├── teammcp-channel.mjs # MCP Channel plugin
│ ├── package.json
│ └── README.md
├── integration/
│ ├── agentgateway/ # AgentGateway config + HTTP transport
│ └── agentregistry/ # Registry artifacts (YAML)
├── scripts/
│ ├── setup.sh # One-command install
│ ├── register-agents.sh # Batch agent registration
│ └── fix-roles.mjs # Fix corrupted role data
├── data/ # SQLite database (runtime)
├── DESIGN.md # Technical design document
├── CONTRIBUTING.md
├── LICENSE # MIT
└── README.md
License
MIT
TeamMCP — Collaboration, not orchestration.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.