mcp-ticketer 0.4.4__tar.gz → 0.4.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mcp-ticketer might be problematic. Click here for more details.
- {mcp_ticketer-0.4.4/src/mcp_ticketer.egg-info → mcp_ticketer-0.4.5}/PKG-INFO +13 -4
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/README.md +12 -3
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/AI_CLIENT_INTEGRATION.md +63 -21
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/MIGRATION_GUIDE.md +91 -9
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/QUICK_START.md +33 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/pyproject.toml +1 -1
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/__version__.py +1 -1
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/auggie_configure.py +35 -15
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/codex_configure.py +38 -31
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/gemini_configure.py +38 -25
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/mcp_configure.py +115 -78
- mcp_ticketer-0.4.5/src/mcp_ticketer/cli/python_detection.py +126 -0
- mcp_ticketer-0.4.5/src/mcp_ticketer/mcp/__init__.py +33 -0
- mcp_ticketer-0.4.5/src/mcp_ticketer/mcp/__main__.py +60 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/__init__.py +3 -1
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/manager.py +10 -46
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/ticket_registry.py +5 -5
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5/src/mcp_ticketer.egg-info}/PKG-INFO +13 -4
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/SOURCES.txt +3 -0
- mcp_ticketer-0.4.5/tests/cli/test_python_detection.py +147 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_actual_worker_execution.py +3 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_unified_env_loading.py +3 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_all_adapters.py +5 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_codex_config.py +2 -9
- mcp_ticketer-0.4.4/src/mcp_ticketer/mcp/__init__.py +0 -5
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042175430.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042175768.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042175888.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042175987.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042176075.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042176163.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/tickets/task-20251024141042175062.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/tickets/task-20251024141042175285.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.claude.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.coveragerc +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.cursor/mcp.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.env.example +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.github/workflows/docs.yml +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.github/workflows/publish.yml +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.github/workflows/test.yml +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.mcp/config.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.pre-commit-config.yaml +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.python-version +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.readthedocs.yaml +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/CHANGELOG.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/CLAUDE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/CLI_RESTRUCTURE_REPORT.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/CLI_RESTRUCTURE_TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/LICENSE +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/MANIFEST.in +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/Makefile +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/PATH_TRAVERSAL_SECURITY_TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/SECURITY_RESCAN_REPORT.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/VERIFICATION_v0.4.3.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/debug_epic_creation.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/debug_full_flow.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/debug_worker_epic.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/ADAPTERS.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/API_REFERENCE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/ATTACHMENTS.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/CONFIGURATION.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/DEVELOPER_GUIDE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/ENV_DISCOVERY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/MCP_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/PROJECT_CONFIG.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/PR_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/QUEUE_SYSTEM.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/QUICK_START_ENV.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/README.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/USER_GUIDE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/VERSIONING_AND_BUILD_TRACKING.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_archive/README.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/adapters/github.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/adapters.rst.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/api.rst.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/cli.rst.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/development.rst.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/examples.rst.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/index.rst.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/installation.rst.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/adapters/github.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/adapters.rst +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/api.rst +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/changelogs/CHANGELOG_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/changelogs/CHANGELOG_v0.3.0.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/changelogs/CHANGELOG_v0.3.1.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/cli.rst +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/conf.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development/CODE_STRUCTURE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development/CONTRIBUTING.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development/RELEASE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development/RELEASING.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development.rst +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/examples.rst +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/guides/BULLETPROOF_TICKET_CREATION_GUIDE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/index.rst +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/installation.rst +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/prd/mcp-ticketer-prd.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_GUIDE_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.3.0.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.3.1.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.3.4.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.3.5.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/RELEASE_v0.1.39_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/RELEASE_v0.2.0_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/CONFIG_RESOLUTION_FIX.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/CREDENTIAL_VALIDATION_FIX.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/DIAGNOSTICS_FEATURE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/ENV_DISCOVERY_COMPLETE.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/MCP_CONFIGURATION_TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/OPTIMIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/TEST_COVERAGE_REPORT.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/TEST_RESULTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/VERIFICATION_RESULTS.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/requirements.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/setup/CLAUDE_DESKTOP_SETUP.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/setup/CODEX_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/setup/JIRA_SETUP.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/setup/LINEAR_SETUP.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/AUTO_DISCOVERY_BUG_FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/BULLETPROOF_IMPROVEMENTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/COMMAND_SYNONYMS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/COMPREHENSIVE_TESTING_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/INTERACTIVE_CLI_SETUP_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/LINEAR_ADAPTER_INITIALIZATION_BUG_FIX.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/MODULE_REFACTORING_ANALYSIS.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/MODULE_REFACTORING_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/PROJECT_CLEANUP_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/REFACTORED_ENV_SOLUTION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/mcp-ticketer +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/mcp-ticketer-server +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/pytest.ini +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/requirements-dev.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/requirements.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/README.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/install.sh +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/manage_version.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/mcp_server.sh +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/test_set_command.sh +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/setup.cfg +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/setup.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/github.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/hybrid.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/jira.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/adapter.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/client.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/mappers.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/queries.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/types.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cache/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cache/memory.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/adapter_diagnostics.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/configure.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/diagnostics.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/discover.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/linear_commands.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/main.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/migrate_config.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/platform_commands.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/queue_commands.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/simple_health.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/ticket_commands.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/utils.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/adapter.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/config.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/env_discovery.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/env_loader.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/exceptions.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/http_client.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/mappers.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/models.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/project_config.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/registry.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/constants.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/dto.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/response_builder.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/server.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/server_sdk.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/attachment_tools.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/bulk_tools.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/comment_tools.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/hierarchy_tools.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/pr_tools.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/search_tools.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/ticket_tools.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/py.typed +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/__main__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/health_monitor.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/queue.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/run_worker.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/worker.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/requires.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/test-tickets/tickets/task-20250924002724.json +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/test_linear_fixes.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/test_worker_persistence.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/README.md +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_adapter.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_client.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_mappers.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_queries.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_types.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_aitrackdown.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_aitrackdown_security.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_github.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_github_token.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_jira.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_jira_direct.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_jira_projects.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_linear.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_linear_config.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_linear_native.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/conftest.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/debug_credential_validation.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_config_resolution.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_env_discovery.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_environment_handoff.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_queue_processing.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_queue_system.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_adapter_cache.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_cli_config.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_cli_vs_simulation.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_linear_teams.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_search.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_test.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_worker_adapter.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_worker_simulation.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_worker_subprocess.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_comments_and_attachments.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_complete_ticket_workflow.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_complete_workflow.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_hierarchy_validation.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_state_transitions.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_aitrackdown_commenting.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_commenting_functionality.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_comprehensive.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_hierarchy_and_workflow.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_jira_github_adapters.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_mcp_server_qa.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_pr_functionality.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_serve_config.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_user_assignment.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/performance/test_optimizations.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/performance/test_performance.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/run_comprehensive_tests.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_api_usage.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_base_adapter.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_basic.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_comprehensive_qa.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_error_handling.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_linear_teams.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_models.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_queue.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/__init__.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/test_cache_memory.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/test_core_exceptions.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/test_core_models.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/test_core_registry.py +0 -0
- {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-ticketer
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
4
4
|
Summary: Universal ticket management interface for AI agents with MCP support
|
|
5
5
|
Author-email: MCP Ticketer Team <support@mcp-ticketer.io>
|
|
6
6
|
Maintainer-email: MCP Ticketer Team <support@mcp-ticketer.io>
|
|
@@ -282,16 +282,25 @@ mcp-ticketer uninstall auggie # Alias for remove
|
|
|
282
282
|
{
|
|
283
283
|
"mcpServers": {
|
|
284
284
|
"mcp-ticketer": {
|
|
285
|
-
"command": "/path/to/
|
|
286
|
-
"args": ["
|
|
285
|
+
"command": "/path/to/venv/bin/python",
|
|
286
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/absolute/path/to/project"],
|
|
287
287
|
"env": {
|
|
288
|
-
"MCP_TICKETER_ADAPTER": "aitrackdown"
|
|
288
|
+
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
289
|
+
"PYTHONPATH": "/absolute/path/to/project"
|
|
289
290
|
}
|
|
290
291
|
}
|
|
291
292
|
}
|
|
292
293
|
}
|
|
293
294
|
```
|
|
294
295
|
|
|
296
|
+
**Why this pattern?**
|
|
297
|
+
- **More Reliable**: Uses venv Python directly instead of binary wrapper
|
|
298
|
+
- **Consistent**: Matches proven mcp-vector-search pattern
|
|
299
|
+
- **Universal**: Works across pipx, pip, and uv installations
|
|
300
|
+
- **Better Errors**: Python module invocation provides clearer error messages
|
|
301
|
+
|
|
302
|
+
**Automatic Detection**: The `mcp-ticketer install` commands automatically detect your venv Python and generate the correct configuration.
|
|
303
|
+
|
|
295
304
|
**See [AI Client Integration Guide](docs/AI_CLIENT_INTEGRATION.md) for client-specific details.**
|
|
296
305
|
|
|
297
306
|
## ⚙️ Configuration
|
|
@@ -197,16 +197,25 @@ mcp-ticketer uninstall auggie # Alias for remove
|
|
|
197
197
|
{
|
|
198
198
|
"mcpServers": {
|
|
199
199
|
"mcp-ticketer": {
|
|
200
|
-
"command": "/path/to/
|
|
201
|
-
"args": ["
|
|
200
|
+
"command": "/path/to/venv/bin/python",
|
|
201
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/absolute/path/to/project"],
|
|
202
202
|
"env": {
|
|
203
|
-
"MCP_TICKETER_ADAPTER": "aitrackdown"
|
|
203
|
+
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
204
|
+
"PYTHONPATH": "/absolute/path/to/project"
|
|
204
205
|
}
|
|
205
206
|
}
|
|
206
207
|
}
|
|
207
208
|
}
|
|
208
209
|
```
|
|
209
210
|
|
|
211
|
+
**Why this pattern?**
|
|
212
|
+
- **More Reliable**: Uses venv Python directly instead of binary wrapper
|
|
213
|
+
- **Consistent**: Matches proven mcp-vector-search pattern
|
|
214
|
+
- **Universal**: Works across pipx, pip, and uv installations
|
|
215
|
+
- **Better Errors**: Python module invocation provides clearer error messages
|
|
216
|
+
|
|
217
|
+
**Automatic Detection**: The `mcp-ticketer install` commands automatically detect your venv Python and generate the correct configuration.
|
|
218
|
+
|
|
210
219
|
**See [AI Client Integration Guide](docs/AI_CLIENT_INTEGRATION.md) for client-specific details.**
|
|
211
220
|
|
|
212
221
|
## ⚙️ Configuration
|
|
@@ -28,6 +28,33 @@ Complete guide to integrating MCP Ticketer with AI clients via the Model Context
|
|
|
28
28
|
|
|
29
29
|
The **Model Context Protocol (MCP)** is a standardized protocol that enables AI assistants to interact with external tools and services. MCP Ticketer implements MCP to provide universal ticket management capabilities to AI clients.
|
|
30
30
|
|
|
31
|
+
### MCP Server Configuration Pattern
|
|
32
|
+
|
|
33
|
+
**MCP Ticketer uses a reliable venv Python + module invocation pattern:**
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"command": "/path/to/venv/bin/python",
|
|
38
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/project/path"],
|
|
39
|
+
"env": {
|
|
40
|
+
"PYTHONPATH": "/project/path"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Why this pattern?**
|
|
46
|
+
1. **Reliability**: Direct venv Python invocation avoids binary wrapper issues
|
|
47
|
+
2. **Consistency**: Matches proven mcp-vector-search approach
|
|
48
|
+
3. **Compatibility**: Works across pipx, pip, and uv installations
|
|
49
|
+
4. **Error Clarity**: Python module errors are more informative
|
|
50
|
+
5. **Automatic**: `mcp-ticketer install <platform>` detects paths automatically
|
|
51
|
+
|
|
52
|
+
**How it works:**
|
|
53
|
+
- The `install` commands automatically detect your mcp-ticketer venv Python
|
|
54
|
+
- Module invocation (`-m mcp_ticketer.mcp.server`) is more reliable than binary paths
|
|
55
|
+
- Project path argument enables project-specific configurations
|
|
56
|
+
- PYTHONPATH ensures proper module resolution
|
|
57
|
+
|
|
31
58
|
### Supported AI Clients
|
|
32
59
|
|
|
33
60
|
MCP Ticketer supports **4 major AI clients** with varying levels of integration:
|
|
@@ -164,18 +191,24 @@ mcp-ticketer install claude-code --dry-run
|
|
|
164
191
|
{
|
|
165
192
|
"mcpServers": {
|
|
166
193
|
"mcp-ticketer": {
|
|
167
|
-
"command": "/
|
|
168
|
-
"args": ["
|
|
169
|
-
"cwd": "/Users/username/projects/my-project",
|
|
194
|
+
"command": "/path/to/venv/bin/python",
|
|
195
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/Users/username/projects/my-project"],
|
|
170
196
|
"env": {
|
|
171
197
|
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
172
|
-
"MCP_TICKETER_BASE_PATH": "/Users/username/projects/my-project/.aitrackdown"
|
|
198
|
+
"MCP_TICKETER_BASE_PATH": "/Users/username/projects/my-project/.aitrackdown",
|
|
199
|
+
"PYTHONPATH": "/Users/username/projects/my-project"
|
|
173
200
|
}
|
|
174
201
|
}
|
|
175
202
|
}
|
|
176
203
|
}
|
|
177
204
|
```
|
|
178
205
|
|
|
206
|
+
**Configuration Pattern Explained:**
|
|
207
|
+
- **command**: Path to Python in your mcp-ticketer venv (auto-detected by `install` command)
|
|
208
|
+
- **args**: `["-m", "mcp_ticketer.mcp.server", "<project_path>"]` - module invocation pattern
|
|
209
|
+
- **PYTHONPATH**: Project path for proper module resolution
|
|
210
|
+
- **Benefits**: More reliable, better error messages, works across all installation methods
|
|
211
|
+
|
|
179
212
|
#### Step 5: Use in Claude Code
|
|
180
213
|
|
|
181
214
|
1. Open Claude Code
|
|
@@ -193,13 +226,14 @@ mcp-ticketer install claude-code --dry-run
|
|
|
193
226
|
{
|
|
194
227
|
"mcpServers": {
|
|
195
228
|
"mcp-ticketer": {
|
|
196
|
-
"command": "/path/to/
|
|
197
|
-
"args": ["
|
|
229
|
+
"command": "/path/to/venv/bin/python",
|
|
230
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/project/path"],
|
|
198
231
|
"env": {
|
|
199
232
|
"MCP_TICKETER_ADAPTER": "linear",
|
|
200
233
|
"LINEAR_API_KEY": "your-api-key",
|
|
201
234
|
"LINEAR_TEAM_ID": "your-team-id",
|
|
202
|
-
"MCP_TICKETER_LOG_LEVEL": "DEBUG"
|
|
235
|
+
"MCP_TICKETER_LOG_LEVEL": "DEBUG",
|
|
236
|
+
"PYTHONPATH": "/project/path"
|
|
203
237
|
}
|
|
204
238
|
}
|
|
205
239
|
}
|
|
@@ -212,19 +246,21 @@ mcp-ticketer install claude-code --dry-run
|
|
|
212
246
|
{
|
|
213
247
|
"mcpServers": {
|
|
214
248
|
"mcp-ticketer-jira": {
|
|
215
|
-
"command": "/path/to/
|
|
216
|
-
"args": ["
|
|
249
|
+
"command": "/path/to/venv/bin/python",
|
|
250
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/project/path"],
|
|
217
251
|
"env": {
|
|
218
252
|
"MCP_TICKETER_ADAPTER": "jira",
|
|
219
|
-
"JIRA_SERVER": "https://company.atlassian.net"
|
|
253
|
+
"JIRA_SERVER": "https://company.atlassian.net",
|
|
254
|
+
"PYTHONPATH": "/project/path"
|
|
220
255
|
}
|
|
221
256
|
},
|
|
222
257
|
"mcp-ticketer-github": {
|
|
223
|
-
"command": "/path/to/
|
|
224
|
-
"args": ["
|
|
258
|
+
"command": "/path/to/venv/bin/python",
|
|
259
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/project/path"],
|
|
225
260
|
"env": {
|
|
226
261
|
"MCP_TICKETER_ADAPTER": "github",
|
|
227
|
-
"GITHUB_REPO": "owner/repo"
|
|
262
|
+
"GITHUB_REPO": "owner/repo",
|
|
263
|
+
"PYTHONPATH": "/project/path"
|
|
228
264
|
}
|
|
229
265
|
}
|
|
230
266
|
}
|
|
@@ -300,10 +336,10 @@ mcp-ticketer install gemini --dry-run
|
|
|
300
336
|
{
|
|
301
337
|
"mcpServers": {
|
|
302
338
|
"mcp-ticketer": {
|
|
303
|
-
"command": "/
|
|
304
|
-
"args": ["
|
|
339
|
+
"command": "/path/to/venv/bin/python",
|
|
340
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/Users/username/projects/my-project"],
|
|
305
341
|
"env": {
|
|
306
|
-
"PYTHONPATH": "/Users/username/projects/my-project
|
|
342
|
+
"PYTHONPATH": "/Users/username/projects/my-project",
|
|
307
343
|
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
308
344
|
"MCP_TICKETER_BASE_PATH": "/Users/username/projects/my-project/.aitrackdown"
|
|
309
345
|
},
|
|
@@ -314,6 +350,8 @@ mcp-ticketer install gemini --dry-run
|
|
|
314
350
|
}
|
|
315
351
|
```
|
|
316
352
|
|
|
353
|
+
**Note**: The venv Python path is automatically detected by `mcp-ticketer install gemini`.
|
|
354
|
+
|
|
317
355
|
#### Step 5: Use in Gemini CLI
|
|
318
356
|
|
|
319
357
|
1. Navigate to your project directory
|
|
@@ -424,15 +462,17 @@ mcp-ticketer install codex --dry-run
|
|
|
424
462
|
|
|
425
463
|
```toml
|
|
426
464
|
[mcp_servers.mcp-ticketer]
|
|
427
|
-
command = "/
|
|
428
|
-
args = ["
|
|
465
|
+
command = "/path/to/venv/bin/python"
|
|
466
|
+
args = ["-m", "mcp_ticketer.mcp.server", "/Users/username/projects/my-project"]
|
|
429
467
|
|
|
430
468
|
[mcp_servers.mcp-ticketer.env]
|
|
431
|
-
PYTHONPATH = "/Users/username/projects/my-project
|
|
469
|
+
PYTHONPATH = "/Users/username/projects/my-project"
|
|
432
470
|
MCP_TICKETER_ADAPTER = "aitrackdown"
|
|
433
471
|
MCP_TICKETER_BASE_PATH = "/Users/username/projects/my-project/.aitrackdown"
|
|
434
472
|
```
|
|
435
473
|
|
|
474
|
+
**Note**: The venv Python path is automatically detected and configured by `mcp-ticketer install codex`.
|
|
475
|
+
|
|
436
476
|
#### Step 6: Use in Codex CLI
|
|
437
477
|
|
|
438
478
|
1. Run `codex` from any directory
|
|
@@ -525,8 +565,8 @@ mcp-ticketer install auggie --dry-run
|
|
|
525
565
|
{
|
|
526
566
|
"mcpServers": {
|
|
527
567
|
"mcp-ticketer": {
|
|
528
|
-
"command": "/
|
|
529
|
-
"args": ["
|
|
568
|
+
"command": "/path/to/venv/bin/python",
|
|
569
|
+
"args": ["-m", "mcp_ticketer.mcp.server"],
|
|
530
570
|
"env": {
|
|
531
571
|
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
532
572
|
"MCP_TICKETER_BASE_PATH": "/Users/username/.mcp-ticketer/.aitrackdown"
|
|
@@ -536,6 +576,8 @@ mcp-ticketer install auggie --dry-run
|
|
|
536
576
|
}
|
|
537
577
|
```
|
|
538
578
|
|
|
579
|
+
**Note**: The venv Python path is automatically detected by `mcp-ticketer install auggie`. Since Auggie uses global configuration, project path arguments are typically omitted.
|
|
580
|
+
|
|
539
581
|
#### Step 6: Use in Auggie
|
|
540
582
|
|
|
541
583
|
1. Open Auggie
|
|
@@ -51,22 +51,81 @@ mcp-ticketer install
|
|
|
51
51
|
|
|
52
52
|
#### New Features in v0.5.x
|
|
53
53
|
|
|
54
|
-
##### 1.
|
|
54
|
+
##### 1. Reliable venv Python Pattern
|
|
55
|
+
|
|
56
|
+
Version 0.5.x introduces a new, more reliable MCP server configuration pattern:
|
|
57
|
+
|
|
58
|
+
**Old Pattern (v0.4.x):**
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"command": "/usr/local/bin/mcp-ticketer",
|
|
62
|
+
"args": ["serve"],
|
|
63
|
+
"env": {
|
|
64
|
+
"MCP_TICKETER_ADAPTER": "aitrackdown"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**New Pattern (v0.5.x):**
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"command": "/path/to/venv/bin/python",
|
|
73
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/project/path"],
|
|
74
|
+
"env": {
|
|
75
|
+
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
76
|
+
"PYTHONPATH": "/project/path"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Benefits:**
|
|
82
|
+
- ✅ More reliable across installation methods (pipx, pip, uv)
|
|
83
|
+
- ✅ Better error messages from Python module invocation
|
|
84
|
+
- ✅ Consistent with proven mcp-vector-search approach
|
|
85
|
+
- ✅ Automatic detection of venv Python path
|
|
86
|
+
- ✅ Works across different Python versions
|
|
87
|
+
|
|
88
|
+
**Migration:** The `install` commands automatically generate the new pattern. Old configurations continue to work but are deprecated.
|
|
89
|
+
|
|
90
|
+
##### 2. Installation Commands
|
|
55
91
|
|
|
56
92
|
The `install` command now handles MCP platform configuration:
|
|
57
93
|
- Simplified syntax without the `mcp` subcommand
|
|
58
94
|
- Clearer platform names (e.g., `claude-code` vs `claude-desktop`)
|
|
59
95
|
- Dry-run support to preview changes
|
|
96
|
+
- Automatic venv Python detection
|
|
60
97
|
|
|
61
98
|
```bash
|
|
62
99
|
# Install with preview
|
|
63
100
|
mcp-ticketer install claude-code --dry-run
|
|
64
101
|
|
|
65
|
-
# Install normally
|
|
102
|
+
# Install normally (automatically uses new pattern)
|
|
66
103
|
mcp-ticketer install claude-code
|
|
67
104
|
```
|
|
68
105
|
|
|
69
|
-
##### 2.
|
|
106
|
+
##### 2. Automatic Python Path Detection
|
|
107
|
+
|
|
108
|
+
The installer now automatically detects the correct Python executable:
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
# Detection priority:
|
|
112
|
+
# 1. Current Python if in pipx venv
|
|
113
|
+
# 2. Python from mcp-ticketer binary shebang
|
|
114
|
+
# 3. Current Python executable (fallback)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Finding your venv Python manually:**
|
|
118
|
+
```bash
|
|
119
|
+
# For pipx installations
|
|
120
|
+
ls ~/.local/pipx/venvs/mcp-ticketer/bin/python
|
|
121
|
+
|
|
122
|
+
# For pip/uv in project venv
|
|
123
|
+
ls .venv/bin/python
|
|
124
|
+
|
|
125
|
+
# The install command detects this automatically
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
##### 3. Removal Commands
|
|
70
129
|
|
|
71
130
|
New commands to remove MCP configurations:
|
|
72
131
|
|
|
@@ -83,7 +142,7 @@ mcp-ticketer uninstall codex
|
|
|
83
142
|
mcp-ticketer remove gemini --dry-run
|
|
84
143
|
```
|
|
85
144
|
|
|
86
|
-
#####
|
|
145
|
+
##### 4. Platform Support
|
|
87
146
|
|
|
88
147
|
**New platforms:**
|
|
89
148
|
- `claude-code` - Project-level Claude Code configuration
|
|
@@ -124,16 +183,39 @@ Review and update any project documentation that references the old commands:
|
|
|
124
183
|
- CI/CD pipelines
|
|
125
184
|
- Developer onboarding docs
|
|
126
185
|
|
|
127
|
-
##### Step 3:
|
|
186
|
+
##### Step 3: Migrate to venv Python Pattern (Recommended)
|
|
128
187
|
|
|
129
|
-
|
|
188
|
+
Update your configurations to use the new venv Python pattern:
|
|
130
189
|
|
|
131
190
|
```bash
|
|
132
|
-
#
|
|
191
|
+
# Option 1: Automatic reinstall (recommended)
|
|
133
192
|
mcp-ticketer remove claude-code
|
|
134
|
-
|
|
135
|
-
# Install with new command
|
|
136
193
|
mcp-ticketer install claude-code
|
|
194
|
+
|
|
195
|
+
# Option 2: Manual update
|
|
196
|
+
# Edit your configuration file directly:
|
|
197
|
+
# Change: "command": "/usr/local/bin/mcp-ticketer"
|
|
198
|
+
# To: "command": "/path/to/venv/bin/python"
|
|
199
|
+
# Change: "args": ["serve"]
|
|
200
|
+
# To: "args": ["-m", "mcp_ticketer.mcp.server", "/project/path"]
|
|
201
|
+
# Add: "PYTHONPATH": "/project/path" to env
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Why migrate?**
|
|
205
|
+
- ✅ More reliable across different installation methods
|
|
206
|
+
- ✅ Better error messages and debugging
|
|
207
|
+
- ✅ Future-proof pattern matching industry standards
|
|
208
|
+
- ✅ No RuntimeWarning about lazy imports
|
|
209
|
+
|
|
210
|
+
**Verification:**
|
|
211
|
+
```bash
|
|
212
|
+
# Test the new configuration
|
|
213
|
+
# For Claude Code/Desktop: Try creating a ticket in the AI client
|
|
214
|
+
# The new pattern should work seamlessly
|
|
215
|
+
|
|
216
|
+
# Check Python path manually
|
|
217
|
+
which python
|
|
218
|
+
# Should show your venv Python if installed with pipx/pip
|
|
137
219
|
```
|
|
138
220
|
|
|
139
221
|
##### Step 4: Test Integrations
|
|
@@ -453,6 +453,39 @@ mcp-ticketer serve
|
|
|
453
453
|
# Press Ctrl+C to stop
|
|
454
454
|
```
|
|
455
455
|
|
|
456
|
+
**Manual Configuration Pattern:**
|
|
457
|
+
|
|
458
|
+
All AI clients use the same reliable venv Python + module invocation pattern:
|
|
459
|
+
|
|
460
|
+
```json
|
|
461
|
+
{
|
|
462
|
+
"command": "/path/to/venv/bin/python",
|
|
463
|
+
"args": ["-m", "mcp_ticketer.mcp.server", "/absolute/path/to/project"],
|
|
464
|
+
"env": {
|
|
465
|
+
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
466
|
+
"PYTHONPATH": "/absolute/path/to/project"
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
**Key Points:**
|
|
472
|
+
- **command**: Path to Python in your mcp-ticketer venv (auto-detected by install commands)
|
|
473
|
+
- **args**: Module invocation pattern `["-m", "mcp_ticketer.mcp.server", "<project_path>"]`
|
|
474
|
+
- **PYTHONPATH**: Set to project root for proper module resolution
|
|
475
|
+
- **Benefits**: More reliable than binary paths, works across all installation methods
|
|
476
|
+
|
|
477
|
+
**Finding your venv Python:**
|
|
478
|
+
```bash
|
|
479
|
+
# For pipx installations
|
|
480
|
+
ls ~/.local/pipx/venvs/mcp-ticketer/bin/python
|
|
481
|
+
|
|
482
|
+
# For pip installations in venv
|
|
483
|
+
ls .venv/bin/python
|
|
484
|
+
|
|
485
|
+
# For uv installations
|
|
486
|
+
ls .venv/bin/python
|
|
487
|
+
```
|
|
488
|
+
|
|
456
489
|
**See [AI Client Integration Guide](docs/AI_CLIENT_INTEGRATION.md) for detailed configuration.**
|
|
457
490
|
|
|
458
491
|
---
|
|
@@ -10,7 +10,8 @@ from typing import Any
|
|
|
10
10
|
|
|
11
11
|
from rich.console import Console
|
|
12
12
|
|
|
13
|
-
from .mcp_configure import
|
|
13
|
+
from .mcp_configure import load_project_config
|
|
14
|
+
from .python_detection import get_mcp_ticketer_python
|
|
14
15
|
|
|
15
16
|
console = Console()
|
|
16
17
|
|
|
@@ -71,13 +72,14 @@ def save_auggie_config(config_path: Path, config: dict[str, Any]) -> None:
|
|
|
71
72
|
|
|
72
73
|
|
|
73
74
|
def create_auggie_server_config(
|
|
74
|
-
|
|
75
|
+
python_path: str, project_config: dict[str, Any], project_path: str | None = None
|
|
75
76
|
) -> dict[str, Any]:
|
|
76
77
|
"""Create Auggie MCP server configuration for mcp-ticketer.
|
|
77
78
|
|
|
78
79
|
Args:
|
|
79
|
-
|
|
80
|
+
python_path: Path to Python executable in mcp-ticketer venv
|
|
80
81
|
project_config: Project configuration from .mcp-ticketer/config.json
|
|
82
|
+
project_path: Project directory path (optional)
|
|
81
83
|
|
|
82
84
|
Returns:
|
|
83
85
|
Auggie MCP server configuration dict
|
|
@@ -91,6 +93,10 @@ def create_auggie_server_config(
|
|
|
91
93
|
# Build environment variables
|
|
92
94
|
env_vars = {}
|
|
93
95
|
|
|
96
|
+
# Add PYTHONPATH for project context
|
|
97
|
+
if project_path:
|
|
98
|
+
env_vars["PYTHONPATH"] = project_path
|
|
99
|
+
|
|
94
100
|
# Add adapter type
|
|
95
101
|
env_vars["MCP_TICKETER_ADAPTER"] = adapter
|
|
96
102
|
|
|
@@ -128,10 +134,15 @@ def create_auggie_server_config(
|
|
|
128
134
|
if "project_key" in adapter_config:
|
|
129
135
|
env_vars["JIRA_PROJECT_KEY"] = adapter_config["project_key"]
|
|
130
136
|
|
|
137
|
+
# Use module invocation pattern: python -m mcp_ticketer.mcp.server
|
|
138
|
+
args = ["-m", "mcp_ticketer.mcp.server"]
|
|
139
|
+
if project_path:
|
|
140
|
+
args.append(project_path)
|
|
141
|
+
|
|
131
142
|
# Create server configuration (simpler than Gemini - no timeout/trust)
|
|
132
143
|
config = {
|
|
133
|
-
"command":
|
|
134
|
-
"args":
|
|
144
|
+
"command": python_path,
|
|
145
|
+
"args": args,
|
|
135
146
|
"env": env_vars,
|
|
136
147
|
}
|
|
137
148
|
|
|
@@ -214,18 +225,22 @@ def configure_auggie_mcp(force: bool = False) -> None:
|
|
|
214
225
|
force: Overwrite existing configuration
|
|
215
226
|
|
|
216
227
|
Raises:
|
|
217
|
-
FileNotFoundError: If
|
|
228
|
+
FileNotFoundError: If Python executable or project config not found
|
|
218
229
|
ValueError: If configuration is invalid
|
|
219
230
|
|
|
220
231
|
"""
|
|
221
|
-
# Step 1: Find
|
|
222
|
-
console.print("[cyan]🔍 Finding mcp-ticketer
|
|
232
|
+
# Step 1: Find Python executable
|
|
233
|
+
console.print("[cyan]🔍 Finding mcp-ticketer Python executable...[/cyan]")
|
|
223
234
|
try:
|
|
224
|
-
|
|
225
|
-
console.print(f"[green]✓[/green] Found: {
|
|
226
|
-
except
|
|
227
|
-
console.print(f"[red]✗[/red] {e}")
|
|
228
|
-
raise
|
|
235
|
+
python_path = get_mcp_ticketer_python()
|
|
236
|
+
console.print(f"[green]✓[/green] Found: {python_path}")
|
|
237
|
+
except Exception as e:
|
|
238
|
+
console.print(f"[red]✗[/red] Could not find Python executable: {e}")
|
|
239
|
+
raise FileNotFoundError(
|
|
240
|
+
"Could not find mcp-ticketer Python executable. "
|
|
241
|
+
"Please ensure mcp-ticketer is installed.\n"
|
|
242
|
+
"Install with: pip install mcp-ticketer or pipx install mcp-ticketer"
|
|
243
|
+
)
|
|
229
244
|
|
|
230
245
|
# Step 2: Load project configuration
|
|
231
246
|
console.print("\n[cyan]📖 Reading project configuration...[/cyan]")
|
|
@@ -259,8 +274,11 @@ def configure_auggie_mcp(force: bool = False) -> None:
|
|
|
259
274
|
console.print("[yellow]⚠ Overwriting existing configuration[/yellow]")
|
|
260
275
|
|
|
261
276
|
# Step 6: Create mcp-ticketer server config
|
|
277
|
+
project_path = str(Path.cwd())
|
|
262
278
|
server_config = create_auggie_server_config(
|
|
263
|
-
|
|
279
|
+
python_path=python_path,
|
|
280
|
+
project_config=project_config,
|
|
281
|
+
project_path=project_path,
|
|
264
282
|
)
|
|
265
283
|
|
|
266
284
|
# Step 7: Update Auggie configuration
|
|
@@ -279,8 +297,10 @@ def configure_auggie_mcp(force: bool = False) -> None:
|
|
|
279
297
|
console.print("\n[bold]Configuration Details:[/bold]")
|
|
280
298
|
console.print(" Server name: mcp-ticketer")
|
|
281
299
|
console.print(f" Adapter: {adapter}")
|
|
282
|
-
console.print(f"
|
|
300
|
+
console.print(f" Python: {python_path}")
|
|
301
|
+
console.print(" Command: python -m mcp_ticketer.mcp.server")
|
|
283
302
|
console.print(" Scope: Global (affects all projects)")
|
|
303
|
+
console.print(f" Project path: {project_path}")
|
|
284
304
|
if "env" in server_config:
|
|
285
305
|
console.print(
|
|
286
306
|
f" Environment variables: {list(server_config['env'].keys())}"
|