Repository navigation
## [2.1.3] - 2026-07-25
Pre-release
Pre-release
[2.1.3] - 2026-07-25
Added
- Batch ticket operations:
ticket_batch_create,ticket_batch_delete,ticket_batch_update-- best-effort processing with per-item results and bounded parallelism viagather_limited TRAC_MAX_BATCH_SIZEenvironment variable (default: 500, range: 1-10000) for controlling maximum items per batch operation- Config path resolution (
resolve_config_path()) and bootstrapping (ensure_config()) utilities in config_loader.py - YAML config file support via
config_loaderandconfig_schemaintegration in server lifespan -- discovers.trac_mcp/config.yamlwith hierarchical loading - Three-source configuration precedence: CLI arguments > environment variables > config file
- 5 new tests for YAML config loading path in
test_lifespan.py - Package version display in test script output
- Shared error translation utility (
translate_xmlrpc_error) consolidating 5 duplicate implementations - Shared timestamp formatting utility (
format_timestamp) with timezone-aware UTC - Shared constants module (
constants.py) for tool handlers - Network timeout (10s connect, 60s read) on XML-RPC requests
- 79 new tests covering TracClient methods, error handlers, auto_convert, and logger (781 -> 860 -> 641 after sync removal)
CHANGELOG.mdversion history extracted from planning documentsseverityparameter now supported onticket_createandticket_update(previously accepted but dropped)ticket_updatenow forwardssummary,description(with Markdown→TracWiki conversion), andtypeticket attributes (previously accepted but dropped)ticket_updatenow forwards Trac workflow actions:action(e.g.accept,resolve,reopen) plusaction_<action>_<action>_<field>workflow input fields (e.g.action_resolve_resolve_resolution). Pattern-based forwarding foraction_*keys, since action names are workflow-config-dependent. Enables clients (e.g. auto-pm) to drive Trac workflow transitions through the MCPticket_updatetool instead of being silently droppedcore/clientnow parses XML-RPC<base64>values, decoding them to Pythonbytesinstead of dropping or mishandling them (#12)- MCP tool wrappers for ticket attachments:
ticket_attachment_put,ticket_attachment_get,ticket_attachment_list,ticket_attachment_delete— push, fetch (with byte-identical retrieval), enumerate, and remove ticket attachments via the MCP layer, withTICKET_ADMIN-aware permission diagnostics on delete (#10) - MCP tool wrappers for wiki attachments:
wiki_attachment_put,wiki_attachment_get,wiki_attachment_list,wiki_attachment_delete— push, fetch (with byte-identical retrieval), enumerate, and remove wiki page attachments via the MCP layer, withWIKI_DELETE-aware permission diagnostics on delete (#11)
Changed
- Modernized typing across all source files to Python 3.10+ style (
X | Noneinstead ofOptional[X], built-in generics) - Renamed
TRAC_ASSIST_CONFIGenv var toTRAC_MCP_CONFIG(backward compatible with deprecation warning) - Updated copyright from OpenCode to nerpa.tech in LICENSE and pyproject.toml
- Added PyPI project URLs (Homepage, Repository, Issues, Changelog) to pyproject.toml
- Updated all documentation (configuration, deployment, CLI, troubleshooting, README) to reflect YAML config file support
- Unified
max_parallel_requestsdefault to 5 (was 2 in TracConfig) - Moved
max_batch_sizefrom standalone function to TracConfig field with Pydantic validation - Consolidated redundant wiki tool tests (457 -> 158 lines, 65% reduction)
- Reorganized test files into consistent
tests/test_mcp/tools/directory structure - Migrated 2 test files from unittest.TestCase to pytest style
Fixed
ticket_getnow includes keywords, cc, reporter, and resolution fields in both text and structured JSON output (were previously omitted)- Lazy logger formatting (
%sinstead of f-strings) in lifespan and system modules ConversionResulttype mismatch in wiki resources (was passing object as string)set_client()signature to acceptTracClient | None(removed type: ignore)- Removed License classifier conflicting with PEP 639 (
setuptools >= 77.0derives it fromlicense = "MIT") - Dead code removal: duplicate
get_version(), unused validator loop, stale imports - Live test configuration:
.envnow loaded in conftest forTRAC_URLavailability - Markdown -> TracWiki converter no longer mangles sentinel-shaped markers like
[auto-pm: state NEEDS_CODE]; non-URL-shaped links are emitted verbatim instead of being wrapped as broken wiki links (#8)
Removed
- Sync subsystem:
doc_syncanddoc_sync_statusMCP tools,src/trac_mcp_server/sync/module, and all sync-related tests (213 tests) scripts/test_trac.pylive test script and associated report- Sync config schema models (
SyncMappingRule,SyncProfileConfig) and sync profile support inUnifiedConfig
[2.1.0] - 2026-02-15
Post-extraction cleanup release. Hardens the standalone package after splitting from trac_assist v1.3.2.
Changed
- Rewrote all documentation for standalone usage (README, configuration, deployment, troubleshooting, tool reference)
- Removed orphaned trac_assist references from source, comments, and docstrings
- Cleaned import paths and removed unused dependencies (cssselect, anyio from direct deps)
- Promoted pydantic and charset-normalizer to direct dependencies
- Standardized all error returns to MCP CallToolResult format (fixed isError boolean bug)
- Bumped setuptools requirement to >=77.0 for PEP 639 support
Added
- Config validation: URL structure, max_parallel bounds (1-20), whitespace rejection
- .env.example with all supported environment variables
- MIT LICENSE file with PEP 639 SPDX metadata
- PyInstaller build.sh and install.sh scripts for standalone binary distribution
- GitHub Actions CI workflow (lint, test, live-test, build jobs)
- Local ci.sh script mirroring CI checks
- Ruff linter (E4/E7/E9/F/B/I rules) with zero-violation baseline
- Comprehensive test coverage: 741 tests (up from ~200 extracted tests)
Fixed
- isError field in error responses now correctly set to True (was always False)
- Detection tests relying on trac_assist fixtures
- Stale monolith references in test_trac.py integration script
[2.0.0] - 2026-02-14
Initial standalone release. Extracted from trac_assist v1.3.2 as independent MCP server package.
Added
- 24 MCP tools (tickets, wiki, milestones, system)
- Wiki page resources via MCP resource protocol
- Markdown to TracWiki bidirectional format conversion
- stdio transport for MCP client integration
- Environment variable configuration (TRAC_URL, TRAC_USERNAME, TRAC_PASSWORD)
trac-mcp-serverCLI entry point- Independent test suite