mcp-ticketer 0.4.10__tar.gz → 0.4.11__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.10 → mcp_ticketer-0.4.11}/CHANGELOG.md +22 -0
- {mcp_ticketer-0.4.10/src/mcp_ticketer.egg-info → mcp_ticketer-0.4.11}/PKG-INFO +1 -1
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/pyproject.toml +1 -1
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/__version__.py +1 -1
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/auggie_configure.py +5 -7
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/codex_configure.py +5 -7
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/gemini_configure.py +5 -7
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/mcp_configure.py +4 -8
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11/src/mcp_ticketer.egg-info}/PKG-INFO +1 -1
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer.egg-info/SOURCES.txt +0 -1
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/e2e/test_mcp_jsonrpc.py +2 -2
- mcp_ticketer-0.4.10/test_mcp_configure_fix.py +0 -153
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/comments/comment-20251024141042175430.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/comments/comment-20251024141042175768.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/comments/comment-20251024141042175888.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/comments/comment-20251024141042175987.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/comments/comment-20251024141042176075.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/comments/comment-20251024141042176163.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/tickets/task-20251024141042175062.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/tickets/task-20251024141042175285.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.claude.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.coveragerc +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.cursor/mcp.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.env.example +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.github/workflows/docs.yml +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.github/workflows/publish.yml +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.github/workflows/test.yml +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.mcp/config.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.pre-commit-config.yaml +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.python-version +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.readthedocs.yaml +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/CLAUDE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/CLI_RESTRUCTURE_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/CLI_RESTRUCTURE_TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/FIXES_v0.4.10.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/LICENSE +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/MANIFEST.in +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/MCP_CONFIGURE_FIX.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/Makefile +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/PATH_TRAVERSAL_SECURITY_TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/QUALITY_GATE_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/README.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/SECURITY_RESCAN_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/TEST_RESULTS.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/VERIFICATION_COMPLETE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/VERIFICATION_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/VERIFICATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/VERIFICATION_v0.4.3.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/debug_epic_creation.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/debug_full_flow.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/debug_worker_epic.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/ADAPTERS.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/AI_CLIENT_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/API_REFERENCE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/ATTACHMENTS.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/CONFIGURATION.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/DEVELOPER_GUIDE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/ENV_DISCOVERY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/MCP_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/MIGRATION_GUIDE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/PROJECT_CONFIG.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/PR_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/QUEUE_SYSTEM.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/QUICK_START.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/QUICK_START_ENV.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/README.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/USER_GUIDE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/VERSIONING_AND_BUILD_TRACKING.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_archive/README.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/adapters/github.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/adapters.rst.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/api.rst.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/cli.rst.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/development.rst.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/examples.rst.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/index.rst.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/installation.rst.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/adapters/github.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/adapters.rst +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/api.rst +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/changelogs/CHANGELOG_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/changelogs/CHANGELOG_v0.3.0.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/changelogs/CHANGELOG_v0.3.1.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/cli.rst +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/conf.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/development/CODE_STRUCTURE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/development/CONTRIBUTING.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/development/RELEASE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/development/RELEASING.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/development.rst +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/examples.rst +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/guides/BULLETPROOF_TICKET_CREATION_GUIDE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/index.rst +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/installation.rst +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/prd/mcp-ticketer-prd.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/releases/PUBLICATION_GUIDE_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/releases/PUBLICATION_SUCCESS_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/releases/PUBLICATION_SUCCESS_v0.3.0.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/releases/PUBLICATION_SUCCESS_v0.3.1.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/releases/PUBLICATION_SUCCESS_v0.3.4.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/releases/PUBLICATION_SUCCESS_v0.3.5.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/releases/RELEASE_v0.1.39_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/releases/RELEASE_v0.2.0_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/CONFIG_RESOLUTION_FIX.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/CREDENTIAL_VALIDATION_FIX.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/DIAGNOSTICS_FEATURE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/ENV_DISCOVERY_COMPLETE.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/MCP_CONFIGURATION_TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/OPTIMIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/TEST_COVERAGE_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/TEST_RESULTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/reports/VERIFICATION_RESULTS.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/requirements.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/setup/CLAUDE_DESKTOP_SETUP.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/setup/CODEX_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/setup/JIRA_SETUP.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/setup/LINEAR_SETUP.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/AUTO_DISCOVERY_BUG_FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/BULLETPROOF_IMPROVEMENTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/COMMAND_SYNONYMS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/COMPREHENSIVE_TESTING_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/INTERACTIVE_CLI_SETUP_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/LINEAR_ADAPTER_INITIALIZATION_BUG_FIX.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/MODULE_REFACTORING_ANALYSIS.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/MODULE_REFACTORING_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/PROJECT_CLEANUP_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/summaries/REFACTORED_ENV_SOLUTION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/mcp-ticketer +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/mcp-ticketer-server +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/pytest.ini +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/requirements-dev.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/requirements.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/scripts/README.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/scripts/install.sh +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/scripts/manage_version.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/scripts/mcp_server.sh +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/scripts/test_set_command.sh +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/setup.cfg +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/setup.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/github.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/hybrid.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/jira.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/linear/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/linear/adapter.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/linear/client.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/linear/mappers.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/linear/queries.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/linear/types.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/adapters/linear.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cache/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cache/memory.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/adapter_diagnostics.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/configure.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/diagnostics.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/discover.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/linear_commands.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/main.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/migrate_config.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/platform_commands.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/python_detection.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/queue_commands.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/simple_health.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/ticket_commands.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/cli/utils.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/adapter.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/config.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/env_discovery.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/env_loader.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/exceptions.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/http_client.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/mappers.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/models.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/project_config.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/core/registry.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/__main__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/__main__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/constants.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/dto.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/main.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/response_builder.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/server_sdk.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/tools/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/tools/attachment_tools.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/tools/bulk_tools.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/tools/comment_tools.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/tools/hierarchy_tools.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/tools/pr_tools.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/tools/search_tools.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/mcp/server/tools/ticket_tools.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/py.typed +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/queue/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/queue/__main__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/queue/health_monitor.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/queue/manager.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/queue/queue.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/queue/run_worker.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/queue/ticket_registry.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer/queue/worker.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer.egg-info/requires.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/test-tickets/tickets/task-20250924002724.json +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/test_linear_fixes.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/test_mcp_integration.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/test_structure_validation.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/test_worker_persistence.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/README.md +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/linear/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/linear/test_adapter.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/linear/test_adapter_validation.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/linear/test_client.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/linear/test_mappers.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/linear/test_project_resolution.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/linear/test_queries.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/linear/test_types.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_aitrackdown.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_aitrackdown_security.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_github.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_github_token.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_jira.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_jira_direct.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_jira_projects.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_linear.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_linear_config.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/adapters/test_linear_native.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/cli/test_python_detection.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/conftest.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/core/debug_credential_validation.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/core/test_actual_worker_execution.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/core/test_config_resolution.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/core/test_env_discovery.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/core/test_environment_handoff.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/core/test_queue_processing.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/core/test_queue_system.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/core/test_unified_env_loading.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_adapter_cache.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_cli_config.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_cli_vs_simulation.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_linear_teams.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_search.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_test.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_worker_adapter.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_worker_simulation.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/debug/debug_worker_subprocess.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/e2e/test_comments_and_attachments.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/e2e/test_complete_ticket_workflow.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/e2e/test_complete_workflow.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/e2e/test_hierarchy_validation.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/e2e/test_state_transitions.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_aitrackdown_commenting.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_all_adapters.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_commenting_functionality.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_comprehensive.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_hierarchy_and_workflow.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_jira_github_adapters.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_mcp_server_qa.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_pr_functionality.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_serve_config.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/integration/test_user_assignment.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/performance/test_optimizations.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/performance/test_performance.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/run_comprehensive_tests.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_api_usage.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_base_adapter.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_basic.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_codex_config.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_comprehensive_qa.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_error_handling.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_linear_teams.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_models.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/test_queue.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/unit/__init__.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/unit/test_cache_memory.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/unit/test_core_exceptions.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/unit/test_core_models.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tests/unit/test_core_registry.py +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/tox.ini +0 -0
- {mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/verify_fixes.sh +0 -0
|
@@ -4,6 +4,28 @@ All notable changes to MCP Ticketer will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.4.11] - 2025-10-28
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- **CRITICAL: MCP Installer Command Structure**: Fixed all MCP installers to use Python module invocation pattern
|
|
11
|
+
- Changed from: `command: {venv}/bin/mcp-ticketer`, `args: ["mcp", project_path]`
|
|
12
|
+
- Changed to: `command: {venv}/bin/python`, `args: ["-m", "mcp_ticketer.mcp.server", project_path]`
|
|
13
|
+
- Affects: Claude Code, Auggie CLI, Gemini CLI, and Codex CLI installers
|
|
14
|
+
- Impact: Installer now works with any Python environment (pip, pipx, editable installs)
|
|
15
|
+
- Matches established pattern from mcp-vector-search and other MCP servers
|
|
16
|
+
|
|
17
|
+
### Files Modified
|
|
18
|
+
- `src/mcp_ticketer/cli/mcp_configure.py` - Claude Code/Desktop installer
|
|
19
|
+
- `src/mcp_ticketer/cli/auggie_configure.py` - Auggie CLI installer
|
|
20
|
+
- `src/mcp_ticketer/cli/gemini_configure.py` - Gemini CLI installer
|
|
21
|
+
- `src/mcp_ticketer/cli/codex_configure.py` - Codex CLI installer
|
|
22
|
+
|
|
23
|
+
### Technical Details
|
|
24
|
+
- Uses Python executable directly with `-m` module flag
|
|
25
|
+
- No longer depends on `mcp-ticketer` binary existing in target venv
|
|
26
|
+
- Works across all installation methods and Python environments
|
|
27
|
+
- Provides consistent behavior with other MCP ecosystem tools
|
|
28
|
+
|
|
7
29
|
## [0.4.10] - 2025-10-28
|
|
8
30
|
|
|
9
31
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-ticketer
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.11
|
|
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>
|
|
@@ -85,11 +85,9 @@ def create_auggie_server_config(
|
|
|
85
85
|
Auggie MCP server configuration dict
|
|
86
86
|
|
|
87
87
|
"""
|
|
88
|
-
#
|
|
88
|
+
# Use Python module invocation pattern (works regardless of where package is installed)
|
|
89
89
|
from pathlib import Path
|
|
90
90
|
|
|
91
|
-
python_dir = Path(python_path).parent
|
|
92
|
-
mcp_ticketer_cmd = str(python_dir / "mcp-ticketer")
|
|
93
91
|
# Get adapter configuration
|
|
94
92
|
adapter = project_config.get("default_adapter", "aitrackdown")
|
|
95
93
|
adapters_config = project_config.get("adapters", {})
|
|
@@ -139,14 +137,14 @@ def create_auggie_server_config(
|
|
|
139
137
|
if "project_key" in adapter_config:
|
|
140
138
|
env_vars["JIRA_PROJECT_KEY"] = adapter_config["project_key"]
|
|
141
139
|
|
|
142
|
-
# Use
|
|
143
|
-
args = ["mcp"]
|
|
140
|
+
# Use Python module invocation pattern
|
|
141
|
+
args = ["-m", "mcp_ticketer.mcp.server"]
|
|
144
142
|
if project_path:
|
|
145
143
|
args.append(project_path)
|
|
146
144
|
|
|
147
145
|
# Create server configuration (simpler than Gemini - no timeout/trust)
|
|
148
146
|
config = {
|
|
149
|
-
"command":
|
|
147
|
+
"command": python_path,
|
|
150
148
|
"args": args,
|
|
151
149
|
"env": env_vars,
|
|
152
150
|
}
|
|
@@ -303,7 +301,7 @@ def configure_auggie_mcp(force: bool = False) -> None:
|
|
|
303
301
|
console.print(" Server name: mcp-ticketer")
|
|
304
302
|
console.print(f" Adapter: {adapter}")
|
|
305
303
|
console.print(f" Python: {python_path}")
|
|
306
|
-
console.print(" Command:
|
|
304
|
+
console.print(" Command: python -m mcp_ticketer.mcp.server")
|
|
307
305
|
console.print(" Scope: Global (affects all projects)")
|
|
308
306
|
console.print(f" Project path: {project_path}")
|
|
309
307
|
if "env" in server_config:
|
|
@@ -87,9 +87,7 @@ def create_codex_server_config(
|
|
|
87
87
|
Codex MCP server configuration dict
|
|
88
88
|
|
|
89
89
|
"""
|
|
90
|
-
#
|
|
91
|
-
python_dir = Path(python_path).parent
|
|
92
|
-
mcp_ticketer_cmd = str(python_dir / "mcp-ticketer")
|
|
90
|
+
# Use Python module invocation pattern (works regardless of where package is installed)
|
|
93
91
|
|
|
94
92
|
# Get adapter configuration
|
|
95
93
|
adapter = project_config.get("default_adapter", "aitrackdown")
|
|
@@ -140,14 +138,14 @@ def create_codex_server_config(
|
|
|
140
138
|
if "project_key" in adapter_config:
|
|
141
139
|
env_vars["JIRA_PROJECT_KEY"] = adapter_config["project_key"]
|
|
142
140
|
|
|
143
|
-
# Use
|
|
144
|
-
args = ["mcp"]
|
|
141
|
+
# Use Python module invocation pattern
|
|
142
|
+
args = ["-m", "mcp_ticketer.mcp.server"]
|
|
145
143
|
if project_path:
|
|
146
144
|
args.append(project_path)
|
|
147
145
|
|
|
148
146
|
# Create server configuration with Codex-specific structure
|
|
149
147
|
config: dict[str, Any] = {
|
|
150
|
-
"command":
|
|
148
|
+
"command": python_path,
|
|
151
149
|
"args": args,
|
|
152
150
|
"env": env_vars,
|
|
153
151
|
}
|
|
@@ -311,7 +309,7 @@ def configure_codex_mcp(force: bool = False) -> None:
|
|
|
311
309
|
console.print(" Server name: mcp-ticketer")
|
|
312
310
|
console.print(f" Adapter: {adapter}")
|
|
313
311
|
console.print(f" Python: {python_path}")
|
|
314
|
-
console.print(" Command:
|
|
312
|
+
console.print(" Command: python -m mcp_ticketer.mcp.server")
|
|
315
313
|
console.print(" Scope: global (Codex only supports global config)")
|
|
316
314
|
console.print(f" Project path: {project_path}")
|
|
317
315
|
if "env" in server_config:
|
|
@@ -87,9 +87,7 @@ def create_gemini_server_config(
|
|
|
87
87
|
Gemini MCP server configuration dict
|
|
88
88
|
|
|
89
89
|
"""
|
|
90
|
-
#
|
|
91
|
-
python_dir = Path(python_path).parent
|
|
92
|
-
mcp_ticketer_cmd = str(python_dir / "mcp-ticketer")
|
|
90
|
+
# Use Python module invocation pattern (works regardless of where package is installed)
|
|
93
91
|
|
|
94
92
|
# Get adapter configuration
|
|
95
93
|
adapter = project_config.get("default_adapter", "aitrackdown")
|
|
@@ -140,14 +138,14 @@ def create_gemini_server_config(
|
|
|
140
138
|
if "project_key" in adapter_config:
|
|
141
139
|
env_vars["JIRA_PROJECT_KEY"] = adapter_config["project_key"]
|
|
142
140
|
|
|
143
|
-
# Use
|
|
144
|
-
args = ["mcp"]
|
|
141
|
+
# Use Python module invocation pattern
|
|
142
|
+
args = ["-m", "mcp_ticketer.mcp.server"]
|
|
145
143
|
if project_path:
|
|
146
144
|
args.append(project_path)
|
|
147
145
|
|
|
148
146
|
# Create server configuration with Gemini-specific options
|
|
149
147
|
config = {
|
|
150
|
-
"command":
|
|
148
|
+
"command": python_path,
|
|
151
149
|
"args": args,
|
|
152
150
|
"env": env_vars,
|
|
153
151
|
"timeout": 15000, # 15 seconds timeout
|
|
@@ -304,7 +302,7 @@ def configure_gemini_mcp(
|
|
|
304
302
|
console.print(" Server name: mcp-ticketer")
|
|
305
303
|
console.print(f" Adapter: {adapter}")
|
|
306
304
|
console.print(f" Python: {python_path}")
|
|
307
|
-
console.print(" Command:
|
|
305
|
+
console.print(" Command: python -m mcp_ticketer.mcp.server")
|
|
308
306
|
console.print(f" Timeout: {server_config['timeout']}ms")
|
|
309
307
|
console.print(f" Trust: {server_config['trust']}")
|
|
310
308
|
if project_path:
|
|
@@ -177,12 +177,8 @@ def create_mcp_server_config(
|
|
|
177
177
|
MCP server configuration dict matching Claude Code stdio pattern
|
|
178
178
|
|
|
179
179
|
"""
|
|
180
|
-
#
|
|
181
|
-
|
|
182
|
-
mcp_ticketer_cmd = str(python_dir / "mcp-ticketer")
|
|
183
|
-
|
|
184
|
-
# Use CLI command: mcp-ticketer mcp
|
|
185
|
-
args = ["mcp"]
|
|
180
|
+
# Use Python module invocation pattern (works regardless of where package is installed)
|
|
181
|
+
args = ["-m", "mcp_ticketer.mcp.server"]
|
|
186
182
|
|
|
187
183
|
# Add project path if provided
|
|
188
184
|
if project_path:
|
|
@@ -191,7 +187,7 @@ def create_mcp_server_config(
|
|
|
191
187
|
# REQUIRED: Add "type": "stdio" for Claude Code compatibility
|
|
192
188
|
config = {
|
|
193
189
|
"type": "stdio",
|
|
194
|
-
"command":
|
|
190
|
+
"command": python_path,
|
|
195
191
|
"args": args,
|
|
196
192
|
}
|
|
197
193
|
|
|
@@ -497,7 +493,7 @@ def configure_claude_mcp(global_config: bool = False, force: bool = False) -> No
|
|
|
497
493
|
console.print(" Server name: mcp-ticketer")
|
|
498
494
|
console.print(f" Adapter: {adapter}")
|
|
499
495
|
console.print(f" Python: {python_path}")
|
|
500
|
-
console.print(" Command:
|
|
496
|
+
console.print(" Command: python -m mcp_ticketer.mcp.server")
|
|
501
497
|
if absolute_project_path:
|
|
502
498
|
console.print(f" Project path: {absolute_project_path}")
|
|
503
499
|
if "env" in server_config:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-ticketer
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.11
|
|
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>
|
|
@@ -127,7 +127,7 @@ class TestMCPJsonRpcProtocol:
|
|
|
127
127
|
response = json.loads(line_bytes.decode())
|
|
128
128
|
return response
|
|
129
129
|
|
|
130
|
-
except
|
|
130
|
+
except TimeoutError:
|
|
131
131
|
# Include stderr for debugging timeout issues
|
|
132
132
|
stderr_output = ""
|
|
133
133
|
if process.stderr:
|
|
@@ -138,7 +138,7 @@ class TestMCPJsonRpcProtocol:
|
|
|
138
138
|
except Exception:
|
|
139
139
|
pass
|
|
140
140
|
|
|
141
|
-
raise
|
|
141
|
+
raise TimeoutError(
|
|
142
142
|
f"No response received within {timeout}s. "
|
|
143
143
|
f"Stderr: {stderr_output[:500] if stderr_output else '(empty)'}"
|
|
144
144
|
)
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""Test script to verify MCP configuration fixes."""
|
|
3
|
-
|
|
4
|
-
import json
|
|
5
|
-
import tempfile
|
|
6
|
-
from pathlib import Path
|
|
7
|
-
from unittest.mock import patch
|
|
8
|
-
|
|
9
|
-
from src.mcp_ticketer.cli.mcp_configure import (
|
|
10
|
-
configure_claude_mcp,
|
|
11
|
-
find_claude_mcp_config,
|
|
12
|
-
load_claude_mcp_config,
|
|
13
|
-
save_claude_mcp_config,
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def test_find_claude_code_config():
|
|
18
|
-
"""Test that Claude Code config points to ~/.claude.json."""
|
|
19
|
-
config_path = find_claude_mcp_config(global_config=False)
|
|
20
|
-
assert config_path == Path.home() / ".claude.json"
|
|
21
|
-
print("✓ find_claude_mcp_config returns ~/.claude.json for Claude Code")
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def test_load_claude_code_config_structure():
|
|
25
|
-
"""Test that Claude Code config loads with projects structure."""
|
|
26
|
-
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as f:
|
|
27
|
-
test_config = {
|
|
28
|
-
"projects": {
|
|
29
|
-
"/some/project/path": {
|
|
30
|
-
"mcpServers": {"some-server": {"type": "stdio", "command": "cmd"}}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
json.dump(test_config, f)
|
|
35
|
-
f.flush()
|
|
36
|
-
temp_path = Path(f.name)
|
|
37
|
-
|
|
38
|
-
try:
|
|
39
|
-
config = load_claude_mcp_config(temp_path, is_claude_code=True)
|
|
40
|
-
assert "projects" in config
|
|
41
|
-
assert "/some/project/path" in config["projects"]
|
|
42
|
-
print("✓ load_claude_mcp_config handles projects structure correctly")
|
|
43
|
-
finally:
|
|
44
|
-
temp_path.unlink()
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def test_load_claude_code_config_empty():
|
|
48
|
-
"""Test that empty config returns correct structure."""
|
|
49
|
-
config = load_claude_mcp_config(Path("/nonexistent/path"), is_claude_code=True)
|
|
50
|
-
assert config == {"projects": {}}
|
|
51
|
-
print("✓ load_claude_mcp_config returns projects structure for new configs")
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def test_load_claude_desktop_config_empty():
|
|
55
|
-
"""Test that empty Desktop config returns correct structure."""
|
|
56
|
-
config = load_claude_mcp_config(Path("/nonexistent/path"), is_claude_code=False)
|
|
57
|
-
assert config == {"mcpServers": {}}
|
|
58
|
-
print("✓ load_claude_mcp_config returns mcpServers structure for Desktop")
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def test_load_invalid_json():
|
|
62
|
-
"""Test that invalid JSON is handled gracefully."""
|
|
63
|
-
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as f:
|
|
64
|
-
f.write("{invalid json")
|
|
65
|
-
f.flush()
|
|
66
|
-
temp_path = Path(f.name)
|
|
67
|
-
|
|
68
|
-
try:
|
|
69
|
-
config = load_claude_mcp_config(temp_path, is_claude_code=True)
|
|
70
|
-
assert config == {"projects": {}}
|
|
71
|
-
print("✓ load_claude_mcp_config handles invalid JSON gracefully")
|
|
72
|
-
finally:
|
|
73
|
-
temp_path.unlink()
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def test_save_and_load_roundtrip():
|
|
77
|
-
"""Test that save and load work correctly."""
|
|
78
|
-
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as f:
|
|
79
|
-
temp_path = Path(f.name)
|
|
80
|
-
|
|
81
|
-
try:
|
|
82
|
-
test_config = {
|
|
83
|
-
"projects": {
|
|
84
|
-
"/test/project": {
|
|
85
|
-
"mcpServers": {
|
|
86
|
-
"mcp-ticketer": {
|
|
87
|
-
"type": "stdio",
|
|
88
|
-
"command": "/path/to/mcp-ticketer",
|
|
89
|
-
"args": ["mcp", "/test/project"],
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
# Save
|
|
97
|
-
save_claude_mcp_config(temp_path, test_config)
|
|
98
|
-
|
|
99
|
-
# Load
|
|
100
|
-
loaded = load_claude_mcp_config(temp_path, is_claude_code=True)
|
|
101
|
-
|
|
102
|
-
assert loaded == test_config
|
|
103
|
-
assert loaded["projects"]["/test/project"]["mcpServers"]["mcp-ticketer"]["type"] == "stdio"
|
|
104
|
-
print("✓ save_claude_mcp_config and load_claude_mcp_config work correctly")
|
|
105
|
-
finally:
|
|
106
|
-
temp_path.unlink()
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
def test_configure_structure():
|
|
110
|
-
"""Test the structure created by configure_claude_mcp."""
|
|
111
|
-
# This test would need mocking, so just verify the expected structure
|
|
112
|
-
expected_structure = {
|
|
113
|
-
"projects": {
|
|
114
|
-
"/absolute/path/to/project": {
|
|
115
|
-
"mcpServers": {
|
|
116
|
-
"mcp-ticketer": {
|
|
117
|
-
"type": "stdio",
|
|
118
|
-
"command": "/path/to/mcp-ticketer",
|
|
119
|
-
"args": ["mcp", "/absolute/path/to/project"],
|
|
120
|
-
"env": {
|
|
121
|
-
"PYTHONPATH": "/absolute/path/to/project",
|
|
122
|
-
"MCP_TICKETER_ADAPTER": "linear",
|
|
123
|
-
},
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
# Verify structure
|
|
131
|
-
assert "projects" in expected_structure
|
|
132
|
-
project_path = list(expected_structure["projects"].keys())[0]
|
|
133
|
-
assert "mcpServers" in expected_structure["projects"][project_path]
|
|
134
|
-
assert "mcp-ticketer" in expected_structure["projects"][project_path]["mcpServers"]
|
|
135
|
-
|
|
136
|
-
server_config = expected_structure["projects"][project_path]["mcpServers"]["mcp-ticketer"]
|
|
137
|
-
assert server_config["type"] == "stdio"
|
|
138
|
-
assert "mcp" in server_config["args"]
|
|
139
|
-
print("✓ Expected configuration structure is correct")
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if __name__ == "__main__":
|
|
143
|
-
print("\n🧪 Testing MCP Configuration Fixes\n")
|
|
144
|
-
|
|
145
|
-
test_find_claude_code_config()
|
|
146
|
-
test_load_claude_code_config_structure()
|
|
147
|
-
test_load_claude_code_config_empty()
|
|
148
|
-
test_load_claude_desktop_config_empty()
|
|
149
|
-
test_load_invalid_json()
|
|
150
|
-
test_save_and_load_roundtrip()
|
|
151
|
-
test_configure_structure()
|
|
152
|
-
|
|
153
|
-
print("\n✅ All tests passed!\n")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/tickets/task-20251024141042175062.json
RENAMED
|
File without changes
|
{mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/.aitrackdown-test/tickets/task-20251024141042175285.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_ticketer-0.4.10 → mcp_ticketer-0.4.11}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|