mcp-ticketer 0.1.23__tar.gz → 0.1.26__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.1.23 → mcp_ticketer-0.1.26}/CHANGELOG.md +51 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/CLAUDE.md +236 -13
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/CLAUDE_DESKTOP_SETUP.md +2 -2
- mcp_ticketer-0.1.26/CODEX_INTEGRATION.md +312 -0
- mcp_ticketer-0.1.26/MCP_CONFIGURATION_TEST_REPORT.md +761 -0
- {mcp_ticketer-0.1.23/src/mcp_ticketer.egg-info → mcp_ticketer-0.1.26}/PKG-INFO +58 -8
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/QUICK_START.md +128 -29
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/README.md +55 -7
- mcp_ticketer-0.1.26/SECURITY_SCAN_REPORT_v0.1.24.md +668 -0
- mcp_ticketer-0.1.26/docs/AI_CLIENT_INTEGRATION.md +937 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/pyproject.toml +2 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/scripts/manage_version.py +2 -2
- mcp_ticketer-0.1.26/src/mcp_ticketer/__init__.py +27 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/__version__.py +1 -1
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/adapters/jira.py +6 -2
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/adapters/linear.py +4 -2
- mcp_ticketer-0.1.26/src/mcp_ticketer/cli/auggie_configure.py +237 -0
- mcp_ticketer-0.1.26/src/mcp_ticketer/cli/codex_configure.py +257 -0
- mcp_ticketer-0.1.26/src/mcp_ticketer/cli/gemini_configure.py +261 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cli/main.py +135 -2
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cli/migrate_config.py +1 -5
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/project_config.py +4 -1
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/mcp/server.py +3 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26/src/mcp_ticketer.egg-info}/PKG-INFO +58 -8
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer.egg-info/SOURCES.txt +8 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer.egg-info/requires.txt +4 -0
- mcp_ticketer-0.1.26/test_codex_config.py +109 -0
- mcp_ticketer-0.1.23/src/mcp_ticketer/__init__.py +0 -27
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/.dependency_cache +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/.mpm_deployment_state +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/agent-manager.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/agentic-coder-optimizer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/api_qa.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/clerk-ops.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/code_analyzer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/content-agent.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/dart_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/data_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/documentation.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/gcp_ops_agent.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/golang_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/imagemagick.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/java_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/local_ops_agent.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/memory_manager.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/nextjs_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/ops.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/php-engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/product_owner.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/project_organizer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/prompt-engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/python_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/qa.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/react_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/refactoring_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/research.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/ruby-engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/rust_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/security.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/ticketing.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/typescript_engineer.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/vercel_ops_agent.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/version_control.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/web_qa.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/agents/web_ui.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/mcp.json +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude/mcp.local.json +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/config/project.json +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/mcp_auto_config_preference.json +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/README.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/agentic_coder_optimizer_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/documentation_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/engineer_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/ops_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/project_knowledge_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/qa_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/research_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/version-control_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude-mpm/memories/workflows_memories.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.claude.json +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.coveragerc +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.env.example +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.github/workflows/docs.yml +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.github/workflows/publish.yml +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.github/workflows/test.yml +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.mcp/config.json +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.pre-commit-config.yaml +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.python-version +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/.readthedocs.yaml +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/CODE_STRUCTURE.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/CONFIG_RESOLUTION_FIX.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/CONTRIBUTING.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/CREDENTIAL_VALIDATION_FIX.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/ENV_DISCOVERY_COMPLETE.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/JIRA_SETUP.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/LICENSE +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/LINEAR_SETUP.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/MANIFEST.in +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/Makefile +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/OPTIMIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/QUEUE_SYSTEM.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/RELEASE.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/RELEASING.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/TEST_COVERAGE_REPORT.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/TEST_REPORT.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/TEST_RESULTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/VERIFICATION_RESULTS.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/claude-desktop-config.json +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/debug_search.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/debug_test.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/ADAPTERS.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/API_REFERENCE.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/CONFIGURATION.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/DEVELOPER_GUIDE.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/ENV_DISCOVERY.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/MCP_INTEGRATION.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/MIGRATION_GUIDE.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/PROJECT_CONFIG.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/PR_INTEGRATION.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/QUICK_START_ENV.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/USER_GUIDE.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_archive/README.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/adapters/github.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/adapters.rst.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/api.rst.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/cli.rst.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/development.rst.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/examples.rst.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/index.rst.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/installation.rst.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/adapters/github.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/adapters.rst +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/api.rst +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/cli.rst +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/conf.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/development.rst +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/examples.rst +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/index.rst +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/installation.rst +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/prd/mcp-ticketer-prd.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/docs/requirements.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/install.sh +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/mcp-ticketer +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/mcp-ticketer-server +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/mcp_server.sh +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/pytest.ini +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/requirements-dev.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/requirements.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/scripts/README.md +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/setup.cfg +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/setup.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/adapters/__init__.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/adapters/github.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/adapters/hybrid.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cache/__init__.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cache/memory.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cli/__init__.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cli/configure.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cli/discover.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cli/mcp_configure.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cli/queue_commands.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/cli/utils.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/__init__.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/adapter.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/config.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/env_discovery.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/http_client.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/mappers.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/models.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/core/registry.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/mcp/__init__.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/py.typed +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/queue/__init__.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/queue/__main__.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/queue/manager.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/queue/queue.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/queue/run_worker.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer/queue/worker.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test-tickets/tickets/task-20250924002724.json +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_all_adapters.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_api_usage.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_basic.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_comprehensive.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_config_resolution.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_credential_validation.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_error_handling.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_github.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_github_token.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_jira.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_linear.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_linear_native.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_linear_teams.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_mcp_server_qa.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_optimizations.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_performance.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_pr_functionality.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_queue_system.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_serve_config.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/test_set_command.sh +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/tests/adapters/__init__.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/tests/adapters/test_aitrackdown.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/tests/conftest.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/tests/core/test_env_discovery.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/tests/test_base_adapter.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/tests/test_models.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/tests/test_queue.py +0 -0
- {mcp_ticketer-0.1.23 → mcp_ticketer-0.1.26}/tox.ini +0 -0
|
@@ -15,6 +15,57 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
15
15
|
- Analytics dashboard
|
|
16
16
|
- Webhook notification support
|
|
17
17
|
|
|
18
|
+
## [0.1.26] - 2025-10-23
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Maintenance release with build and packaging improvements
|
|
22
|
+
- Updated development dependencies and build process
|
|
23
|
+
|
|
24
|
+
## [0.1.25] - 2025-10-23
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- **Critical MCP Server Fix**: Fixed adapter registration issue where Linear and other adapters were not available in MCP server
|
|
28
|
+
- Added missing import of adapters module in MCP server initialization
|
|
29
|
+
- Resolves "Adapter 'linear' not registered" errors when using MCP clients (Auggie, Claude, etc.)
|
|
30
|
+
- All adapters (aitrackdown, linear, jira, github) now properly registered on server startup
|
|
31
|
+
- **Auggie Integration**: Fixed MCP connection failures with Auggie CLI due to missing adapter registration
|
|
32
|
+
|
|
33
|
+
## [0.1.24] - 2025-10-24
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
- **Multi-Client MCP Support**: Added support for 4 AI clients
|
|
37
|
+
- Claude Code integration with project and global config (`mcp-ticketer mcp claude`)
|
|
38
|
+
- Gemini CLI integration with project/user scope (`mcp-ticketer mcp gemini`)
|
|
39
|
+
- Codex CLI integration with global TOML config (`mcp-ticketer mcp codex`)
|
|
40
|
+
- Auggie CLI integration with global JSON config (`mcp-ticketer mcp auggie`)
|
|
41
|
+
- **Nested Command Structure**: New `mcp` command group with 4 client-specific subcommands
|
|
42
|
+
- **Configuration Modules**: Three new CLI configuration modules
|
|
43
|
+
- `auggie_configure.py` - Auggie CLI configuration handler
|
|
44
|
+
- `codex_configure.py` - Codex CLI TOML configuration handler
|
|
45
|
+
- `gemini_configure.py` - Gemini CLI JSON configuration handler
|
|
46
|
+
- **TOML Support**: Added `tomli` and `tomli-w` dependencies for Codex CLI TOML config
|
|
47
|
+
- **Comprehensive Documentation**:
|
|
48
|
+
- AI Client Integration Guide (docs/AI_CLIENT_INTEGRATION.md, 937 lines)
|
|
49
|
+
- Codex Integration Guide (CODEX_INTEGRATION.md, 312 lines)
|
|
50
|
+
- Updated CLAUDE.md with 800+ lines of multi-client documentation
|
|
51
|
+
- Updated README.md with AI client comparison table
|
|
52
|
+
- Updated QUICK_START.md with client selection decision tree
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
- **Command Structure**: Renamed MCP commands to nested structure under `mcp` parent command
|
|
56
|
+
- `mcp-ticketer mcp` → `mcp-ticketer mcp claude`
|
|
57
|
+
- `mcp-ticketer gemini` → `mcp-ticketer mcp gemini`
|
|
58
|
+
- `mcp-ticketer codex` → `mcp-ticketer mcp codex`
|
|
59
|
+
- `mcp-ticketer auggie` → `mcp-ticketer mcp auggie`
|
|
60
|
+
- **Documentation Version**: Updated CLAUDE.md from 0.1.11 to 0.1.24
|
|
61
|
+
- **Type Hints**: Modernized type hints in JIRA and Linear adapters
|
|
62
|
+
- **gitignore**: Added `.gemini/` directory exclusion
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
- Removed obsolete MCP server startup error documentation
|
|
66
|
+
- Improved configuration file handling for multiple AI clients
|
|
67
|
+
- Enhanced MCP server path detection and validation
|
|
68
|
+
|
|
18
69
|
## [0.1.10] - 2025-09-29
|
|
19
70
|
|
|
20
71
|
### Fixed
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# CLAUDE.md - MCP Ticketer AI Agent Instructions
|
|
2
2
|
|
|
3
|
-
**Version**: 0.1.
|
|
4
|
-
**Last Updated**: 2025-10-
|
|
3
|
+
**Version**: 0.1.24
|
|
4
|
+
**Last Updated**: 2025-10-24
|
|
5
5
|
**Project**: MCP Ticketer - Universal Ticket Management Interface for AI Agents
|
|
6
|
-
**Optimized For**: Claude Code,
|
|
6
|
+
**Optimized For**: Claude Code, Gemini CLI, Codex CLI, Auggie, and AI Agent Collaboration
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -800,9 +800,45 @@ mcp-ticketer --help # Show CLI help
|
|
|
800
800
|
|
|
801
801
|
---
|
|
802
802
|
|
|
803
|
-
## ⚪ OPTIONAL: AI
|
|
803
|
+
## ⚪ OPTIONAL: AI Client Integration
|
|
804
804
|
|
|
805
|
-
###
|
|
805
|
+
### Overview: Multiple AI Client Support
|
|
806
|
+
|
|
807
|
+
**MCP Ticketer supports 4 major AI clients with MCP integration:**
|
|
808
|
+
|
|
809
|
+
| Client | Project-Level | Config Format | Config Location | Command |
|
|
810
|
+
|--------|---------------|---------------|-----------------|---------|
|
|
811
|
+
| **Claude Code** | ✅ Yes | JSON | `.claude/mcp.json` | `mcp-ticketer mcp claude` |
|
|
812
|
+
| **Gemini CLI** | ✅ Yes | JSON | `.gemini/settings.json` | `mcp-ticketer mcp gemini` |
|
|
813
|
+
| **Codex CLI** | ❌ No (Global only) | TOML | `~/.codex/config.toml` | `mcp-ticketer mcp codex` |
|
|
814
|
+
| **Auggie** | ❌ No (Global only) | JSON | `~/.augment/settings.json` | `mcp-ticketer mcp auggie` |
|
|
815
|
+
|
|
816
|
+
**Quick Setup:**
|
|
817
|
+
```bash
|
|
818
|
+
# Claude Code (project-level, recommended)
|
|
819
|
+
mcp-ticketer mcp claude
|
|
820
|
+
|
|
821
|
+
# Gemini CLI (project-level)
|
|
822
|
+
mcp-ticketer mcp gemini --scope project
|
|
823
|
+
|
|
824
|
+
# Codex CLI (global-only, restart required)
|
|
825
|
+
mcp-ticketer mcp codex
|
|
826
|
+
|
|
827
|
+
# Auggie (global-only)
|
|
828
|
+
mcp-ticketer mcp auggie
|
|
829
|
+
```
|
|
830
|
+
|
|
831
|
+
**When to use which client:**
|
|
832
|
+
- **Claude Code**: Best for project-specific workflows, native MCP support
|
|
833
|
+
- **Gemini CLI**: Google's AI client, supports project-level configuration
|
|
834
|
+
- **Codex CLI**: Global configuration only, requires restart after config changes
|
|
835
|
+
- **Auggie**: Simple global setup, suitable for single-project users
|
|
836
|
+
|
|
837
|
+
**See Also:** [AI Client Integration Guide](docs/AI_CLIENT_INTEGRATION.md) for comprehensive setup instructions.
|
|
838
|
+
|
|
839
|
+
---
|
|
840
|
+
|
|
841
|
+
### Claude Code Integration (Recommended)
|
|
806
842
|
|
|
807
843
|
**MCP Ticketer is optimized for Claude Code workflows:**
|
|
808
844
|
|
|
@@ -811,13 +847,31 @@ mcp-ticketer --help # Show CLI help
|
|
|
811
847
|
make install-dev
|
|
812
848
|
make init-aitrackdown
|
|
813
849
|
|
|
814
|
-
# 2.
|
|
815
|
-
|
|
850
|
+
# 2. Configure MCP integration (THE ONLY WAY)
|
|
851
|
+
mcp-ticketer mcp claude
|
|
852
|
+
|
|
853
|
+
# Alternative: Configure for Claude Desktop (global)
|
|
854
|
+
mcp-ticketer mcp claude --global
|
|
855
|
+
|
|
856
|
+
# 3. Configuration created at:
|
|
857
|
+
# Project-level: .claude/mcp.json
|
|
858
|
+
# Global: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
|
|
859
|
+
# %APPDATA%/Claude/claude_desktop_config.json (Windows)
|
|
860
|
+
# ~/.config/Claude/claude_desktop_config.json (Linux)
|
|
861
|
+
|
|
862
|
+
# 4. Use via Claude Code
|
|
863
|
+
# Claude can now create, read, update tickets directly
|
|
864
|
+
# Example: "Create a high-priority task for fixing the login bug"
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
**Example Configuration (.claude/mcp.json):**
|
|
868
|
+
```json
|
|
816
869
|
{
|
|
817
870
|
"mcpServers": {
|
|
818
|
-
"ticketer": {
|
|
819
|
-
"command": "mcp-ticketer
|
|
820
|
-
"args": [],
|
|
871
|
+
"mcp-ticketer": {
|
|
872
|
+
"command": "/path/to/mcp-ticketer",
|
|
873
|
+
"args": ["serve"],
|
|
874
|
+
"cwd": "/Users/masa/Projects/mcp-ticketer",
|
|
821
875
|
"env": {
|
|
822
876
|
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
823
877
|
"MCP_TICKETER_BASE_PATH": "/Users/masa/Projects/mcp-ticketer/.aitrackdown"
|
|
@@ -825,12 +879,181 @@ make init-aitrackdown
|
|
|
825
879
|
}
|
|
826
880
|
}
|
|
827
881
|
}
|
|
882
|
+
```
|
|
828
883
|
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
884
|
+
---
|
|
885
|
+
|
|
886
|
+
### Gemini CLI Integration
|
|
887
|
+
|
|
888
|
+
**Google's Gemini CLI with project-level MCP support:**
|
|
889
|
+
|
|
890
|
+
```bash
|
|
891
|
+
# 1. Initialize mcp-ticketer
|
|
892
|
+
make install-dev
|
|
893
|
+
make init-aitrackdown
|
|
894
|
+
|
|
895
|
+
# 2. Configure for Gemini CLI (THE ONLY WAY)
|
|
896
|
+
mcp-ticketer mcp gemini --scope project
|
|
897
|
+
|
|
898
|
+
# Alternative: Global configuration
|
|
899
|
+
mcp-ticketer mcp gemini --scope user
|
|
900
|
+
|
|
901
|
+
# 3. Configuration created at:
|
|
902
|
+
# Project-level: .gemini/settings.json (added to .gitignore automatically)
|
|
903
|
+
# User-level: ~/.gemini/settings.json
|
|
904
|
+
|
|
905
|
+
# 4. Use with Gemini CLI
|
|
906
|
+
# Run gemini command in project directory
|
|
907
|
+
# MCP tools automatically available
|
|
908
|
+
```
|
|
909
|
+
|
|
910
|
+
**Example Configuration (.gemini/settings.json):**
|
|
911
|
+
```json
|
|
912
|
+
{
|
|
913
|
+
"mcpServers": {
|
|
914
|
+
"mcp-ticketer": {
|
|
915
|
+
"command": "/path/to/mcp-ticketer",
|
|
916
|
+
"args": ["serve"],
|
|
917
|
+
"env": {
|
|
918
|
+
"PYTHONPATH": "/path/to/project/src",
|
|
919
|
+
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
920
|
+
"MCP_TICKETER_BASE_PATH": "/path/to/project/.aitrackdown"
|
|
921
|
+
},
|
|
922
|
+
"timeout": 15000,
|
|
923
|
+
"trust": false
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
**Features:**
|
|
930
|
+
- ✅ Project-level configuration support
|
|
931
|
+
- ✅ JSON configuration format (familiar)
|
|
932
|
+
- ✅ Automatic .gitignore management
|
|
933
|
+
- ✅ 15-second timeout for MCP operations
|
|
934
|
+
- ✅ Security: untrusted by default
|
|
935
|
+
|
|
936
|
+
---
|
|
937
|
+
|
|
938
|
+
### Codex CLI Integration
|
|
939
|
+
|
|
940
|
+
**⚠️ IMPORTANT: Codex CLI only supports GLOBAL configuration**
|
|
941
|
+
|
|
942
|
+
```bash
|
|
943
|
+
# 1. Initialize mcp-ticketer
|
|
944
|
+
make install-dev
|
|
945
|
+
make init-aitrackdown
|
|
946
|
+
|
|
947
|
+
# 2. Configure for Codex CLI (THE ONLY WAY)
|
|
948
|
+
mcp-ticketer mcp codex
|
|
949
|
+
|
|
950
|
+
# 3. Configuration created at:
|
|
951
|
+
# Global only: ~/.codex/config.toml
|
|
952
|
+
|
|
953
|
+
# 4. RESTART Codex CLI (REQUIRED)
|
|
954
|
+
# Codex does not hot-reload configuration
|
|
955
|
+
|
|
956
|
+
# 5. Use with Codex CLI
|
|
957
|
+
# Run codex command in any directory
|
|
958
|
+
# MCP tools will be available globally
|
|
959
|
+
```
|
|
960
|
+
|
|
961
|
+
**Example Configuration (~/.codex/config.toml):**
|
|
962
|
+
```toml
|
|
963
|
+
[mcp_servers.mcp-ticketer]
|
|
964
|
+
command = "/path/to/mcp-ticketer"
|
|
965
|
+
args = ["serve"]
|
|
966
|
+
|
|
967
|
+
[mcp_servers.mcp-ticketer.env]
|
|
968
|
+
PYTHONPATH = "/path/to/project/src"
|
|
969
|
+
MCP_TICKETER_ADAPTER = "aitrackdown"
|
|
970
|
+
MCP_TICKETER_BASE_PATH = "/path/to/project/.aitrackdown"
|
|
832
971
|
```
|
|
833
972
|
|
|
973
|
+
**Limitations:**
|
|
974
|
+
- ❌ No project-level configuration support
|
|
975
|
+
- ❌ Global configuration affects all projects
|
|
976
|
+
- ⚠️ Requires restart after configuration changes
|
|
977
|
+
- ⚠️ TOML format (different from other clients)
|
|
978
|
+
|
|
979
|
+
**Use when:**
|
|
980
|
+
- You primarily work on one project
|
|
981
|
+
- You need global MCP access across all directories
|
|
982
|
+
- You prefer TOML configuration
|
|
983
|
+
|
|
984
|
+
---
|
|
985
|
+
|
|
986
|
+
### Auggie Integration
|
|
987
|
+
|
|
988
|
+
**⚠️ IMPORTANT: Auggie only supports GLOBAL configuration**
|
|
989
|
+
|
|
990
|
+
```bash
|
|
991
|
+
# 1. Initialize mcp-ticketer
|
|
992
|
+
make install-dev
|
|
993
|
+
make init-aitrackdown
|
|
994
|
+
|
|
995
|
+
# 2. Configure for Auggie (THE ONLY WAY)
|
|
996
|
+
mcp-ticketer mcp auggie
|
|
997
|
+
|
|
998
|
+
# 3. Configuration created at:
|
|
999
|
+
# Global only: ~/.augment/settings.json
|
|
1000
|
+
|
|
1001
|
+
# 4. Restart Auggie CLI
|
|
1002
|
+
# Auggie should pick up the new configuration
|
|
1003
|
+
|
|
1004
|
+
# 5. Use with Auggie CLI
|
|
1005
|
+
# Run auggie command in any directory
|
|
1006
|
+
# MCP tools will be available globally
|
|
1007
|
+
```
|
|
1008
|
+
|
|
1009
|
+
**Example Configuration (~/.augment/settings.json):**
|
|
1010
|
+
```json
|
|
1011
|
+
{
|
|
1012
|
+
"mcpServers": {
|
|
1013
|
+
"mcp-ticketer": {
|
|
1014
|
+
"command": "/path/to/mcp-ticketer",
|
|
1015
|
+
"args": ["serve"],
|
|
1016
|
+
"env": {
|
|
1017
|
+
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
1018
|
+
"MCP_TICKETER_BASE_PATH": "/Users/user/.mcp-ticketer/.aitrackdown"
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
```
|
|
1024
|
+
|
|
1025
|
+
**Limitations:**
|
|
1026
|
+
- ❌ No project-level configuration support
|
|
1027
|
+
- ❌ Global configuration affects all projects
|
|
1028
|
+
- ⚠️ Uses global paths for adapter storage
|
|
1029
|
+
|
|
1030
|
+
**Use when:**
|
|
1031
|
+
- You work on a single project primarily
|
|
1032
|
+
- You want simple, global MCP access
|
|
1033
|
+
- You prefer JSON configuration
|
|
1034
|
+
|
|
1035
|
+
---
|
|
1036
|
+
|
|
1037
|
+
### Comparison: Which Client Should You Use?
|
|
1038
|
+
|
|
1039
|
+
| Feature | Claude Code | Gemini CLI | Codex CLI | Auggie |
|
|
1040
|
+
|---------|-------------|------------|-----------|--------|
|
|
1041
|
+
| **Project-level config** | ✅ Yes | ✅ Yes | ❌ No | ❌ No |
|
|
1042
|
+
| **Global config** | ✅ Yes | ✅ Yes | ✅ Only option | ✅ Only option |
|
|
1043
|
+
| **Config format** | JSON | JSON | TOML | JSON |
|
|
1044
|
+
| **Hot reload** | ✅ Yes | ✅ Yes | ❌ Requires restart | ⚠️ May require restart |
|
|
1045
|
+
| **Security options** | ⚠️ Basic | ✅ Trust setting | ⚠️ Basic | ⚠️ Basic |
|
|
1046
|
+
| **Working directory** | ✅ Supported | ✅ Supported | ⚠️ Global only | ⚠️ Global only |
|
|
1047
|
+
| **Auto .gitignore** | ⚠️ Manual | ✅ Automatic | N/A | N/A |
|
|
1048
|
+
| **Maturity** | ✅ Stable | ✅ Stable | ⚠️ Beta | ⚠️ Emerging |
|
|
1049
|
+
|
|
1050
|
+
**Recommendation:**
|
|
1051
|
+
- **Best choice**: Claude Code (native integration, project-level support)
|
|
1052
|
+
- **Alternative**: Gemini CLI (excellent project-level support, security features)
|
|
1053
|
+
- **Single project**: Codex CLI or Auggie (simple global setup)
|
|
1054
|
+
|
|
1055
|
+
---
|
|
1056
|
+
|
|
834
1057
|
### Agent Collaboration Patterns
|
|
835
1058
|
|
|
836
1059
|
**Multi-Agent Workflow:**
|
|
@@ -37,7 +37,7 @@ The configuration file at `~/.mcp-ticketer/config.json` controls which adapter i
|
|
|
37
37
|
|
|
38
38
|
Test the MCP server:
|
|
39
39
|
```bash
|
|
40
|
-
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | /Users/masa/.local/bin/mcp-ticketer
|
|
40
|
+
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | /Users/masa/.local/bin/mcp-ticketer serve
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
You should see a JSON response with the server information.
|
|
@@ -46,7 +46,7 @@ You should see a JSON response with the server information.
|
|
|
46
46
|
|
|
47
47
|
For development, use the `mcp_server.sh` script in the project directory:
|
|
48
48
|
```bash
|
|
49
|
-
./mcp_server.sh
|
|
49
|
+
./mcp_server.sh serve
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
This script:
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
# Codex CLI Integration for MCP Ticketer
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document describes the Codex CLI integration for mcp-ticketer, which allows the Codex AI assistant to interact with mcp-ticketer through the Model Context Protocol (MCP).
|
|
6
|
+
|
|
7
|
+
**Important**: Codex CLI only supports **global configuration** at `~/.codex/config.toml`. Unlike Claude Code and Gemini CLI, there is no project-level configuration support.
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
### 1. Prerequisites
|
|
12
|
+
|
|
13
|
+
- mcp-ticketer installed (`pip install mcp-ticketer` or `make install-dev`)
|
|
14
|
+
- Project configured with `.mcp-ticketer/config.json` (run `mcp-ticketer init`)
|
|
15
|
+
|
|
16
|
+
### 2. Configure Codex CLI
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Configure Codex CLI globally
|
|
20
|
+
mcp-ticketer mcp codex
|
|
21
|
+
|
|
22
|
+
# Or force overwrite existing configuration
|
|
23
|
+
mcp-ticketer mcp codex --force
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 3. Restart Codex CLI
|
|
27
|
+
|
|
28
|
+
**Important**: You must restart Codex CLI after configuration changes.
|
|
29
|
+
|
|
30
|
+
### 4. Verify Configuration
|
|
31
|
+
|
|
32
|
+
Check `~/.codex/config.toml`:
|
|
33
|
+
|
|
34
|
+
```toml
|
|
35
|
+
[mcp_servers.mcp-ticketer]
|
|
36
|
+
command = "/path/to/mcp-ticketer"
|
|
37
|
+
args = ["serve"]
|
|
38
|
+
|
|
39
|
+
[mcp_servers.mcp-ticketer.env]
|
|
40
|
+
PYTHONPATH = "/path/to/src"
|
|
41
|
+
MCP_TICKETER_ADAPTER = "aitrackdown"
|
|
42
|
+
MCP_TICKETER_BASE_PATH = "/path/to/.aitrackdown"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Configuration Details
|
|
46
|
+
|
|
47
|
+
### File Locations
|
|
48
|
+
|
|
49
|
+
- **Codex Config**: `~/.codex/config.toml` (global only)
|
|
50
|
+
- **MCP Ticketer Config**: `.mcp-ticketer/config.json` (project-local)
|
|
51
|
+
|
|
52
|
+
### Configuration Scope
|
|
53
|
+
|
|
54
|
+
| CLI Tool | Scope Options | Config Location |
|
|
55
|
+
|----------|---------------|-----------------|
|
|
56
|
+
| Claude Code | Project, Global | `.mcp/config.json` or `~/Library/Application Support/Claude/` |
|
|
57
|
+
| Gemini CLI | Project, User | `.gemini/settings.json` or `~/.gemini/settings.json` |
|
|
58
|
+
| **Codex CLI** | **Global only** | **`~/.codex/config.toml`** |
|
|
59
|
+
|
|
60
|
+
### Environment Variables
|
|
61
|
+
|
|
62
|
+
The configuration automatically includes environment variables based on your adapter:
|
|
63
|
+
|
|
64
|
+
**AITrackdown (Local)**:
|
|
65
|
+
- `MCP_TICKETER_ADAPTER=aitrackdown`
|
|
66
|
+
- `MCP_TICKETER_BASE_PATH=/path/to/.aitrackdown`
|
|
67
|
+
|
|
68
|
+
**Linear**:
|
|
69
|
+
- `MCP_TICKETER_ADAPTER=linear`
|
|
70
|
+
- `LINEAR_API_KEY=your_api_key`
|
|
71
|
+
- `LINEAR_TEAM_ID=your_team_id`
|
|
72
|
+
|
|
73
|
+
**GitHub**:
|
|
74
|
+
- `MCP_TICKETER_ADAPTER=github`
|
|
75
|
+
- `GITHUB_TOKEN=your_token`
|
|
76
|
+
- `GITHUB_OWNER=owner`
|
|
77
|
+
- `GITHUB_REPO=repo`
|
|
78
|
+
|
|
79
|
+
**JIRA**:
|
|
80
|
+
- `MCP_TICKETER_ADAPTER=jira`
|
|
81
|
+
- `JIRA_API_TOKEN=your_token`
|
|
82
|
+
- `JIRA_EMAIL=your_email`
|
|
83
|
+
- `JIRA_SERVER=https://your-domain.atlassian.net`
|
|
84
|
+
- `JIRA_PROJECT_KEY=PROJECT`
|
|
85
|
+
|
|
86
|
+
## TOML Structure
|
|
87
|
+
|
|
88
|
+
### Key Differences from JSON-based CLIs
|
|
89
|
+
|
|
90
|
+
Codex uses TOML format with specific naming conventions:
|
|
91
|
+
|
|
92
|
+
```toml
|
|
93
|
+
# Codex uses underscore: mcp_servers (not camelCase mcpServers)
|
|
94
|
+
[mcp_servers.mcp-ticketer]
|
|
95
|
+
command = "/usr/local/bin/mcp-ticketer"
|
|
96
|
+
args = ["serve"]
|
|
97
|
+
|
|
98
|
+
# Environment variables in nested section
|
|
99
|
+
[mcp_servers.mcp-ticketer.env]
|
|
100
|
+
PYTHONPATH = "/path/to/src"
|
|
101
|
+
MCP_TICKETER_ADAPTER = "aitrackdown"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Compare to Claude Code JSON:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"mcpServers": {
|
|
109
|
+
"mcp-ticketer": {
|
|
110
|
+
"command": "/usr/local/bin/mcp-ticketer",
|
|
111
|
+
"args": ["serve"],
|
|
112
|
+
"env": {
|
|
113
|
+
"PYTHONPATH": "/path/to/src",
|
|
114
|
+
"MCP_TICKETER_ADAPTER": "aitrackdown"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## CLI Command Reference
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Configure Codex CLI
|
|
125
|
+
mcp-ticketer mcp codex [OPTIONS]
|
|
126
|
+
|
|
127
|
+
# Options:
|
|
128
|
+
# --force, -f Overwrite existing configuration
|
|
129
|
+
# --help Show help message
|
|
130
|
+
|
|
131
|
+
# Examples:
|
|
132
|
+
mcp-ticketer mcp codex # Configure globally
|
|
133
|
+
mcp-ticketer mcp codex --force # Force overwrite
|
|
134
|
+
mcp-ticketer mcp codex --help # Show help
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Troubleshooting
|
|
138
|
+
|
|
139
|
+
### Configuration Not Taking Effect
|
|
140
|
+
|
|
141
|
+
**Problem**: Changes to config.toml not reflected in Codex CLI
|
|
142
|
+
|
|
143
|
+
**Solution**: Restart Codex CLI. Configuration changes require a restart.
|
|
144
|
+
|
|
145
|
+
### Wrong Adapter Active
|
|
146
|
+
|
|
147
|
+
**Problem**: Codex using wrong ticket adapter
|
|
148
|
+
|
|
149
|
+
**Solution**: Check `.mcp-ticketer/config.json` in your project:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Show current configuration
|
|
153
|
+
mcp-ticketer configure --show
|
|
154
|
+
|
|
155
|
+
# Set different adapter
|
|
156
|
+
mcp-ticketer configure --adapter linear
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Then reconfigure Codex:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
mcp-ticketer mcp codex --force
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Binary Not Found
|
|
166
|
+
|
|
167
|
+
**Problem**: "Could not find mcp-ticketer binary"
|
|
168
|
+
|
|
169
|
+
**Solution**: Ensure mcp-ticketer is installed and in PATH:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Check installation
|
|
173
|
+
which mcp-ticketer
|
|
174
|
+
|
|
175
|
+
# Install if missing
|
|
176
|
+
pip install mcp-ticketer
|
|
177
|
+
|
|
178
|
+
# Or for development
|
|
179
|
+
make install-dev
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Configuration Path Issues
|
|
183
|
+
|
|
184
|
+
**Problem**: TOML file has incorrect paths
|
|
185
|
+
|
|
186
|
+
**Solution**: Run configuration from your project directory:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
cd /path/to/your/project
|
|
190
|
+
mcp-ticketer mcp codex --force
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Implementation Details
|
|
194
|
+
|
|
195
|
+
### File Structure
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
src/mcp_ticketer/cli/
|
|
199
|
+
├── codex_configure.py # Codex CLI configuration module
|
|
200
|
+
├── mcp_configure.py # Claude Code configuration (JSON)
|
|
201
|
+
├── gemini_configure.py # Gemini CLI configuration (JSON)
|
|
202
|
+
└── main.py # CLI commands including 'codex' command
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Dependencies
|
|
206
|
+
|
|
207
|
+
Added to `pyproject.toml`:
|
|
208
|
+
|
|
209
|
+
```toml
|
|
210
|
+
dependencies = [
|
|
211
|
+
# ... existing dependencies ...
|
|
212
|
+
"tomli>=2.0.0; python_version<'3.11'", # TOML reading (Python <3.11)
|
|
213
|
+
"tomli-w>=1.0.0", # TOML writing (all versions)
|
|
214
|
+
]
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Key Functions
|
|
218
|
+
|
|
219
|
+
**`codex_configure.py`**:
|
|
220
|
+
|
|
221
|
+
- `find_codex_config()`: Returns `~/.codex/config.toml` path
|
|
222
|
+
- `load_codex_config(config_path)`: Loads existing TOML or empty structure
|
|
223
|
+
- `save_codex_config(config_path, config)`: Writes TOML with formatting
|
|
224
|
+
- `create_codex_server_config(binary_path, project_config, cwd)`: Creates server config
|
|
225
|
+
- `configure_codex_mcp(force)`: Main configuration function
|
|
226
|
+
|
|
227
|
+
## Testing
|
|
228
|
+
|
|
229
|
+
### Manual Test
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# 1. Configure
|
|
233
|
+
mcp-ticketer mcp codex
|
|
234
|
+
|
|
235
|
+
# 2. Check TOML file
|
|
236
|
+
cat ~/.codex/config.toml
|
|
237
|
+
|
|
238
|
+
# 3. Verify structure
|
|
239
|
+
python3 test_codex_config.py
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Automated Test
|
|
243
|
+
|
|
244
|
+
Run the included test script:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
python3 test_codex_config.py
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Expected output:
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
✓ Created test TOML file: /tmp/...
|
|
254
|
+
✓ TOML format validation passed
|
|
255
|
+
✓ Structure validation passed
|
|
256
|
+
✓ Value validation passed
|
|
257
|
+
|
|
258
|
+
✅ All tests passed!
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Comparison with Other CLIs
|
|
262
|
+
|
|
263
|
+
| Feature | Claude Code | Gemini CLI | Codex CLI |
|
|
264
|
+
|---------|-------------|------------|-----------|
|
|
265
|
+
| **Config Format** | JSON | JSON | **TOML** |
|
|
266
|
+
| **Config Location** | Project or Global | Project or User | **Global only** |
|
|
267
|
+
| **Key Name** | mcpServers | mcpServers | **mcp_servers** |
|
|
268
|
+
| **Scope Flag** | `--global` | `--scope user/project` | **None (global only)** |
|
|
269
|
+
| **Restart Required** | Yes | No | **Yes** |
|
|
270
|
+
| **Nested Env** | Yes | Yes | Yes |
|
|
271
|
+
| **Project Support** | Yes | Yes | **No** |
|
|
272
|
+
|
|
273
|
+
## Security Considerations
|
|
274
|
+
|
|
275
|
+
### Global Configuration Implications
|
|
276
|
+
|
|
277
|
+
Since Codex only supports global configuration:
|
|
278
|
+
|
|
279
|
+
1. **API Keys**: Environment variables (including API keys) are in global config
|
|
280
|
+
2. **Path References**: Configuration includes absolute paths from configuration time
|
|
281
|
+
3. **Multi-Project**: Same configuration used across all projects
|
|
282
|
+
|
|
283
|
+
### Best Practices
|
|
284
|
+
|
|
285
|
+
1. **Protect config.toml**: Ensure `~/.codex/config.toml` has appropriate permissions
|
|
286
|
+
2. **Avoid Hardcoded Secrets**: Use environment variables where possible
|
|
287
|
+
3. **Reconfigure Per Project**: Run `mcp-ticketer mcp codex --force` when switching projects
|
|
288
|
+
4. **Review Configuration**: Periodically audit `~/.codex/config.toml`
|
|
289
|
+
|
|
290
|
+
## Future Enhancements
|
|
291
|
+
|
|
292
|
+
- [ ] Support for multiple adapters in single config
|
|
293
|
+
- [ ] Environment variable templating
|
|
294
|
+
- [ ] Automatic path resolution
|
|
295
|
+
- [ ] Configuration validation command
|
|
296
|
+
- [ ] Migration tool from JSON to TOML
|
|
297
|
+
|
|
298
|
+
## References
|
|
299
|
+
|
|
300
|
+
- [Codex CLI Documentation](https://github.com/your-org/codex-cli)
|
|
301
|
+
- [MCP Protocol Specification](https://modelcontextprotocol.io/)
|
|
302
|
+
- [TOML Specification](https://toml.io/en/)
|
|
303
|
+
- [mcp-ticketer Documentation](https://github.com/mcp-ticketer/mcp-ticketer)
|
|
304
|
+
|
|
305
|
+
## Support
|
|
306
|
+
|
|
307
|
+
For issues or questions:
|
|
308
|
+
|
|
309
|
+
1. Check troubleshooting section above
|
|
310
|
+
2. Review `~/.codex/config.toml` for correctness
|
|
311
|
+
3. Test with `mcp-ticketer mcp codex --force`
|
|
312
|
+
4. File issue at https://github.com/mcp-ticketer/mcp-ticketer/issues
|