FogBugz
The FogBugz MCP Server connects AI assistants to a FogBugz instance, enabling natural language management of cases and projects.
Case Management:
Create cases with title, project, area, milestone, priority, assignee, and description
Update cases — change title, project, area, milestone, priority, or add comments
Assign cases to specific users by name or email
Resolve, reopen, and close cases (with optional comments/status)
Search & Viewing:
Search cases using FogBugz query syntax (e.g.,
project:Website status:Active)List cases assigned to a specific user or the current user
Get detailed case info including full event and comment history
Get a shareable URL for any case
Reference Data:
List people, categories, projects, milestones, and statuses
View details for specific projects and areas
Project Management:
Create new projects with name, primary contact, and submission settings
Advanced:
Raw API requests — execute any FogBugz XML API command not covered by dedicated tools (⚠️ can perform destructive operations)
FogBugz MCP Server
A Model Context Protocol (MCP) server that connects AI assistants to a live FogBugz instance. Search and manage cases, track history, assign and resolve — all from a natural language conversation. Works with on-premise and on-demand FogBugz installations.
Features
Search and list cases using FogBugz query syntax (e.g.
project:Website status:Active)Read case details including full event and comment history
Create and update cases — set title, project, area, milestone, priority, and comments
Full lifecycle management — assign, resolve, reopen, and close cases
User, project, and area discovery — list people, categories, projects, milestones, and statuses
Create new projects directly from the conversation
Automatic API selection — detects your FogBugz version and switches between XML and JSON API automatically
Related MCP server: FogBugz MCP Server
Requirements
FogBugz (on-premise or on-demand)
Node.js 20 or later
A FogBugz API token
Getting a FogBugz API Token
You need an API token to authenticate the MCP server with FogBugz. There are two ways to obtain one:
Via the web UI
Go to Account & Settings → User Options and click the Create API Token link.
See the official guide: Create API Token using the FogBugz UI
Via API request
Send the following request (replace placeholders with your values):
https://[your-fogbugz-server]/api.asp?cmd=logon&email=[your-email]&password=[your-password]The response will contain your API token.
See the official guide: Get an API Token using FogBugz API commands
AI Client Setup
MCP is an open standard — this server works with any MCP-compatible AI client. Configuration varies by client.
Claude Desktop ✓ (tested)
One-click install: Download the latest .mcpb package from the Releases page and open it — Claude Desktop will install and configure the server automatically, prompting you for your FogBugz URL and API token.
Manual configuration: Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fogbugz": {
"command": "npx",
"args": ["-y", "@todevs/fogbugz-mcp"],
"env": {
"FOGBUGZ_URL": "https://your-fogbugz-server.com",
"FOGBUGZ_API_KEY": "your-api-token"
}
}
}
}Claude Code ✓ (tested)
Add to .mcp.json in your project root:
{
"mcpServers": {
"fogbugz": {
"command": "npx",
"args": ["-y", "@todevs/fogbugz-mcp"],
"env": {
"FOGBUGZ_URL": "https://your-fogbugz-server.com",
"FOGBUGZ_API_KEY": "your-api-token"
}
}
}
}Other MCP-compatible clients
Any client that supports MCP stdio servers should work. Consult your client's documentation for how to register a stdio MCP server with environment variables. The server entry point is npx @todevs/fogbugz-mcp (or node /path/to/dist/index.js for a local build).
Tools
Case Management
Tool | Description |
| Create a new case |
| Update an existing case (title, comment, project, area, milestone, priority) |
| Assign a case to a user |
| Resolve (mark as fixed/completed) a case |
| Reopen a resolved or closed case |
| Close a case |
Search & View
Tool | Description |
| Search using FogBugz query syntax (e.g. |
| List cases assigned to a user (defaults to current user) |
| Get detailed case info including full event/comment history |
| Get a direct URL to a case |
Reference Data
Tool | Description |
| List all users with IDs, names, and emails |
| List case categories (Bug, Feature Request, etc.) |
| List all active projects with IDs and names |
| List milestones/fix-fors, optionally by project |
| List case statuses with resolved flags, optionally by category |
| Get detailed project information |
| Get detailed area information |
| Create a new project |
Advanced
Tool | Description |
| Generic XML API escape-hatch for commands not covered by dedicated tools.⚠️ WARNING: can execute any API command the configured key permits, including destructive operations (delete, edit users, bulk modify). |
Usage Examples
Example 1: Finding open bugs in a project
You: "Show me all open bugs in the Website project assigned to nobody."
Claude calls: search_cases with query project:Website status:Active assignedTo:nobody category:Bug.
Result: A list of unassigned bugs with their IDs, titles, and creation dates — ready to triage or assign.
Example 2: Creating a case from a bug report
You: "Create a bug in the Mobile project titled 'Login button unresponsive on iOS 17', assign it to alice, and set priority to 2."
Claude calls: create_case with project, title, assignee, and priority set in a single call, then get_case_link to return a direct URL.
Result: New case created. Claude confirms the case number and provides a link.
Example 3: Resolving a case with a closing comment
You: "Resolve case 1042 and add a comment saying the fix was deployed in v3.5.1."
Claude calls: resolve_case with the case ID and a comment describing the fix.
Result: Case resolved. Claude confirms the status change and the comment was saved.
Example 4: Reviewing your team's workload
You: "What open cases does bob have right now?"
Claude calls: list_people to find Bob's user ID, then list_my_cases filtered to that user.
Result: A summary of Bob's active cases grouped by project, with priorities and due dates.
Example 5: Updating a case after a code review
You: "Move case 987 to the Backend project, change the milestone to v4.0, and leave a comment saying it was re-scoped after the architecture review."
Claude calls: update_case with the new project, milestone, and comment all set in one call.
Result: Case updated. Claude confirms each field change.
How It Works
This server implements the Model Context Protocol over stdio. The AI client translates natural language requests into FogBugz queries or API calls, invokes the appropriate tool, and presents the results. The server is a thin proxy — it passes requests directly to your FogBugz instance and returns the response.
API Auto-Detection
At startup the server automatically selects the right API client for your FogBugz instance:
Probes
/api.xmlto read the FogBugz version number.If version ≥ 9, attempts to reach the JSON API (
/f/api/0/jsonapi) — usesFogBugzJsonClienton success.Falls back to
FogBugzXmlClient(XML API via/api.asp) for version < 9 or if the JSON endpoint is unreachable.
FogBugz version | API used |
≥ 9 (JSON API available) | JSON API ( |
< 9 or JSON API unreachable | XML API ( |
Note on text formatting: Plain text only is supported in descriptions and comments when connected to FogBugz 8.x via the XML API. HTML and Markdown are stored and displayed literally.
Configuration Reference
Variable | Required | Description |
| Yes | Base URL of your FogBugz instance (e.g. |
| Yes | FogBugz API token |
Installation
Via npx (no install needed)
# Latest stable release
npx @todevs/fogbugz-mcp
# Latest dev build (pre-release)
npx @todevs/fogbugz-mcp@devFrom source
git clone https://github.com/todevelopers/fogbugz-mcp.git
cd fogbugz-mcp
npm install
npm run build
node dist/index.js https://your-fogbugz-server.com your-api-tokenDevelopment
npm run dev # run via ts-node (no build needed)
npm run build # compile TypeScript to dist/
npm test # run all Jest testsCompatibility
FogBugz on-premise and on-demand (tested with FogBugz 8.8.53 via XML API)
Node.js 20+
Privacy Policy
This server does not collect, store, or transmit any data to ToDevelopers or any third party. All communication is directly between your AI client and your own FogBugz instance using the URL and credentials you provide. No usage data, case content, or credentials are sent anywhere other than your configured FogBugz server.
For complete privacy information, see the FogBugz Privacy Policy.
Acknowledgements
This project is based on the original work by Sarasvati Akari Lara-Almeida — thank you for the foundation.
License
MIT © Tomáš Gažovič, ToDevelopers s.r.o.
Available Tools
19 toolsapi_requestRaw API RequestADestructive
Generic XML API escape-hatch for FogBugz commands not covered by dedicated tools. WARNING: Can execute any API command the configured key permits, including destructive operations (delete, edit users, bulk modify). Prefer specific tools when available; use this only when no dedicated tool fits the need. Examples: cmd=listProjects; cmd=listCategories; cmd=search with params {"q": "project:Website", "cols": "sTitle,sStatus", "max": "10"}.
Inputs: cmd (required), params.
assign_caseAssign CaseADestructive
Assigns a FogBugz case to a specific user. Example: assign case 42 to "jane@example.com" or to "Jane Smith".
Inputs: caseId (required), assignee (required).
close_caseClose CaseADestructive
Closes a FogBugz case (marks it as will not fix / done). Example: close case 42 with comment "Closed — duplicate of case 10".
Inputs: caseId (required), comment.
create_caseCreate CaseADestructive
Creates a new FogBugz case. Example: create a bug titled "Login fails on Safari" in project "Website", area "Auth", assigned to "john@example.com", priority 2.
Inputs: title (required), description, project, area, +3 more.
create_projectCreate ProjectADestructive
Creates a new project in FogBugz. Example: create project "Mobile App" with primary contact "alice@example.com".
Inputs: name (required), primaryContact, isInbox, allowPublicSubmit.
get_caseGet CaseARead-only
Gets detailed information about a specific FogBugz case, including its full event/comment history. Example: fetch all details and comments for case 42.
Inputs: caseId (required), cols.
get_case_linkGet Case LinkARead-only
Returns a direct URL to a FogBugz case that can be shared with teammates. Example: get the link for case 42.
Inputs: caseId (required).
list_categoriesList CategoriesARead-only
Lists all case categories defined in FogBugz (e.g., Bug, Feature Request, Inquiry). Returns category IDs and names.
Inputs: no named parameters.
list_milestonesList MilestonesARead-only
Lists milestones (fix-for versions) in FogBugz. Optionally filter by project ID. Example: list all milestones for project 5 to find the right target release.
Inputs: ixProject.
list_my_casesList My CasesARead-only
Lists FogBugz cases assigned to a specific user. Example: list all active cases assigned to "john@example.com", or list up to 20 cases for the current user.
Inputs: assignee, status, limit.
list_peopleList PeopleARead-only
Lists all people (users) in FogBugz with their IDs, names, and email addresses. Useful for finding the correct assignee name or ID before creating or updating a case.
Inputs: no named parameters.
list_projectsList ProjectsARead-only
Lists all active (non-deleted) projects in FogBugz with their IDs and names. Example: retrieve all projects to find the correct project ID before creating a case.
Inputs: no named parameters.
list_statusesList StatusesARead-only
Lists all case statuses defined in FogBugz. Optionally filter by category ID. Returns status names and whether each status counts as resolved. Example: list statuses for category 1 (Bug) to see available workflow states.
Inputs: ixCategory.
reopen_caseReopen CaseADestructive
Reopens a previously closed or resolved FogBugz case. Example: reopen case 42 with comment "Issue reproduced on v2.1".
Inputs: caseId (required), comment.
resolve_caseResolve CaseADestructive
Resolves (marks as fixed/completed) a FogBugz case. Example: resolve case 42 with comment "Fixed in commit abc123".
Inputs: caseId (required), comment, ixStatus.
search_casesSearch CasesARead-only
Searches for FogBugz cases using FogBugz search syntax. Examples: "project:Website status:Active" to find open Website cases; "assignedTo:jane priority:1" for Jane's urgent cases; "tag:regression milestone:v2.0" for regression bugs in a milestone.
Inputs: query (required), limit.
update_caseUpdate CaseADestructive
Updates an existing FogBugz case with new field values. Example: change the title of case 42 to "Improved error message", move it to milestone "v2.1", or add a comment explaining what changed.
Inputs: caseId (required), title, description, project, +3 more.
view_areaView AreaARead-only
Gets detailed information about a specific FogBugz area by its numeric ID. Example: view details for area with ID 7.
Inputs: ixArea (required).
view_projectView ProjectARead-only
Gets detailed information about a specific FogBugz project by its numeric ID. Example: view details for project with ID 3.
Inputs: ixProject (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 19 tools
Every tool has a clearly distinct purpose focused on specific resources and actions in the FogBugz domain. For example, create_case, update_case, close_case, and resolve_case handle different case lifecycle states without overlap, while list_projects, view_project, and create_project cover distinct project-related operations. The generic api_request is explicitly marked as an escape hatch, preventing confusion with dedicated tools.
Tool names follow a highly consistent verb_noun pattern throughout, such as create_case, list_projects, update_case, and view_area. All tools use snake_case without deviation, and verbs like 'list', 'get', 'create', 'update', 'close', and 'search' are applied predictably across resources. This uniformity makes the toolset easy to navigate and understand.
With 19 tools, the count is slightly high but reasonable for a comprehensive issue-tracking system like FogBugz. It covers core CRUD operations for cases, projects, and areas, plus supporting functions like search, status/category listing, and user management. The scope is well-defined, though it borders on being extensive; each tool appears to earn its place without obvious redundancy.
The toolset provides complete CRUD and lifecycle coverage for the FogBugz domain. It includes create, read (get, list, search), update, and delete-like actions (close, resolve) for cases, along with project and area management. Supporting tools for categories, milestones, statuses, and people ensure no dead ends, and the generic api_request fills any potential gaps, making the surface highly complete for issue-tracking workflows.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Official Fibery MCP server: query and update your workspace from any AI client via OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Language Learning Models to interact with FogBugz, allowing operations like creating and updating issues, assigning cases, listing open cases, and searching through natural language.10 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with FogBugz issue tracking system through its XML API, allowing users to search, create, update, and manage cases, comments, and attachments directly from their MCP client.10 npmMIT
- AlicenseAqualityCmaintenanceAn MCP (Model Context Protocol) server for Codebeamer ALM. Allows Claude and other MCP clients to read and write projects, trackers, and items in Codebeamer using natural language.1945 npm9MIT
- AlicenseAqualityDmaintenanceMCP server that lets LLMs read and manage BugSmash reviewer feedback while keeping the API key private.78 npmMIT