wolfpack-mcp
v1.0.119
Published
MCP server for Clachan (formerly Wolfpack), AI-enhanced software delivery tools
Maintainers
Readme
Clachan MCP Server (formerly Wolfpack)
Connect your AI assistant to Clachan to manage work items, track issues, update documentation, and log progress—all through natural conversation.
Wolfpack is now Clachan. Same product, same server, same account. The package is still published as
wolfpack-mcp, its settings are stillWOLFPACK_*, and API keys still beginwfp_; nothing you have configured needs to change. See Clachan and Wolfpack below.
Quick Start
There are two ways to connect:
- Claude Desktop — Use the remote MCP server with OAuth (no API key needed)
- Coding agents (Claude Code, Cursor, Windsurf, etc.) — Use this npm package via stdio with an API key
Claude Desktop (Remote MCP)
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wolfpack": {
"type": "url",
"url": "https://app.clachan.ai/mcp"
}
}
}Restart Claude Desktop. You'll be prompted to sign in with your Clachan account via OAuth. The server is also
still served at https://wolfpacks.work/mcp, so an existing configuration keeps working.
Coding Agents (stdio)
1. Generate an API Key
- Log in to app.clachan.ai (or wolfpacks.work, which still works)
- Go to Account Settings → API Keys
- Click Create New Key
- Select the permissions you need (work items, issues, wiki, etc.)
- Copy your API key immediately—you won't see it again
2. Configure Your Agent
Claude Code (~/.claude/settings.json or project .mcp.json):
{
"mcpServers": {
"wolfpack": {
"command": "npx",
"args": ["-y", "wolfpack-mcp@latest"],
"env": {
"WOLFPACK_API_KEY": "wfp_sk_your_api_key_here"
}
}
}
}Cursor / Windsurf — use the same command, args, and env in your editor's MCP configuration.
The stdio server talks to https://wolfpacks.work/api/mcp unless WOLFPACK_API_URL says otherwise; both
domains serve the same deployment, so there is nothing to change during the rename.
Clachan and Wolfpack
The product was renamed from Wolfpack to Clachan in September 2026. Both names are understood while the rename settles: the server introduces the product to your assistant as "Clachan (formerly Wolfpack)", so asking for "the Wolfpack issue" or "my Clachan work items" means the same thing.
What you configure is deliberately unchanged, because it is the contract every installed client already depends on:
- the package name,
wolfpack-mcp, and the server namewolfpackin your MCP configuration - the environment variables:
WOLFPACK_API_KEY,WOLFPACK_API_URL,WOLFPACK_ORG_SLUG,WOLFPACK_TEAM_SLUG - the API key prefixes
wfp_sk_(user) andwfp_ak_(agent)
If those are ever renamed it will be announced here, with the old spellings kept working alongside the new.
Installation
npm install -g wolfpack-mcpOr use directly with npx (no installation required):
npx wolfpack-mcpTry these prompts:
- "What work items are assigned to me?"
- "Show me open bugs"
- "Create a work item to refactor the auth module"
- "Update issue #42 status to in-progress"
- "Add a journal entry about today's progress"
What You Can Do
| Feature | Example Prompts | | -------------- | ------------------------------------------------------------------------------------- | | Work Items | "What's on my plate?" / "Create a task for API updates" / "Mark task #15 as done" | | Issues | "Show critical bugs" / "File a bug about the login timeout" / "Assign issue #8 to me" | | Wiki | "Find docs about deployment" / "Create a page for onboarding steps" | | Journal | "Log my standup notes" / "What did I work on last week?" | | Radar | "What initiatives are in progress?" / "Show the roadmap" |
Multiple Organisations
If you belong to multiple organisations, agent builder tools (agents, templates, skills, LLM models) need to know which org to operate on. You can:
- Use
list_organisationsto see your orgs - Pass
org_slugto any agent builder tool to target a specific org - Or pre-select a default org with the
WOLFPACK_ORG_SLUGenvironment variable:
{
"env": {
"WOLFPACK_API_KEY": "wfp_sk_your_api_key_here",
"WOLFPACK_ORG_SLUG": "your-org-slug"
}
}If you only belong to one organisation, this is handled automatically.
Multiple Projects
If you belong to multiple project teams, your AI assistant will ask which team you mean, or you can specify:
- "Show my work items for the Platform team"
- Use
list_teamsto see all your teams
To pre-select a default project for coding agents, add WOLFPACK_TEAM_SLUG to your env config:
{
"env": {
"WOLFPACK_API_KEY": "wfp_sk_your_api_key_here",
"WOLFPACK_TEAM_SLUG": "your-team-slug"
}
}The MCP server is designed to work within one project at a time:
- The agent will identify which project you're working in before taking actions
- Once a project is identified, all operations stay within that project
- The agent will not perform bulk actions across multiple projects
- To switch projects, explicitly ask (e.g., "switch to the Platform project")
Available Tools Reference
Teams
list_teams
List all teams you have access to.
- Parameters: None
- Returns: Array of teams with
id,slug, andname
Work Items
list_work_items
Lists work items on the Kanban board or backlog (excludes completed/closed by default).
team_id(optional): Filter by teamstatus(optional): Filter by status (new, doing, review, ready, blocked, completed, pending/backlog, all)assigned_to_id(optional): Filter by assignee ("all", "me", "unassigned", or a user ID)search(optional): Text search in title and descriptioncategory_id(optional): Filter by category ID, or "none" for uncategorizedpriority(optional): Filter by priority level (0-4)radar_item_id(optional): Filter by linked radar/initiative itemdate_from,date_to(optional): Filter by creation date (ISO format, e.g. "2025-01-01")sort_by(optional): Sort field (dateUpdated, dateCreated, priority, title)sort_order(optional): Sort direction (desc, asc)limit,offset(optional): Pagination
get_work_item
Get a specific work item.
work_item_id(required): UUID or reference numberteam_id(optional): Required when using reference number
create_work_item
Create a new work item.
title(required): Task titledescription,status,priority,leading_user_id(optional)
update_work_progress
Update work item description/notes.
work_item_id(required): The work item IDdescription(required): Updated description (markdown)
update_work_item_status
Change work item status.
work_item_id(required): The work item IDstatus(required): New status
update_work_item_assignee
Change the assignee on a work item.
work_item_id(required): The work item IDleading_user_id(required): User ID to assign, or null to unassign
pull_work_item
Pull a work item from the backlog to the board (sets status to "new" and assigns to you).
work_item_id(required): The work item IDleading_user_id(optional): User ID to assign (defaults to API key owner)
Issues
list_issues
List issues (excludes closed by default).
team_id,status,severity,type,assigned_to_id(optional): Filterssearch(optional): Text search in title and descriptiondate_from,date_to(optional): Filter by creation date (ISO format, e.g. "2025-01-01")sort_by(optional): Sort field (dateCreated, dateUpdated, severity, title)sort_order(optional): Sort direction (desc, asc)limit,offset(optional): Pagination
get_issue
Get a specific issue.
issue_id(required): UUID or reference numberteam_id(optional): Required when using reference number
create_issue
Create a new issue. Human callers only — issues are how the people using the product report problems
they hit, so an agent files what it finds with create_work_item instead.
title(required): Issue titledescription,severity,type,assigned_to_id,environment,affected_version,reproducible,steps_to_reproduce,expected_behavior,actual_behavior(optional)
update_issue
Update an existing issue.
issue_id(required): The issue UUIDtitle,description,status,severity,assigned_to_id,closing_note(optional)
Wiki Pages
list_wiki_pages
List wiki pages.
search(optional): Text search in title and contentdate_from,date_to(optional): Filter by last updated date (ISO format, e.g. "2025-01-01")limit,offset(optional): Pagination
get_wiki_page
Get a wiki page by ID or slug.
page_id(required): UUID or slug (e.g., "getting-started")
Returns a version alongside the content. Quote it back as expected_version when you save.
create_wiki_page
Create a new wiki page.
slug(required): URL pathtitle(required): Page titlecontent(required): Markdown content
update_wiki_page
Update an existing wiki page.
page_id(required): The page UUIDexpected_version(required): Theversionget_wiki_pagereturnedtitle,content(optional)
Read, then write. content replaces the whole document, and wiki pages are edited by
people at the same time as an agent, so a save made from a copy read earlier would throw away
everything written since — which is what happened before #2681. expected_version is therefore
required, and a save quoting a version somebody has moved past is refused with 409: read the
page again, re-apply the change to what it says now, and save with the new version. Never
re-send the copy you were holding.
create_wiki_page is the exception — a page being created has no prior version.
Journal Entries
list_journal_entries
List journal entries.
search(optional): Text search in title and contentdate_from,date_to(optional): Filter by entry date (ISO format, e.g. "2025-01-01")limit,offset(optional): Pagination
get_journal_entry
Get a specific journal entry.
entry_id(required): UUID or reference numberteam_id(optional): Required when using reference number
create_journal_entry
Create a new journal entry.
title(required): Entry titlecontent(required): Markdown contentdate(optional): ISO date string
update_journal_entry
Update an existing journal entry.
entry_id(required): The entry UUIDtitle,content(optional)
Ideas (the Idea Factory)
Offered to a key holding mcp:ideas:read on a project where the idea-factory feature is
switched on. There is no archive tool: archiving is the Idea Factory's delete, and MCP does not
surface deletes.
list_ideas
List the live ideas in a project. Each carries a stage and a boost count, and the response says whether your own boost for today in that project is already spent.
sort(optional):popular(default),updatedornewestlimit,offset(optional): Pagination
get_idea
Get a single idea, with its tags and the reference numbers of any work items being built from it.
idea_id(required): The idea refId (number)
create_idea
Raise a new idea. It starts at the spark stage with no boosts.
title(required): Idea titlecontent(required): Markdown content
update_idea
Update an idea, or move it to another stage.
idea_id(required): The idea refId (number)title,content(optional)stage(optional):spark,exploring,building,shippedorparked
boost_idea
Vote for an idea by spending your boost. One boost per project per day, whichever idea you spend
it on — spending it again the same day is refused rather than counted. Takes mcp:ideas:boost,
which is separate from mcp:ideas:update: voting is participation, not editing.
idea_id(required): The idea refId (number)
Comments
list_work_item_comments
List all comments on a work item.
work_item_id(required): The work item UUID
list_issue_comments
List all comments on an issue.
issue_id(required): The issue UUID
create_work_item_comment
Add a comment to a work item.
work_item_id(required): The work item UUIDcontent(required): Markdown content
create_issue_comment
Add a comment to an issue.
issue_id(required): The issue UUIDcontent(required): Markdown content
Radar Items
list_radar_items
List radar items/initiatives (excludes completed by default).
team_id(optional): Filter by teamstage(optional): Filter by stage (pending, now, next, later, completed)search(optional): Text search in title and descriptionlimit,offset(optional): Pagination
get_radar_item
Get a specific radar item.
item_id(required): UUID or reference numberteam_id(optional): Required when using reference number
Tags
Tags label work items, issues, wiki pages and journal entries, and are filed under nestable groups. Project admins define them; a key with mcp:tags:manage lets an admin's agent keep them in step with an external system (for example, one tag per CRM customer account keyed on external_id). There is no delete tool — archive instead (update_tag with archived: true); removing a tag outright is done in the browser.
list_tags
List a project's tags with id, name, colour, externalId, the group each is filed under and whether it is archived. Any key that can read a tagged module may list them.
project_slug(optional): Project slug
create_tag
name(required): Tag name, unique within the projectcolour(optional): Hex colour such as#e879f9group(optional): Tag group name or idexternal_id(optional): Id of this tag in the system that maintains it, unique within the projectproject_slug(optional): Project slug
update_tag
Only the fields given change; pass null for colour, group or external_id to clear it. archived: true is the soft delete: the tag stays on the items that carry it and keeps its page, but no picker offers it and it cannot be applied; archived: false restores it. A sync uses this for accounts the source system has dropped.
tag(required): Tag id or current namename,colour,group,external_id,archived(optional)project_slug(optional): Project slug
list_tag_groups
List a project's tag groups with their parent and full path (e.g. Customers › EMEA).
project_slug(optional): Project slug
create_tag_group
name(required): Group name, unique within the projectparent(optional): Parent group name or idproject_slug(optional): Project slug
update_tag_group
group(required): Group id or current namename(optional): New nameparent(optional): Parent group name or id, ornullfor the top levelproject_slug(optional): Project slug
Images
upload_image
Upload an image file from disk and get back a permanent URL for use in markdown content.
file_path(required): Absolute path to an image file (JPEG, PNG, GIF, WebP; max 5MB)team_id(optional): Team ID (required for multi-team users)
download_image
Download and view an image referenced in content fields. Content from work items, issues, wiki pages, journal entries, and comments may contain image references like . Use this tool with that URL path to view the image.
image_url(required): The image URL path (e.g./api/files/images/{team}/{filename})
