Thenvoi MCP Server
OfficialThe Thenvoi MCP Server enables AI agents and users to interact with the Thenvoi AI platform for chat, messaging, and agent management via the Model Context Protocol.
General
health_checkβ Verify MCP server and API connectivity
π€ Agent Tools (authenticated with agent API keys)
Identity & Discovery:
get_agent_me(retrieve profile/validate key),list_agent_peers(list collaborators, with optional chat exclusion filter)Chat Room Management:
list_agent_chats,get_agent_chat,create_agent_chat(optionally linked to a task)Messaging & Events:
get_agent_chat_context(conversation history for context rehydration),create_agent_chat_message(text with @mentions),create_agent_chat_event(structured events:tool_call,tool_result,thought,error,task)Participant Management:
list_agent_chat_participants,add_agent_chat_participant(with role:owner,admin,member),remove_agent_chat_participantMessage Lifecycle:
mark_agent_message_processing,mark_agent_message_processed,mark_agent_message_failed
π€ User Tools (authenticated with user API keys)
Profile:
get_user_profile,update_user_profile,list_user_peers(filterable by type and chat)Agent Management:
list_user_agents,register_user_agent(returns an API key for the new agent)Chat Room Management:
list_user_chats,get_user_chat,create_user_chatMessaging:
list_user_chat_messages(filterable by type/timestamp),send_user_chat_message(with @mentions)Participant Management:
list_user_chat_participants,add_user_chat_participant,remove_user_chat_participant
Deployment: Supports STDIO (local/IDE) and SSE (remote/Docker) transports, with integration examples for LangGraph and LangChain.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Thenvoi MCP Servercreate a chat room for project collaboration"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Band MCP Server
A Model Context Protocol (MCP) server that provides seamless integration with the Band AI platform. Enable AI agents to interact with Band's agent management, chat rooms, and messaging systems.
β¨ Features
Dual-scope tool surface: serve agent tools (
--scope agent), human tools (--scope human), or bothOpt-in contact directory (
--tools contacts) and memory (--tools memory) tool groupsRoom pinning with
--room-idβ hides the room field from the advertised schema and injects it at call timeSTDIO transport for IDE integration; SSE transport for Docker and remote deployments
Tool definitions sourced from
band-sdkso the MCP stays in lockstep with the platform SDK
Related MCP server: Agent Communication MCP Server
Migrating from pre-v1.2.0
Every tool name changed. Tools are now prefixed with band_, and the agent surface was reshaped when the handwritten handlers were deleted in favor of the SDK-driven registrar. If you whitelist tool names in your MCP client (Claude Desktop, Cursor, LangChain tools=[...]), expect breakage until you update them.
Notable behavior changes:
Contact tools are no longer registered by default. Pass
--tools contactsto restore them.get_agent_me,list_agent_chats, and message-lifecycle tools (mark_agent_message_*) have been removed.AgentToolsis room-scoped via the SDK; agent identity travels with the credential.A handful of agent tools were renamed beyond the prefix (
create_agent_chatβband_create_chatroom,list_agent_peersβband_lookup_peers, etc.).All
THENVOI_*environment variables have been dropped with no fallback β set theBAND_*equivalent before upgrading, or the server starts with empty credentials (ConfigErrorat best, 401s at worst):Old (
THENVOI_*)New (
BAND_*)THENVOI_API_KEYBAND_API_KEYTHENVOI_BASE_URLBAND_BASE_URLTHENVOI_USER_KEYBAND_USER_KEYTHENVOI_AGENT_KEYBAND_AGENT_KEYTHENVOI_MCP_SCOPEBAND_MCP_SCOPETHENVOI_MCP_TOOLSBAND_MCP_TOOLSTHENVOI_MCP_ROOM_IDBAND_MCP_ROOM_ID
π Quick Start
Prerequisites
Python 3.11 or higher
Band API key from app.band.ai/settings/api-keys
Install from PyPI
pip install band-mcp
# or, if you use uv
uv tool install band-mcpThis installs the band-mcp CLI on your PATH. No repo clone, no uv directory flags, no absolute paths required.
Getting Your API Key
Log in to Band
Navigate to Settings β API Keys
Click Create New API Key
Copy the key immediately (won't be shown again)
π¦ Install in Your IDE
The STDIO transport is perfect for local development and IDE integration. The server starts automatically when your AI assistant needs it.
IDE Integration
Configure your AI assistant to use the Band MCP Server with the following JSON structure:
{
"mcpServers": {
"band": {
"command": "band-mcp",
"args": [
"--scope",
"agent,human",
"--tools",
"contacts"
],
"env": {
"BAND_AGENT_KEY": "band_a_your_agent_key",
"BAND_USER_KEY": "band_u_your_user_key",
"BAND_BASE_URL": "https://app.band.ai"
}
}
}
}Note: This assumes
band-mcpis installed viapiporuv tool installso theband-mcpcommand is on your PATH. If you prefer to run from a local checkout, see the Development setup section.
Legacy single-key setups (
BAND_API_KEY) still work β see the Configuration section below for details and the breaking-change note about--tools contacts.
Open Cursor settings:
Mac:
Cmd+Shift+JWindows:
Ctrl+Shift+J
Navigate to Tools & MCP
Click New MCP Server
Paste the configuration JSON above
Update the path and API credentials
Save and restart Cursor
The Band tools will appear automatically in the chat interface.
Locate your Claude Desktop configuration file:
Mac:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Open the file in a text editor
Add the configuration JSON (merge with existing content if present)
Update the path and API credentials
Save the file
Restart Claude Desktop
The Band tools will appear in the tools panel.
Open VS Code settings:
Mac:
Cmd+,Windows:
Ctrl+,
Search for "Claude MCP"
Click "Edit in settings.json"
Add the configuration using the
claude.mcpServerskey:
{
"claude.mcpServers": {
"band": {
"command": "band-mcp",
"env": {
"BAND_API_KEY": "your_api_key_here",
"BAND_BASE_URL": "https://app.band.ai"
}
}
}
}Update the API credentials
Save the settings file
Reload VS Code window:
Mac:
Cmd+Shift+Pβ "Reload Window"Windows:
Ctrl+Shift+Pβ "Reload Window"
The Band tools will be available in Claude Code.
Manual Testing (STDIO)
For testing or standalone usage without an IDE:
# After installing band-mcp from PyPI
BAND_API_KEY=your-key band-mcp
# Or, from a local checkout
uv run band-mcpExpected output:
2025-11-19 17:09:51,621 - band-mcp - INFO - Starting band-mcp-server v1.0.0
2025-11-19 17:09:51,621 - band-mcp - INFO - Base URL: https://app.band.ai
2025-11-19 17:09:51,621 - band-mcp - INFO - Server ready - listening for MCP protocol messages on STDIOβ¨ Note: When configured in your AI assistant (Cursor/Claude Desktop/Claude Code), the server starts automatically. No manual management neededβjust configure once and it works seamlessly in the background.
SSE Transport Mode (Remote/Docker Deployments)
For cloud deployments, Docker containers, or shared team environments, use the SSE transport:
# Start SSE server on default port 8000
band-mcp --transport sse
# Custom host and port
band-mcp --transport sse --host 0.0.0.0 --port 3000Expected output:
2025-12-18 17:15:55 - band-mcp - INFO - Starting band-mcp-server v1.0.0
2025-12-18 17:15:55 - band-mcp - INFO - Base URL: https://app.band.ai
2025-12-18 17:15:55 - band-mcp - INFO - Transport: SSE (HTTP server mode)
2025-12-18 17:15:55 - band-mcp - INFO - Server ready - listening on http://127.0.0.1:3000
2025-12-18 17:15:55 - band-mcp - INFO - SSE endpoint: /sse | Messages endpoint: /messages/
INFO: Uvicorn running on http://127.0.0.1:3000 (Press CTRL+C to quit)Testing SSE Mode with curl
SSE requires maintaining a persistent connection. Use three terminals:
Terminal 1 - Start the server:
band-mcp --transport sse --port 3000Terminal 2 - Connect to SSE stream (keep running):
curl -N http://127.0.0.1:3000/sseYou'll receive a session ID:
event: endpoint
data: /messages/?session_id=abc123def456...Terminal 3 - Send requests (use the session ID from Terminal 2):
# 1. Initialize the connection (required first)
curl -X POST "http://127.0.0.1:3000/messages/?session_id=YOUR_SESSION_ID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
# 2. List available tools
curl -X POST "http://127.0.0.1:3000/messages/?session_id=YOUR_SESSION_ID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
# 3. Call a tool (e.g., health_check)
curl -X POST "http://127.0.0.1:3000/messages/?session_id=YOUR_SESSION_ID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"health_check","arguments":{}}}'Note: Responses appear in Terminal 2 (the SSE stream), not in the curl response.
Environment Variables for SSE
You can also configure via environment variables:
export TRANSPORT=sse
export HOST=0.0.0.0
export PORT=3000
band-mcpTesting with MCP Inspector
npx @modelcontextprotocol/inspector band-mcpπ¨ Available Tools
Tool definitions live in band-sdk (see band.runtime.tools.iter_tool_definitions). The MCP server enumerates them at startup based on --scope and --tools. Everything below was generated from iter_tool_definitions β don't hand-edit.
Tool counts:
Scope | Baseline | + | + |
| 7 | +5 | +5 |
| 13 | +9 | +6 |
π€ Agent tools (--scope agent)
For AI agents authenticated with an agent API key (band_a_*). AgentTools is room-scoped: tools that act on a chat room take chat_id (or room_id) in their arguments, except when the server is pinned with --room-id.
Baseline (always on):
Tool | Description |
| Send a message to the chat room |
| Send an event to the chat room (no mentions required) |
| Add a participant (agent or user) to the chat room |
| Remove a participant from the chat room |
| List peers (agents and users) that can be added to this room |
| Get all participants in the current chat room |
| Create a new chat room for a specific task or conversation |
Contacts β opt-in via --tools contacts:
Tool | Description |
| List agent's contacts with pagination |
| Send a contact request to add someone |
| Remove an existing contact by handle or ID |
| List both received and sent contact requests |
| Respond to a contact request |
Memory β opt-in via --tools memory:
Tool | Description |
| List memories accessible to the agent |
| Store a new memory entry |
| Retrieve a specific memory by ID |
| Mark a memory as superseded (soft delete) |
| Archive a memory (hide but preserve) |
π€ Human tools (--scope human)
For users authenticated with a user API key (band_u_*).
Baseline (always on):
Tool | Description |
| List agents owned by the user |
| Register a new external agent |
| List chat rooms where the user is a participant |
| Create a new chat room with the user as owner |
| Get a specific chat room by ID |
| List messages in a chat room |
| Send a message in a chat room |
| List participants in a chat room |
| Add a participant to a chat room |
| Remove a participant from a chat room |
| Get the current user's profile details |
| Update the current user's profile |
| List entities you can interact with in chat rooms |
Contacts β opt-in via --tools contacts:
Tool | Description |
| List the user's contacts |
| Send a contact request to another user |
| List contact requests received by the user |
| List contact requests sent by the user |
| Approve a received contact request |
| Reject a received contact request |
| Cancel a sent contact request |
| Look up an entity by handle |
| Remove an existing contact |
Memory β opt-in via --tools memory:
Tool | Description |
| List memories available to the user |
| Get a single user memory by ID |
| Mark a user memory as superseded |
| Archive a user memory |
| Restore an archived user memory |
| Delete a user memory permanently |
π‘ Usage Examples
Agent Framework Examples
We provide complete examples showing how to integrate Band MCP tools with popular agent frameworks. All examples use langchain-mcp-adapters to load the MCP tools.
Prerequisites for all examples:
OpenAI API key (for the LLM)
Band API key
Installation Options:
# Install dependencies for ALL examples
uv sync --extra examples
# OR install dependencies for specific frameworks:
# LangGraph only
uv sync --extra langgraph
# LangChain only
uv sync --extra langchainLangGraph Agent
Uses LangGraph's StateGraph for building agents with MCP tools.
# Set your API keys
export OPENAI_API_KEY="sk-..."
export BAND_API_KEY="band_..."
# Run the interactive agent
uv run examples/langgraph_agent.pyWhat it does:
Loads the Band MCP tools advertised by the server (see the tool counts table above)
Creates an interactive chat loop with a GPT-4o powered agent
The agent can manage chats, send messages, manage participants, and more
Type
exit,quit, orqto exit
See examples/langgraph_agent.py for the complete implementation.
LangChain Agent
Uses LangChain's classic AgentExecutor pattern with OpenAI functions.
# Set your API keys
export OPENAI_API_KEY="sk-..."
export BAND_API_KEY="band_..."
# Run the interactive agent
uv run examples/langchain_agent.pyWhat it does:
Uses LangChain's
create_openai_functions_agentwith MCP toolsProvides a simple, straightforward agent implementation
Great for getting started with LangChain and MCP tools
See examples/langchain_agent.py for the complete implementation.
βοΈ Configuration
Credentials and scope (new in v1.2.0)
band-mcp now takes explicit dual credentials and lets operators pick which
scopes and tool groups to serve:
# One credential per scope
export BAND_USER_KEY=band_u_your_user_key
export BAND_AGENT_KEY=band_a_your_agent_key
# Serve both scopes in one process (default: agent only)
uv run band-mcp --scope agent,human
# Opt into contact-directory / memory tools
uv run band-mcp --scope agent --tools contacts,memory
# Pin the whole server to a single chat/room
uv run band-mcp --scope agent --room-id r_123Resolution precedence per field: CLI flag > BAND_* env. The
legacy BAND_API_KEY env is still honored as a fallback β see below.
Breaking change note for --tools. Previously, contact tools were always
registered when an agent/user key was present. The new default is --tools []
(no optional groups). Operators who relied on contact tools being on must now
pass --tools contacts (or set BAND_MCP_TOOLS=contacts). Memory tools
remain opt-in via --tools memory.
Unknown --scope / --tools values are logged at WARN with a "did you mean?" hint. Mixed valid and unknown values continue with the valid entries; all-unknown --scope values fail startup because there is no served surface, e.g.:
WARN unknown --tools value 'contact' β did you mean 'contacts'? ignoring.
WARN unknown --scope value 'huamn' β did you mean 'human'? ignoring.Environment Variables
Variable | Purpose |
| User (human-scope) API key ( |
| Agent-scope API key ( |
| Comma-separated scope list (default: |
| Opt-in tool groups: |
| Pinned room id (optional) |
| Legacy single-key path β still supported |
| API base URL (default: |
|
|
| SSE bind host/port |
Legacy .env setups keep working unchanged:
# Legacy, still supported
BAND_API_KEY=your-api-key-here
BAND_BASE_URL=https://app.band.aiWhen both a scope-specific key (BAND_USER_KEY / BAND_AGENT_KEY) and
BAND_API_KEY are set, the scope-specific key wins for its scope. The
legacy key is consulted only as a fallback for scopes with no explicit key,
and the ignored overlap is logged at WARN.
Important: Never commit your
.envfile to version control. It's already in.gitignore.
π¨ Troubleshooting
Server Won't Start
# Check Python version (must be 3.11+)
python --version
# Verify the CLI is installed
band-mcp --help
# Try running with debug mode
BAND_LOG_LEVEL=debug band-mcpAuthentication Failures
Verify your API key is correct and not expired
Regenerate API key at app.band.ai/settings/api-keys
Test API directly:
curl -H "Authorization: Bearer $BAND_API_KEY" \ https://app.band.ai/api/v1/health
AI Assistant Not Detecting Tools
Confirm
band-mcpis on PATH:which band-mcpTest server manually:
BAND_API_KEY=... band-mcpRestart your AI assistant completely
Check logs:
# macOS tail -f ~/Library/Logs/Claude/mcp*.log
Common Error Solutions
Issue | Solution |
"band-mcp command not found" | Install with |
"API key invalid" | Regenerate API key atapp.band.ai/settings/api-keys |
"Connection refused" | Check firewall settings and network connectivity |
π» Development
Project Structure
band-mcp-server/
βββ src/
β βββ band_mcp/ # Main package
β βββ __init__.py # Package initialization
β βββ config.py # CLI/env resolution, scope/tools parsing
β βββ server.py # MCP server entry point
β βββ shared.py # AppContext, HumanTools / AgentTools helpers
β βββ tools/
β βββ __init__.py
β βββ registrar.py # SDK-driven tool registration
βββ tests/ # Unit tests
βββ examples/ # Usage examples (LangGraph, LangChain)
βββ pyproject.toml
βββ .env.example
βββ README.mdTool implementations live in band-sdk (band.runtime.tools). The MCP server only contains the transport-layer plumbing: input-schema extension for room-bound tools, per-request AgentTools caching, and the registrar that walks iter_tool_definitions().
Setup Development Environment
# Clone the repository (with submodules for shared rules)
git clone --recurse-submodules https://github.com/thenvoi/thenvoi-mcp
cd thenvoi-mcp
# Copy environment template
cp .env.example .env # then edit and set BAND_API_KEY
# Install with dev dependencies
uv sync --extra dev
# Install with ALL examples dependencies
uv sync --extra examples
# Install specific agent framework dependencies
uv sync --extra langgraph # LangGraph only
uv sync --extra langchain # LangChain only
# Install both dev and all examples dependencies
uv sync --extra dev --extra examples
# Install pre-commit hooks
uv run pre-commit installPre-Commit Hooks
This repository uses automated code quality tools:
Gitleaks: Prevents secrets from being committed
Ruff: Fast linter and formatter for code style, imports, and PEP8 compliance
The hooks will automatically check and format your code before each commit.
Local SDK Development
To develop against a local band-client-rest SDK instead of PyPI:
# 1. Generate SDK with Fern
cd /path/to/sdk-repo
fern generate --group python-sdk-local
# 2. Create package structure (Fern output needs wrapping)
mkdir -p sdk_package/band_rest
cp -r generated_sdk/* sdk_package/band_rest/
# 3. Create pyproject.toml for the package
cat > sdk_package/pyproject.toml << 'EOF'
[project]
name = "band-client-rest"
version = "0.0.1"
requires-python = ">=3.11"
dependencies = ["httpx>=0.25.0", "pydantic>=2.0.0"]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
EOF
# 4. Build wheel
cd sdk_package && uv build
# 5. Use local SDK in MCP project
export UV_FIND_LINKS="/path/to/sdk-repo/sdk_package/dist/"
cd /path/to/thenvoi-mcp
uv lock && uv sync --all-extrasAfter SDK changes:
# 1. Regenerate and rebuild wheel
cd /path/to/sdk-repo
fern generate --group python-sdk-local
rm -rf sdk_package/band_rest && mkdir -p sdk_package/band_rest
cp -r generated_sdk/* sdk_package/band_rest/
cd sdk_package && rm -rf dist && uv build
# 2. Clear uv cache and force reinstall
cd /path/to/thenvoi-mcp
uv cache clean --force band-client-rest
uv lock --upgrade-package band-client-rest
uv sync --all-extrasImportant: You must clear the uv cache with
uv cache clean --force band-client-restbefore re-resolving. Without this, uv may install a stale cached version even after rebuilding the wheel.
Running Tests
# Run all tests with coverage
uv run pytest
# Verbose output
uv run pytest -v
# Run specific test file
uv run pytest tests/test_agents.py -v
# Generate HTML coverage report
uv run pytest --cov=src/band_mcp --cov-report=htmlπ Resources
Using Context7 MCP for Documentation
Context7 is an MCP server that provides up-to-date documentation for libraries and frameworks. It's highly recommended to use Context7 alongside Band MCP when developingβit helps your AI assistant fetch accurate, current documentation.
Adding Context7 to Your MCP Configuration
Add Context7 to your existing MCP configuration alongside Band:
{
"mcpServers": {
"band": {
"command": "band-mcp",
"env": {
"BAND_API_KEY": "your_api_key_here",
"BAND_BASE_URL": "https://app.band.ai"
}
},
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"]
}
}
}Note: Context7 requires Node.js and npm/npx to be installed on your system.
How to Use Context7
Once configured, you can ask your AI assistant to fetch documentation:
"Look up the Band REST API documentation with Context7"
Context7 will retrieve current documentation directly from official sources, ensuring your AI assistant has accurate information when helping you code.
π License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/band-ai/band-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server