trac-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@trac-mcp-servercreate a ticket for bug fix in login module"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
trac-mcp-server
Standalone MCP server that gives AI agents full access to Trac project management -- tickets, wiki, milestones, and search -- via the Model Context Protocol.
Quick Start
Requires Python 3.10 or later.
pip install .Set your Trac connection:
export TRAC_URL="https://trac.example.com"
export TRAC_USERNAME="your-username"
export TRAC_PASSWORD="your-password"Run the server:
trac-mcp-serverUsing auto-pm? When trac-mcp-server is driven through auto-pm, auto-pm reads its connection settings from
.auto_pm/config.ymlin your project root (rather than the environment variables above). Runauto-pm setupin your project directory to generate the file; the resulting.auto_pm/config.ymlcarriestrac.url,trac.username, a${TRAC_PASSWORD}reference, and component mappings.
Related MCP server: ClickUp MCP Server
Configuration
Configuration via environment variables, .env file, or YAML config file (.trac_mcp/config.yaml):
Variable | Required | Default | Description |
| Yes | -- | Trac instance URL |
| Yes | -- | Trac username |
| Yes | -- | Trac password |
| No |
| Skip SSL verification (development only) |
| No |
| Enable debug logging |
| No |
| Max parallel XML-RPC requests |
| No |
| Max items per batch operation (1-10000) |
| No |
| Read timeout in seconds for XML-RPC requests (5-300) |
| No |
| MCP transport: |
| No |
| Bind host for the |
| No |
| Bind port for the |
| No | -- | Bearer token required by the |
For YAML config file format and advanced options, see Configuration Reference. For the http transport specifically, see HTTP Transport.
MCP Client Integration
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"trac": {
"command": "trac-mcp-server",
"env": {
"TRAC_URL": "https://trac.example.com",
"TRAC_USERNAME": "your-username",
"TRAC_PASSWORD": "your-password"
}
}
}
}Claude Code
claude mcp add trac -e TRAC_URL=https://trac.example.com \
-e TRAC_USERNAME=your-username \
-e TRAC_PASSWORD=your-password \
-- trac-mcp-serverOther MCP Clients
Any MCP client that supports stdio transport can launch trac-mcp-server as a subprocess. Pass Trac credentials via environment variables.
For a shared or remote deployment, trac-mcp-server can also serve MCP over streamable HTTP instead of stdio:
TRAC_MCP_AUTH_TOKEN=your-token trac-mcp-server --transport http --port 8080See HTTP Transport for auth, bind-safety rules, and reverse-proxy guidance.
Format Conversion CLI
The package also installs trac-convert, a standalone CLI for converting between TracWiki and Markdown without requiring a Trac connection. Useful for one-off conversions, editor pipelines, and clipboard workflows.
# Convert Markdown to TracWiki (stdin → stdout)
trac-convert --from md --to tracwiki < README.md > README.tw
# Convert a file (auto-detects source format)
trac-convert --to md notes.tw -o notes.md
# Clipboard round-trip
trac-convert --from-clipboard --to tracwiki --to-clipboardSupports stdin/stdout pipes, file I/O, and system clipboard on Linux, macOS, and Windows (via pyperclip). See CLI Reference for the full flag list.
Trac Wiki I/O
trac-convert can also read from and write to a live Trac instance via --from-wiki PAGE and --to-wiki PAGE, reusing the same credentials and config precedence as trac-mcp-server: .trac_mcp/config.yml, TRAC_* env vars, or --trac-* CLI flags — CLI wins.
# Verify Trac connectivity (prints resolved config, pings server)
trac-convert --check-trac
# Fetch a Trac wiki page, convert to Markdown, save locally
trac-convert --from-wiki DesignDoc --to md -o design.md
# Edit design.md in your favourite editor, then push it back
trac-convert --from-file design.md --to-wiki DesignDoc --wiki-comment "Refined via CLI"
# One-liner Trac → clipboard for quick reference lookup
trac-convert --from-wiki ReleaseNotes --to md --to-clipboardAuth setup: use an existing .trac_mcp/config.yml (the same file trac-mcp-server uses) or supply ad-hoc flags — --trac-url, --trac-username, --trac-password-file ~/.trac_pass (prefer --trac-password-file to keep secrets out of shell history). See Configuration for the full precedence rules.
Trac errors (auth, network, page-not-found, permission-denied) exit with code 4 and write a human-readable message to stderr. See CLI Reference for the full flag list.
Available Tools (43)
Every tool below also accepts an optional instance argument to route the call to another Trac project on the same host (or a named instance from config) instead of the default -- see Multiple Instances.
Tickets (11)
Tool | Description |
| Search tickets with Trac query language |
| Get ticket details by ID |
| Create new tickets |
| Update existing tickets |
| Delete tickets |
| Get ticket change history |
| List available ticket fields |
| Get available ticket actions |
| Create multiple tickets in one batch |
| Delete multiple tickets in one batch |
| Update multiple tickets in one batch |
Ticket Attachments (4)
Tool | Description |
| Upload a local file as an attachment to a ticket (bytes sent via XML-RPC, not inlined) |
| Download a ticket attachment to a local file (bytes written to output_path, not inlined) |
| List attachments on a ticket |
| Delete a ticket attachment (requires TICKET_ADMIN) |
Ticket Admin (6)
Tool | Description |
| Create a new ticket component (requires TICKET_ADMIN) |
| List all ticket components |
| Delete a ticket component (requires TICKET_ADMIN) |
| Create a new enum value (priority, resolution, severity, type, version) — requires TICKET_ADMIN |
| List enum values for a given enum type |
| Delete an enum value (requires TICKET_ADMIN) |
Wiki (7)
Tool | Description |
| Get wiki page content as stored (TracWiki, byte-for-byte) |
| Search wiki pages |
| Create new wiki pages (content stored byte-for-byte) |
| Update existing wiki pages (content stored byte-for-byte) |
| Delete wiki pages |
| List recent wiki changes |
| Get version history for a wiki page |
Wiki Files (3)
Tool | Description |
| Push local file to wiki (auto format conversion) |
| Pull wiki page to local file |
| Detect content format (Markdown/TracWiki) |
Wiki Attachments (4)
Tool | Description |
| Upload a local file as an attachment to a wiki page (bytes sent via XML-RPC, not inlined) |
| Download a wiki attachment to a local file (bytes written to output_path, not inlined) |
| List attachments on a wiki page |
| Delete a wiki attachment (requires WIKI_DELETE) |
Milestones (5)
Tool | Description |
| List all milestones |
| Get milestone details |
| Create new milestones |
| Update existing milestones |
| Delete milestones |
System (2)
Tool | Description |
| Test connectivity and return API version |
| Get Trac server time |
Instances (1)
Tool | Description |
| List configured and (via discovery) host-visible Trac instances |
Development
pip install -e ".[dev]"
pytest tests/ -vThe two CI halves
./ci.sh # lint + offline tests + dual-binary build. Hermetic:
# no credentials, no daemon, no network
./ci-live.sh # the same suite with --run-live, against a real Tracci.sh is what GitHub Actions runs, and it deliberately does not pass
--run-live, so every @pytest.mark.live test is skipped there. Those tests
are the only place this project exercises the real Trac substrate, so run
ci-live.sh too before deploying a change to a shared daemon. It needs
TRAC_URL, TRAC_USERNAME and TRAC_PASSWORD (see .env.example), and
without them it exits non-zero without running pytest — not run must not be
able to look like passed.
ci.sh runs the offline suite with TRAC_* scrubbed from the environment,
and .env is loaded only under --run-live. An offline test that needs
credentials therefore fails locally rather than only on Actions.
Project Structure
src/trac_mcp_server/
config.py # Environment variable configuration
core/ # Trac XML-RPC client, async utilities
mcp/ # MCP server, tools, resources
converters/ # Markdown <-> TracWiki conversion
detection/ # Content format detectionDocumentation
See docs/reference/overview.md for detailed tool reference, configuration, and troubleshooting.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- hiveWikiOAuthai.hivewiki
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
130- OneLoreOAuthai.onelore
Shared project context for AI agents and teams: docs, tasks, and messages that stay current.
Project management MCP for AI agents with safe task reads and writes.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to interact with tasks, spaces, lists, and folders across multiple ClickUp workspaces via the Model Context Protocol.601MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with ClickUp tasks, spaces, lists, and folders through the Model Context Protocol, supporting task creation, updates, moves, duplicates, and workspace organization.24,921-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to manage OpenProject projects, work packages, activities, and wiki pages through the Model Context Protocol.-
- AlicenseNot gradedqualityDmaintenanceEnables AI clients to manage Trilium Notes with full CRUD operations, search, calendar integration, and system administration through the Model Context Protocol.182MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nerpatech/trac-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server