Dobby MCP Server
Connect to Dobby AI Platform from Claude Desktop, Cursor, Windsurf, VS Code, and any MCP-compatible client.
🚀 Quick Start
Option 1: Interactive Setup (Recommended)
npx @dobbyai/mcp-external --setup
This will guide you through connecting Dobby to your preferred AI tools.
Option 2: Manual Setup
- Get your API credentials from Dobby Dashboard
- Add to your MCP client config:
{
"mcpServers": {
"dobby": {
"command": "npx",
"args": ["-y", "@dobbyai/mcp-external"],
"env": {
"DOBBY_API_URL": "https://dobby-ai.com",
"DOBBY_API_KEY": "gk_user_your_key_here",
"DOBBY_TENANT_ID": "your-tenant-id"
}
}
}
}
📱 Supported Clients
| Claude Desktop | ✅ Full Support | npx @dobbyai/mcp-external --setup |
| Cursor | ✅ Full Support | npx @dobbyai/mcp-external --setup |
| Windsurf | ✅ Full Support | npx @dobbyai/mcp-external --setup |
| VS Code (Cline) | ✅ Full Support | Manual config |
| VS Code (Continue) | ✅ Full Support | Manual config |
| Any MCP Client | ✅ STDIO Mode | Manual config |
🔧 Available Tools (36 Tools)
Task Management (6 tools)
create_task | Create a new task for AI agents | create_task(title: "Add dark mode", priority: "high") |
list_tasks | List tasks with filters | list_tasks(status: "pending", limit: 10) |
get_task | Get detailed task information | get_task(task_id: "task-abc123") |
update_task | Update task status or priority | update_task(task_id: "...", status: "in_progress") |
get_task_timeline | Get activity history for a task | get_task_timeline(task_id: "...") |
cancel_task | Cancel a running task | cancel_task(task_id: "...") |
Conversation (2 tools)
get_messages | Get conversation for a task | get_messages(task_id: "...", limit: 20) |
send_message | Send a message to task conversation | send_message(task_id: "...", content: "Please add tests") |
Approvals - Human-in-the-Loop (4 tools)
get_pending_approvals | List approvals waiting for you | get_pending_approvals() |
approve_task | Approve a pending request (auto-merges PR) | approve_task(approval_id: "...", note: "LGTM") |
reject_task | Reject with feedback (agent retries automatically) | reject_task(approval_id: "...", reason: "Need tests") |
request_changes | Request specific modifications | request_changes(approval_id: "...", changes: "...") |
Service Discovery (1 tool)
list_services | List all available services and capabilities | list_services(category: "llm") |
CrewAI Platform (4 tools)
crewai_health | Check health of connected CrewAI agent | crewai_health() |
crewai_inputs | Get required input fields for a crew | crewai_inputs() |
crewai_kickoff | Start a CrewAI crew execution | crewai_kickoff(inputs: { topic: "AI agents" }) |
crewai_status | Check status of a crew execution | crewai_status(kickoff_id: "...") |
Crew Builder (4 tools)
crew_validate | Validate crew YAML configurations | crew_validate(agents_yaml: "...", tasks_yaml: "...") |
crew_kickoff | Create and start a crew from YAML | crew_kickoff(agents_yaml: "...", tasks_yaml: "...") |
crew_status | Check status of a local crew run | crew_status(run_id: "...") |
crew_list | List recent crew runs | crew_list(limit: 10) |
MCP Remote Tools (2 tools)
mcp_discover_tools | Discover tools on a remote MCP server | mcp_discover_tools(provider_id: "langsmith") |
mcp_call_tool | Call a tool on a remote MCP server | mcp_call_tool(tool_name: "...", tool_arguments: {...}) |
Jira Cloud Integration (10 tools)
jira_search_issues | Search issues using JQL | jira_search_issues(jql: "project = DEV AND status = Open") |
jira_get_issue | Get detailed issue information | jira_get_issue(issue_key: "DEV-123") |
jira_create_issue | Create a new Jira issue | jira_create_issue(project_key: "DEV", summary: "...") |
jira_update_issue | Update an existing issue | jira_update_issue(issue_key: "DEV-123", summary: "...") |
jira_add_comment | Add a comment to an issue | jira_add_comment(issue_key: "DEV-123", body: "...") |
jira_get_comments | Get comments on an issue | jira_get_comments(issue_key: "DEV-123") |
jira_get_transitions | Get available workflow transitions | jira_get_transitions(issue_key: "DEV-123") |
jira_transition_issue | Transition issue to a new status | jira_transition_issue(issue_key: "DEV-123", transition_id: "31") |
jira_list_projects | List all accessible Jira projects | jira_list_projects() |
jira_assign_issue | Assign an issue to a user | jira_assign_issue(issue_key: "DEV-123", account_id: "...") |
🔄 Approval Flow
The Dobby MCP Server supports a complete Human-in-the-Loop workflow:
┌─────────────────────────────────────────────────────────────────┐
│ APPROVAL WORKFLOW │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Agent completes work → Creates PR → Requests approval │
│ │
│ 2. User receives notification via get_pending_approvals │
│ │
│ 3. User reviews and decides: │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ approve_task │ │ reject_task │ │
│ │ │ │ │ │
│ │ ✅ Auto-merge │ │ 🔁 Auto-retry │ │
│ │ PR │ │ with feedback │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Task Completed │ │ Agent Addresses │ │
│ │ 🎉 │ │ Feedback & ... │──► Back to 1 │
│ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Approve Flow
- User calls
approve_task(approval_id, note?)
- Agent automatically merges the PR
- Task status changes to
completed
- User gets confirmation via
get_task_timeline
Reject Flow (with automatic retry)
- User calls
reject_task(approval_id, reason)
- Agent receives feedback
- Agent re-analyzes and addresses the feedback
- Agent creates new implementation
- New approval is requested
- User reviews again
📊 Task Timeline
Track every action on a task with get_task_timeline:
📊 Timeline for Task task-abc123
🆕 task created (User)
2/2/2026, 10:00:00 AM
📋 plan created (DevCoordinator)
2/2/2026, 10:00:05 AM
▶️ subtask started (dobby-frontend-agent)
2/2/2026, 10:00:10 AM
🎨 frontend code generated (FrontendDeveloper)
2/2/2026, 10:01:30 AM
📝 pr created (FrontendDeveloper)
PR #42
2/2/2026, 10:01:45 AM
⏳ approval requested (DevCoordinator)
2/2/2026, 10:01:50 AM
✅ approval approved (User)
2/2/2026, 10:05:00 AM
🚀 agent continuation triggered (system)
2/2/2026, 10:05:01 AM
🔀 pr merged (DevCoordinator)
PR #42
2/2/2026, 10:05:10 AM
🎉 continuation after approval completed (DevCoordinator)
2/2/2026, 10:05:15 AM
📚 Resources
Access data directly via MCP resources:
tasks://list # All tasks
tasks://pending # Pending tasks
tasks://in-progress # In-progress tasks
tasks://completed # Completed tasks
tasks://{task_id} # Specific task details
tasks://{task_id}/messages # Task conversation
approvals://pending # Pending approvals
💬 Prompts (Slash Commands)
/create-feature | Guided feature creation |
/fix-bug | Create bug fix task |
/check-approvals | Review pending approvals |
/task-status | Get task status summary |
/review-pr | Review a task's PR |
🖥️ Client-Specific Setup
Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"dobby": {
"command": "npx",
"args": ["-y", "@dobbyai/mcp-external"],
"env": {
"DOBBY_API_URL": "https://dobby-ai.com",
"DOBBY_API_KEY": "gk_user_your_key_here",
"DOBBY_TENANT_ID": "your-tenant-id"
}
}
}
}
Cursor
Settings → MCP → Add Server:
{
"dobby": {
"command": "npx",
"args": ["-y", "@dobbyai/mcp-external"],
"env": {
"DOBBY_API_URL": "https://dobby-ai.com",
"DOBBY_API_KEY": "gk_user_your_key_here",
"DOBBY_TENANT_ID": "your-tenant-id"
}
}
}
Windsurf
File: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"dobby": {
"command": "npx",
"args": ["-y", "@dobbyai/mcp-external"],
"env": {
"DOBBY_API_URL": "https://dobby-ai.com",
"DOBBY_API_KEY": "gk_user_your_key_here",
"DOBBY_TENANT_ID": "your-tenant-id"
}
}
}
}
VS Code with Cline
Command Palette → "Cline: Open MCP Settings" → Add:
{
"mcpServers": {
"dobby": {
"command": "npx",
"args": ["-y", "@dobbyai/mcp-external"],
"env": {
"DOBBY_API_URL": "https://dobby-ai.com",
"DOBBY_API_KEY": "gk_user_your_key_here",
"DOBBY_TENANT_ID": "your-tenant-id"
}
}
}
}
🔐 Environment Variables
DOBBY_API_URL | Yes | Dobby API URL (default: https://dobby-ai.com) |
DOBBY_API_KEY | Yes | Your Dobby key: a gk_user_/gk_svc_ gateway key, an sk_live_ tenant key, or (remote HTTP transport only) a dobby_pat_ Personal Access Token. See Credentials & Transports below. |
DOBBY_TENANT_ID | Yes | Your workspace/tenant ID |
DOBBY_ORGANIZATION_ID | No | Organization ID for org-scoped tools (memory stores, rubrics, orchestration configs). The variable name is DOBBY_ORGANIZATION_ID — a DOBBY_ORG_ID variable is not read and is silently ignored. |
DOBBY_USER_ID | No | User ID for messages |
DOBBY_USER_NAME | No | Display name for messages |
DOBBY_GATEWAY_KEY | No | Optional — auto-detected if DOBBY_API_KEY starts with gk_; set explicitly to override. |
DOBBY_GATEWAY_URL | No | Optional — defaults to DOBBY_API_URL. |
DOBBY_REGION | No | Optional — data-residency region hint. |
Not sure what your key can do or which org/tenant you're on? Run npx @dobbyai/mcp-external --doctor before connecting, or — once connected — call the whoami tool. Both report your transport, key type, resolved org/tenant, whether a PAT is present, and exactly what (if anything) is missing.
🔑 Credentials & Transports
Dobby MCP runs in two transports, and which credential you need depends on which one you use. Run npx @dobbyai/mcp-external --doctor at any time to check your setup — it prints exactly what your credentials can and cannot do.
Local (STDIO)
The default (npx @dobbyai/mcp-external), used by Claude Desktop, Cursor, Windsurf, etc. Configured with env vars:
gk_user_… / gk_svc_… (gateway key) | ✅ | ✅ — auto-enabled; a gk_ key doubles as the gateway key |
sk_live_… (tenant key) | ✅ | ❌ — also set a gk_ key in DOBBY_GATEWAY_KEY |
dobby_pat_… (Personal Access Token) | ✅ | ❌ — not available in STDIO (see below) |
Gateway/execute tools in STDIO need a gk_ key — either as DOBBY_API_KEY or as DOBBY_GATEWAY_KEY. A Personal Access Token (dobby_pat_) cannot drive gateway tools locally: minting the short-lived gateway key it would need requires an internal secret that only exists on Dobby-operated servers, never on a customer machine — by design.
Remote (HTTP / OAuth)
Point an MCP client at https://mcp.dobby-ai.com and authenticate with OAuth or a Personal Access Token (dobby_pat_). Here a single PAT covers everything — read, tenant, org, and gateway tools — because the server mints a per-request, tenant-scoped gk_tmp_ from your session on your behalf. No separate gateway key to manage.
Rule of thumb: local STDIO → use a gk_user_ key (works for both read and execute). Remote → use a PAT (one credential, gateway included).
📖 Usage Examples
Create a Feature Task
You: Create a task to add dark mode to the settings page
Claude: [Uses create_task tool]
✅ Task created: task-abc123
Title: Add dark mode to settings page
Priority: medium
The AI agents will start working on it soon.
Check Approvals
You: Check my pending approvals
Claude: [Uses get_pending_approvals]
🔔 You have 2 pending approvals:
1. 📝 PR CREATE - Add user authentication
ID: approval-xyz789
Waiting: 5 minutes
2. 🔀 PR MERGE - Fix login bug
ID: approval-abc456
Waiting: 1 hour
Which one would you like to review?
Approve a PR (Auto-Merge)
You: Approve approval-xyz789 with note "looks good"
Claude: [Uses approve_task]
✅ **Approved!** approval-xyz789
Note: "looks good"
🔀 The agent is now merging the PR automatically.
Use `get_task_timeline` to track progress.
Reject with Feedback (Auto-Retry)
You: Reject approval-abc456 because it needs unit tests
Claude: [Uses reject_task]
❌ **Rejected!** approval-abc456
💬 Feedback: "needs unit tests"
🔁 The agent is now retrying and will address your feedback.
Use `get_task_timeline` to track progress.
Cancel Running Task
You: Cancel task-def789, it's taking too long
Claude: [Uses cancel_task]
🛑 Task task-def789 execution cancelled successfully.
The task status has been reverted to pending.
View Task Timeline
You: Show me the timeline for task-abc123
Claude: [Uses get_task_timeline]
📊 Timeline for Task task-abc123
🆕 **task created** (User)
2/2/2026, 10:00:00 AM
📋 **plan created** (DevCoordinator)
2/2/2026, 10:00:05 AM
🎨 **frontend code generated** (FrontendDeveloper)
2/2/2026, 10:01:30 AM
📝 **pr created** PR #42
2/2/2026, 10:01:45 AM
✅ **approval approved**
2/2/2026, 10:05:00 AM
🔀 **pr merged** PR #42
2/2/2026, 10:05:10 AM
🏗️ Architecture
┌─────────────────────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Desktop, Cursor, Windsurf, etc.) │
└──────────────────────────┬──────────────────────────────────────┘
│ MCP Protocol (STDIO)
▼
┌─────────────────────────────────────────────────────────────────┐
│ Dobby MCP Server │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 36 Tools │ Resources │ Prompts ││
│ │ │ │ ││
│ │ Tasks (6) │ - tasks:// │ - /create-feature ││
│ │ Messages (2) │ - approvals:// │ - /fix-bug ││
│ │ Approvals (4) │ - services:// │ - /check-approvals ││
│ │ Services (1) │ │ - /task-status ││
│ │ CrewAI (4) │ │ - /review-pr ││
│ │ Crew Builder (4)│ │ ││
│ │ MCP Remote (2) │ │ ││
│ │ Jira Cloud (10) │ │ ││
│ │ + 3 more │ │ ││
│ └─────────────────────────────────────────────────────────────┘│
│ │ │
│ DobbyClient (API) │
└──────────────────────────────┬──────────────────────────────────┘
│ HTTPS
▼
┌─────────────────────────────────────────────────────────────────┐
│ Dobby API (Next.js) │
│ /api/dobby/tasks - Task CRUD │
│ /api/dobby/tasks/[id]/execute - Execute/Cancel task │
│ /api/dobby/tasks/[id]/conversation - Messages │
│ /api/dobby/approvals - Approval workflow │
└──────────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Dobby Python API (FastAPI) │
│ POST /api/v1/tasks/{id}/execute - Start agent execution │
│ POST /api/v1/tasks/{id}/cancel - Cancel execution │
│ GET /api/v1/runs/{id}/status - Get run status │
└──────────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ AI Agents (Dobby) │
│ ┌──────────────┐ │
│ │ Chief Agent │ ─► Analyzes tasks, routes to coordinators │
│ └──────┬───────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ DevCoordinator│ ─► Manages development workflow │
│ └──────┬───────┘ │
│ │ │
│ ┌──────▼───────────────────────────────────────┐ │
│ │ Workers │ │
│ │ - FrontendDeveloper (React, TypeScript) │ │
│ │ - BackendDeveloper (Python, FastAPI) │ │
│ │ - TestWriter (Unit tests) │ │
│ │ - CodeReviewer (PR review) │ │
│ │ - DevOpsWorker (CI/CD, PR merge) │ │
│ └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
🛠️ Development
git clone https://github.com/gil-dataopsvalley/repo-dobby.git
cd repo-dobby/mcp/external
npm install
npm run dev
npm run build
npm test
Local Testing
export DOBBY_API_URL=http://localhost:3000
export DOBBY_API_KEY=gk_user_your_key_here
export DOBBY_TENANT_ID=your-tenant-id
npm run dev
📝 Changelog
v1.0.3 (2026-02-26)
- NEW: Jira Cloud integration — 10 tools for issue management (search, create, update, comment, transition, assign)
- NEW: CrewAI Platform tools (4) — health, inputs, kickoff, status
- NEW: Crew Builder tools (4) — validate, kickoff, status, list
- NEW: MCP Remote tools (2) — discover and call tools on external MCP servers
- NEW: Service Discovery tool — list all available services and capabilities
- NEW: Gateway auth integration — optional scope enforcement and audit logging
- TOTAL: 36 tools available
v1.2.0 (2026-02-02)
- NEW:
get_task_timeline tool - View all activity on a task
- NEW:
cancel_task tool - Stop running task executions
- IMPROVED:
approve_task now triggers automatic PR merge
- IMPROVED:
reject_task now triggers automatic agent retry with feedback
- IMPROVED: Better response messages with action hints
v1.1.0 (2026-01-31)
- Added VS Code support (Cline, Continue)
- Added Windsurf connector
- Fixed approval endpoint compatibility
v1.0.0 (2026-01-29)
- Initial release
- 10 tools for task management, messaging, and approvals
- 7 resources for direct data access
- 5 slash command prompts
- Support for Claude Desktop and Cursor
📄 License
MIT © Dobby AI Platform