MCP Server
Guides

MCP Server

Connect Claude Code and Claude Desktop to JuhJuh with the MCP server. Manage tickets, sprints, pages, and knowledge directly from your AI assistant or IDE.

The JuhJuh MCP server gives Claude Code and Claude Desktop direct access to your organization. Create tickets, plan sprints, search your knowledge base, and manage projects without leaving the conversation.

MCP (Model Context Protocol) is an open standard for connecting AI assistants to external tools. JuhJuh's MCP server exposes 52 tools, 2 guided prompts, and 2 live resources that Claude can call during any conversation.

How it works

sequenceDiagram
    participant C as Claude Code
    participant M as MCP Server
    participant J as JuhJuh API

    C->>M: tool call (e.g. create_ticket)
    M->>J: authenticated API request
    J-->>M: response
    M-->>C: structured result

Claude sends tool calls to the MCP server over a local stdio connection (or HTTP in production). The server authenticates with JuhJuh using your API key, executes the request, and returns the result directly into the conversation.

Setup

Claude Code

  1. Open your project directory
  2. Create a .mcp.json file in the project root:

json { "mcpServers": { "juhjuh": { "command": "python", "args": ["-m", "juhjuh_mcp.server"], "env": { "JUHJUH_API_KEY": "jjk_your_api_key_here", "JUHJUH_API_URL": "https://api.juhjuh.com/api/v1" } } } }

  1. Restart Claude Code. The server starts automatically.

Claude Desktop

  1. Open Settings > Developer > Edit Config
  2. Add the JuhJuh server to mcpServers:

json { "mcpServers": { "juhjuh": { "command": "python", "args": ["-m", "juhjuh_mcp.server"], "env": { "JUHJUH_API_KEY": "jjk_your_api_key_here", "JUHJUH_API_URL": "https://api.juhjuh.com/api/v1" } } } }

  1. Restart Claude Desktop. You should see JuhJuh listed in the MCP servers panel.

Remote connection (production)

For hosted environments where you cannot run local processes, connect directly to the production MCP endpoint:

https://mcp.juhjuh.com/mcp/

This uses streamable HTTP transport. Configure your MCP client to connect to this URL with your API key in the Authorization header.

Getting your API key

  1. Go to Settings > API Keys in your JuhJuh organization
  2. Click Create API Key
  3. Copy the key (starts with jjk_). Store it securely. You will not see it again.

The key inherits your organization membership and permissions. It can access any project you have access to.

Install

bash pip install juhjuh-mcp-server

Verify:

bash python -m juhjuh_mcp.server --help

Tools

The MCP server exposes 52 tools organized by domain. Every tool requires an org_slug parameter identifying your organization.

Tickets

Tool What it does
list_tickets List tickets with optional filters for project, status, and assignee
get_ticket Get a ticket by its display key (e.g., ACME-42)
create_ticket Create a new ticket with title, type, priority, and assignee
update_ticket Update title, description, status, priority, or assignee
add_ticket_comment Add a comment to a ticket (max 10,000 characters)
queue_ticket Queue a ticket for AI execution
execute_ticket Trigger AI execution immediately

Projects

Tool What it does
list_projects List all projects in your organization
get_project Get project details by key

Sprints and boards

Tool What it does
list_sprints List sprints with optional status filter
get_sprint Get sprint details with all tickets
list_board_columns Get kanban board columns for a project
move_ticket Move a ticket to a different column and position

Pages and knowledge

Tool What it does
list_pages List pages in a project
get_page Get a page by slug
create_page Create a new page in a project
update_page Update page title or body
delete_page Delete a page
search_knowledge Full-text search across knowledge entries
get_knowledge_entry Get a single knowledge entry
create_knowledge_entry Add a knowledge entry with category
search_global Search across tickets, pages, and knowledge

Knowledge categories: architecture, domain, pattern, reference, learning, glossary, endpoint, model_detail, service, business_rule, workflow, integration, config, page.

Agents

Tool What it does
list_agents List AI agents in the organization
chat_with_agent Send a message to an agent and receive a response

Connections

Tool What it does
list_connections List project connections
get_connection Get connection details
create_connection Create a new connection (GitHub, GitLab, Jira, Slack)
delete_connection Remove a connection

Batch operations

Tool What it does
create_batch Create a batch execution across up to 500 tickets
get_batch Check batch execution status

Intake and triage

Tool What it does
list_intake List intake queue items
get_intake_item Get a single intake item
triage_intake Accept, reject, or defer an intake item
list_improvements List improvement suggestions
get_improvement Get improvement details
review_improvement Accept or reject an improvement

Marketplace

Tool What it does
browse_marketplace Browse available agents and skills
get_marketplace_listing Get listing details
install_marketplace_item Install an agent or skill
rate_marketplace_item Rate a listing (1 to 5 stars)

Brand voice

Tool What it does
get_brand_voice Get brand voice configuration
update_brand_voice Update tone, style, or guidelines
get_brand_guidelines Get brand guidelines

Templates

Tool What it does
list_templates List prompt templates
get_template Get template by name
create_template Create a new template
update_template Update template content
delete_template Delete a template

Organization

Tool What it does
list_members List organization members
list_notifications List notifications
get_unread_count Get unread notification count
mark_notifications_read Mark notifications as read
list_schedules List automated schedules
list_skills List available skills
list_pipelines List agent pipelines
query_audit_logs Query audit logs with filters

Guided prompts

Prompts are multi-step workflows that guide Claude through a structured process. They combine multiple tool calls into a coordinated sequence.

Sprint planning

Name: sprint_planning Parameters: project_key, org_slug

Walks through five steps:

  1. Review active and completed sprints for carry-over items
  2. Scan the backlog for unassigned and high-priority tickets
  3. Check team capacity by listing members
  4. Recommend tickets for the next sprint based on priority and capacity
  5. Suggest a sprint goal and duration (1 to 4 weeks)

Ticket triage

Name: triage_ticket Parameters: ticket_key, org_slug

Walks through five steps:

  1. Retrieve full ticket details
  2. Search knowledge base for relevant architecture and pattern context
  3. Assess and recommend a priority level with justification
  4. Update the ticket with the recommended priority
  5. Add a triage summary comment

Resources

Resources are read-only data streams that Claude can access for context.

Resource URI pattern What it provides
Dashboard juhjuh://orgs/{org_slug}/dashboard Org summary: project count, ticket stats, active sprints, recent activity
Project overview juhjuh://orgs/{org_slug}/projects/{project_key}/overview Project summary: name, description, ticket counts by status

Pagination

All list endpoints support pagination with two parameters:

Parameter Default Maximum
page 1 No limit
page_size 20 100

Error handling

The MCP server returns structured error messages for common failure modes. Your API key and organization access are validated on every request.

Status Message
401 Authentication failed. Check your API key.
403 Permission denied for this resource.
404 Resource not found.
429 Rate limit exceeded. Please try again later.
5xx Server error. Please try again later.

The server retries rate-limited requests automatically with exponential backoff (up to 3 retries).

Environment variables

Variable Required Default Description
JUHJUH_API_KEY Yes (none) Your JuhJuh API key
JUHJUH_API_URL No https://api.juhjuh.com/api/v1 JuhJuh API base URL
MCP_TRANSPORT No stdio Transport mode: stdio or http
MCP_HOST No 0.0.0.0 Server bind address (HTTP mode only)
MCP_PORT No 8080 Server port (HTTP mode only)
MCP_LOG_FORMAT No text Log format: text or json

Example conversation

Here is what a typical Claude Code session looks like with the MCP server connected.

You: "Create a ticket in ACME for adding dark mode to the settings page"

Claude calls: create_ticket(org_slug="acme-engineering", project_key="ACME", title="Add dark mode to settings page", ticket_type="feature", priority="medium")

Result: Ticket ACME-147 created.

You: "What's in the current sprint?"

Claude calls: list_sprints(project_key="ACME", status="active") then get_sprint(project_key="ACME", sprint_id="...")

Result: Sprint 12 has 8 tickets, 3 in progress, 2 done.

You: "Search the knowledge base for our authentication patterns"

Claude calls: search_knowledge(org_slug="acme-engineering", query="authentication patterns", category="architecture")

Result: 3 entries found covering session management, OAuth flow, and token refresh.

  • Integrations for connecting Jira, GitHub, Bitbucket, and Slack
  • CLI for terminal-based infrastructure management
  • Agents for custom AI agents with tools and triggers
  • Tickets for the ticket lifecycle from creation to merge
  • Projects for organizing repositories and team access
  • Permissions for understanding API key access scope