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.

Files changed (287) hide show
  1. {mcp_ticketer-0.4.4/src/mcp_ticketer.egg-info → mcp_ticketer-0.4.5}/PKG-INFO +13 -4
  2. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/README.md +12 -3
  3. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/AI_CLIENT_INTEGRATION.md +63 -21
  4. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/MIGRATION_GUIDE.md +91 -9
  5. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/QUICK_START.md +33 -0
  6. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/pyproject.toml +1 -1
  7. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/__version__.py +1 -1
  8. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/auggie_configure.py +35 -15
  9. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/codex_configure.py +38 -31
  10. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/gemini_configure.py +38 -25
  11. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/mcp_configure.py +115 -78
  12. mcp_ticketer-0.4.5/src/mcp_ticketer/cli/python_detection.py +126 -0
  13. mcp_ticketer-0.4.5/src/mcp_ticketer/mcp/__init__.py +33 -0
  14. mcp_ticketer-0.4.5/src/mcp_ticketer/mcp/__main__.py +60 -0
  15. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/__init__.py +3 -1
  16. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/manager.py +10 -46
  17. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/ticket_registry.py +5 -5
  18. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5/src/mcp_ticketer.egg-info}/PKG-INFO +13 -4
  19. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/SOURCES.txt +3 -0
  20. mcp_ticketer-0.4.5/tests/cli/test_python_detection.py +147 -0
  21. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_actual_worker_execution.py +3 -0
  22. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_unified_env_loading.py +3 -0
  23. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_all_adapters.py +5 -0
  24. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_codex_config.py +2 -9
  25. mcp_ticketer-0.4.4/src/mcp_ticketer/mcp/__init__.py +0 -5
  26. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042175430.json +0 -0
  27. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042175768.json +0 -0
  28. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042175888.json +0 -0
  29. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042175987.json +0 -0
  30. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042176075.json +0 -0
  31. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/comments/comment-20251024141042176163.json +0 -0
  32. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/tickets/task-20251024141042175062.json +0 -0
  33. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.aitrackdown-test/tickets/task-20251024141042175285.json +0 -0
  34. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.claude.json +0 -0
  35. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.coveragerc +0 -0
  36. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.cursor/mcp.json +0 -0
  37. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.env.example +0 -0
  38. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.github/workflows/docs.yml +0 -0
  39. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.github/workflows/publish.yml +0 -0
  40. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.github/workflows/test.yml +0 -0
  41. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.mcp/config.json +0 -0
  42. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.pre-commit-config.yaml +0 -0
  43. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.python-version +0 -0
  44. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/.readthedocs.yaml +0 -0
  45. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/CHANGELOG.md +0 -0
  46. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/CLAUDE.md +0 -0
  47. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/CLI_RESTRUCTURE_REPORT.md +0 -0
  48. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/CLI_RESTRUCTURE_TEST_REPORT.md +0 -0
  49. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/LICENSE +0 -0
  50. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/MANIFEST.in +0 -0
  51. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/Makefile +0 -0
  52. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/PATH_TRAVERSAL_SECURITY_TEST_REPORT.md +0 -0
  53. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/SECURITY_RESCAN_REPORT.md +0 -0
  54. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/VERIFICATION_v0.4.3.md +0 -0
  55. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/debug_epic_creation.py +0 -0
  56. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/debug_full_flow.py +0 -0
  57. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/debug_worker_epic.py +0 -0
  58. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/ADAPTERS.md +0 -0
  59. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/API_REFERENCE.md +0 -0
  60. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/ATTACHMENTS.md +0 -0
  61. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/CONFIGURATION.md +0 -0
  62. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
  63. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/DEVELOPER_GUIDE.md +0 -0
  64. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/ENV_DISCOVERY.md +0 -0
  65. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/MCP_INTEGRATION.md +0 -0
  66. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/PROJECT_CONFIG.md +0 -0
  67. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/PR_INTEGRATION.md +0 -0
  68. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/QUEUE_SYSTEM.md +0 -0
  69. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/QUICK_START_ENV.md +0 -0
  70. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/README.md +0 -0
  71. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/USER_GUIDE.md +0 -0
  72. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/VERSIONING_AND_BUILD_TRACKING.md +0 -0
  73. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_archive/README.md +0 -0
  74. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
  75. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
  76. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
  77. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
  78. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
  79. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
  80. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
  81. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/adapters/github.md.txt +0 -0
  82. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/adapters.rst.txt +0 -0
  83. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/api.rst.txt +0 -0
  84. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/cli.rst.txt +0 -0
  85. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/development.rst.txt +0 -0
  86. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/examples.rst.txt +0 -0
  87. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/index.rst.txt +0 -0
  88. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/installation.rst.txt +0 -0
  89. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
  90. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/adapters/github.md +0 -0
  91. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/adapters.rst +0 -0
  92. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/api.rst +0 -0
  93. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/changelogs/CHANGELOG_v0.2.0.md +0 -0
  94. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/changelogs/CHANGELOG_v0.3.0.md +0 -0
  95. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/changelogs/CHANGELOG_v0.3.1.md +0 -0
  96. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/cli.rst +0 -0
  97. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/conf.py +0 -0
  98. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development/CODE_STRUCTURE.md +0 -0
  99. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development/CONTRIBUTING.md +0 -0
  100. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development/RELEASE.md +0 -0
  101. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development/RELEASING.md +0 -0
  102. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/development.rst +0 -0
  103. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/examples.rst +0 -0
  104. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/guides/BULLETPROOF_TICKET_CREATION_GUIDE.md +0 -0
  105. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/index.rst +0 -0
  106. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/installation.rst +0 -0
  107. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/prd/mcp-ticketer-prd.md +0 -0
  108. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_GUIDE_v0.2.0.md +0 -0
  109. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.2.0.md +0 -0
  110. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.3.0.md +0 -0
  111. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.3.1.md +0 -0
  112. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.3.4.md +0 -0
  113. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/PUBLICATION_SUCCESS_v0.3.5.md +0 -0
  114. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/RELEASE_v0.1.39_SUMMARY.md +0 -0
  115. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/releases/RELEASE_v0.2.0_SUMMARY.md +0 -0
  116. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/CONFIG_RESOLUTION_FIX.md +0 -0
  117. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/CREDENTIAL_VALIDATION_FIX.md +0 -0
  118. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/DIAGNOSTICS_FEATURE.md +0 -0
  119. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/ENV_DISCOVERY_COMPLETE.md +0 -0
  120. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/FIX_SUMMARY.md +0 -0
  121. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
  122. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/IMPLEMENTATION_SUMMARY.md +0 -0
  123. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/MCP_CONFIGURATION_TEST_REPORT.md +0 -0
  124. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/OPTIMIZATION_SUMMARY.md +0 -0
  125. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
  126. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/TEST_COVERAGE_REPORT.md +0 -0
  127. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/TEST_REPORT.md +0 -0
  128. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/TEST_RESULTS_SUMMARY.md +0 -0
  129. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/reports/VERIFICATION_RESULTS.md +0 -0
  130. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/requirements.txt +0 -0
  131. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/setup/CLAUDE_DESKTOP_SETUP.md +0 -0
  132. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/setup/CODEX_INTEGRATION.md +0 -0
  133. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/setup/JIRA_SETUP.md +0 -0
  134. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/setup/LINEAR_SETUP.md +0 -0
  135. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/AUTO_DISCOVERY_BUG_FIX_SUMMARY.md +0 -0
  136. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/BULLETPROOF_IMPROVEMENTS_SUMMARY.md +0 -0
  137. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/COMMAND_SYNONYMS_SUMMARY.md +0 -0
  138. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/COMPREHENSIVE_TESTING_SUMMARY.md +0 -0
  139. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/INTERACTIVE_CLI_SETUP_SUMMARY.md +0 -0
  140. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/LINEAR_ADAPTER_INITIALIZATION_BUG_FIX.md +0 -0
  141. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/MODULE_REFACTORING_ANALYSIS.md +0 -0
  142. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/MODULE_REFACTORING_SUMMARY.md +0 -0
  143. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/PROJECT_CLEANUP_SUMMARY.md +0 -0
  144. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/docs/summaries/REFACTORED_ENV_SOLUTION_SUMMARY.md +0 -0
  145. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/mcp-ticketer +0 -0
  146. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/mcp-ticketer-server +0 -0
  147. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/pytest.ini +0 -0
  148. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/requirements-dev.txt +0 -0
  149. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/requirements.txt +0 -0
  150. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/README.md +0 -0
  151. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/install.sh +0 -0
  152. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/manage_version.py +0 -0
  153. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/mcp_server.sh +0 -0
  154. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/scripts/test_set_command.sh +0 -0
  155. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/setup.cfg +0 -0
  156. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/setup.py +0 -0
  157. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/__init__.py +0 -0
  158. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/__init__.py +0 -0
  159. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
  160. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/github.py +0 -0
  161. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/hybrid.py +0 -0
  162. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/jira.py +0 -0
  163. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/__init__.py +0 -0
  164. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/adapter.py +0 -0
  165. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/client.py +0 -0
  166. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/mappers.py +0 -0
  167. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/queries.py +0 -0
  168. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear/types.py +0 -0
  169. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/adapters/linear.py +0 -0
  170. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cache/__init__.py +0 -0
  171. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cache/memory.py +0 -0
  172. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/__init__.py +0 -0
  173. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/adapter_diagnostics.py +0 -0
  174. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/configure.py +0 -0
  175. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/diagnostics.py +0 -0
  176. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/discover.py +0 -0
  177. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/linear_commands.py +0 -0
  178. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/main.py +0 -0
  179. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/migrate_config.py +0 -0
  180. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/platform_commands.py +0 -0
  181. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/queue_commands.py +0 -0
  182. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/simple_health.py +0 -0
  183. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/ticket_commands.py +0 -0
  184. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/cli/utils.py +0 -0
  185. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/__init__.py +0 -0
  186. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/adapter.py +0 -0
  187. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/config.py +0 -0
  188. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/env_discovery.py +0 -0
  189. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/env_loader.py +0 -0
  190. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/exceptions.py +0 -0
  191. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/http_client.py +0 -0
  192. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/mappers.py +0 -0
  193. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/models.py +0 -0
  194. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/project_config.py +0 -0
  195. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/core/registry.py +0 -0
  196. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/constants.py +0 -0
  197. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/dto.py +0 -0
  198. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/response_builder.py +0 -0
  199. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/server.py +0 -0
  200. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/server_sdk.py +0 -0
  201. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/__init__.py +0 -0
  202. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/attachment_tools.py +0 -0
  203. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/bulk_tools.py +0 -0
  204. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/comment_tools.py +0 -0
  205. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/hierarchy_tools.py +0 -0
  206. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/pr_tools.py +0 -0
  207. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/search_tools.py +0 -0
  208. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/mcp/tools/ticket_tools.py +0 -0
  209. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/py.typed +0 -0
  210. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/__main__.py +0 -0
  211. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/health_monitor.py +0 -0
  212. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/queue.py +0 -0
  213. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/run_worker.py +0 -0
  214. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer/queue/worker.py +0 -0
  215. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
  216. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
  217. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
  218. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/requires.txt +0 -0
  219. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
  220. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/test-tickets/tickets/task-20250924002724.json +0 -0
  221. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/test_linear_fixes.py +0 -0
  222. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/test_worker_persistence.py +0 -0
  223. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/README.md +0 -0
  224. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/__init__.py +0 -0
  225. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/__init__.py +0 -0
  226. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_adapter.py +0 -0
  227. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_client.py +0 -0
  228. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_mappers.py +0 -0
  229. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_queries.py +0 -0
  230. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/linear/test_types.py +0 -0
  231. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_aitrackdown.py +0 -0
  232. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_aitrackdown_security.py +0 -0
  233. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_github.py +0 -0
  234. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_github_token.py +0 -0
  235. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_jira.py +0 -0
  236. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_jira_direct.py +0 -0
  237. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_jira_projects.py +0 -0
  238. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_linear.py +0 -0
  239. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_linear_config.py +0 -0
  240. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/adapters/test_linear_native.py +0 -0
  241. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/conftest.py +0 -0
  242. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/debug_credential_validation.py +0 -0
  243. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_config_resolution.py +0 -0
  244. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_env_discovery.py +0 -0
  245. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_environment_handoff.py +0 -0
  246. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_queue_processing.py +0 -0
  247. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/core/test_queue_system.py +0 -0
  248. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_adapter_cache.py +0 -0
  249. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_cli_config.py +0 -0
  250. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_cli_vs_simulation.py +0 -0
  251. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_linear_teams.py +0 -0
  252. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_search.py +0 -0
  253. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_test.py +0 -0
  254. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_worker_adapter.py +0 -0
  255. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_worker_simulation.py +0 -0
  256. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/debug/debug_worker_subprocess.py +0 -0
  257. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_comments_and_attachments.py +0 -0
  258. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_complete_ticket_workflow.py +0 -0
  259. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_complete_workflow.py +0 -0
  260. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_hierarchy_validation.py +0 -0
  261. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/e2e/test_state_transitions.py +0 -0
  262. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_aitrackdown_commenting.py +0 -0
  263. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_commenting_functionality.py +0 -0
  264. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_comprehensive.py +0 -0
  265. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_hierarchy_and_workflow.py +0 -0
  266. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_jira_github_adapters.py +0 -0
  267. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_mcp_server_qa.py +0 -0
  268. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_pr_functionality.py +0 -0
  269. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_serve_config.py +0 -0
  270. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/integration/test_user_assignment.py +0 -0
  271. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/performance/test_optimizations.py +0 -0
  272. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/performance/test_performance.py +0 -0
  273. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/run_comprehensive_tests.py +0 -0
  274. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_api_usage.py +0 -0
  275. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_base_adapter.py +0 -0
  276. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_basic.py +0 -0
  277. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_comprehensive_qa.py +0 -0
  278. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_error_handling.py +0 -0
  279. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_linear_teams.py +0 -0
  280. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_models.py +0 -0
  281. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/test_queue.py +0 -0
  282. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/__init__.py +0 -0
  283. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/test_cache_memory.py +0 -0
  284. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/test_core_exceptions.py +0 -0
  285. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/test_core_models.py +0 -0
  286. {mcp_ticketer-0.4.4 → mcp_ticketer-0.4.5}/tests/unit/test_core_registry.py +0 -0
  287. {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.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/mcp-ticketer",
286
- "args": ["serve"],
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/mcp-ticketer",
201
- "args": ["serve"],
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": "/usr/local/bin/mcp-ticketer",
168
- "args": ["serve"],
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/mcp-ticketer",
197
- "args": ["serve"],
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/mcp-ticketer",
216
- "args": ["serve"],
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/mcp-ticketer",
224
- "args": ["serve"],
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": "/usr/local/bin/mcp-ticketer",
304
- "args": ["serve"],
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/src",
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 = "/usr/local/bin/mcp-ticketer"
428
- args = ["serve"]
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/src"
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": "/usr/local/bin/mcp-ticketer",
529
- "args": ["serve"],
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. Installation Commands
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. Removal Commands
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
- ##### 3. Platform Support
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: Reinstall Configurations (Optional)
186
+ ##### Step 3: Migrate to venv Python Pattern (Recommended)
128
187
 
129
- While old configurations continue to work, you may want to reinstall using the new commands:
188
+ Update your configurations to use the new venv Python pattern:
130
189
 
131
190
  ```bash
132
- # Remove old configuration
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
  ---
@@ -152,7 +152,7 @@ extend-exclude = '''
152
152
  '''
153
153
 
154
154
  [tool.ruff]
155
- target-version = "py311"
155
+ target-version = "0.4.5"
156
156
  line-length = 88
157
157
 
158
158
  [tool.ruff.lint]
@@ -1,6 +1,6 @@
1
1
  """Version information for mcp-ticketer package."""
2
2
 
3
- __version__ = "0.4.4"
3
+ __version__ = "0.4.5"
4
4
  __version_info__ = tuple(int(part) for part in __version__.split("."))
5
5
 
6
6
  # Package metadata
@@ -10,7 +10,8 @@ from typing import Any
10
10
 
11
11
  from rich.console import Console
12
12
 
13
- from .mcp_configure import find_mcp_ticketer_binary, load_project_config
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
- binary_path: str, project_config: dict[str, Any]
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
- binary_path: Path to mcp-ticketer binary
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": binary_path,
134
- "args": ["serve"],
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 binary or project config not found
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 mcp-ticketer binary
222
- console.print("[cyan]🔍 Finding mcp-ticketer binary...[/cyan]")
232
+ # Step 1: Find Python executable
233
+ console.print("[cyan]🔍 Finding mcp-ticketer Python executable...[/cyan]")
223
234
  try:
224
- binary_path = find_mcp_ticketer_binary()
225
- console.print(f"[green]✓[/green] Found: {binary_path}")
226
- except FileNotFoundError as e:
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
- binary_path=binary_path, project_config=project_config
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" Binary: {binary_path}")
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())}"