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 resultClaude 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¶
- Open your project directory
- Create a
.mcp.jsonfile 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"
}
}
}
}
- Restart Claude Code. The server starts automatically.
Claude Desktop¶
- Open Settings > Developer > Edit Config
- 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"
}
}
}
}
- 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¶
- Go to Settings > API Keys in your JuhJuh organization
- Click Create API Key
- 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:
- Review active and completed sprints for carry-over items
- Scan the backlog for unassigned and high-priority tickets
- Check team capacity by listing members
- Recommend tickets for the next sprint based on priority and capacity
- Suggest a sprint goal and duration (1 to 4 weeks)
Ticket triage¶
Name: triage_ticket
Parameters: ticket_key, org_slug
Walks through five steps:
- Retrieve full ticket details
- Search knowledge base for relevant architecture and pattern context
- Assess and recommend a priority level with justification
- Update the ticket with the recommended priority
- 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.
Related¶
- 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