mcp-ticketer 0.4.11__py3-none-any.whl → 2.0.1__py3-none-any.whl

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 (111) hide show
  1. mcp_ticketer/__init__.py +10 -10
  2. mcp_ticketer/__version__.py +3 -3
  3. mcp_ticketer/adapters/__init__.py +2 -0
  4. mcp_ticketer/adapters/aitrackdown.py +394 -9
  5. mcp_ticketer/adapters/asana/__init__.py +15 -0
  6. mcp_ticketer/adapters/asana/adapter.py +1416 -0
  7. mcp_ticketer/adapters/asana/client.py +292 -0
  8. mcp_ticketer/adapters/asana/mappers.py +348 -0
  9. mcp_ticketer/adapters/asana/types.py +146 -0
  10. mcp_ticketer/adapters/github.py +836 -105
  11. mcp_ticketer/adapters/hybrid.py +47 -5
  12. mcp_ticketer/adapters/jira.py +772 -1
  13. mcp_ticketer/adapters/linear/adapter.py +2293 -108
  14. mcp_ticketer/adapters/linear/client.py +146 -12
  15. mcp_ticketer/adapters/linear/mappers.py +105 -11
  16. mcp_ticketer/adapters/linear/queries.py +168 -1
  17. mcp_ticketer/adapters/linear/types.py +80 -4
  18. mcp_ticketer/analysis/__init__.py +56 -0
  19. mcp_ticketer/analysis/dependency_graph.py +255 -0
  20. mcp_ticketer/analysis/health_assessment.py +304 -0
  21. mcp_ticketer/analysis/orphaned.py +218 -0
  22. mcp_ticketer/analysis/project_status.py +594 -0
  23. mcp_ticketer/analysis/similarity.py +224 -0
  24. mcp_ticketer/analysis/staleness.py +266 -0
  25. mcp_ticketer/automation/__init__.py +11 -0
  26. mcp_ticketer/automation/project_updates.py +378 -0
  27. mcp_ticketer/cache/memory.py +3 -3
  28. mcp_ticketer/cli/adapter_diagnostics.py +4 -2
  29. mcp_ticketer/cli/auggie_configure.py +18 -6
  30. mcp_ticketer/cli/codex_configure.py +175 -60
  31. mcp_ticketer/cli/configure.py +884 -146
  32. mcp_ticketer/cli/cursor_configure.py +314 -0
  33. mcp_ticketer/cli/diagnostics.py +31 -28
  34. mcp_ticketer/cli/discover.py +293 -21
  35. mcp_ticketer/cli/gemini_configure.py +18 -6
  36. mcp_ticketer/cli/init_command.py +880 -0
  37. mcp_ticketer/cli/instruction_commands.py +435 -0
  38. mcp_ticketer/cli/linear_commands.py +99 -15
  39. mcp_ticketer/cli/main.py +109 -2055
  40. mcp_ticketer/cli/mcp_configure.py +673 -99
  41. mcp_ticketer/cli/mcp_server_commands.py +415 -0
  42. mcp_ticketer/cli/migrate_config.py +12 -8
  43. mcp_ticketer/cli/platform_commands.py +6 -6
  44. mcp_ticketer/cli/platform_detection.py +477 -0
  45. mcp_ticketer/cli/platform_installer.py +536 -0
  46. mcp_ticketer/cli/project_update_commands.py +350 -0
  47. mcp_ticketer/cli/queue_commands.py +15 -15
  48. mcp_ticketer/cli/setup_command.py +639 -0
  49. mcp_ticketer/cli/simple_health.py +13 -11
  50. mcp_ticketer/cli/ticket_commands.py +277 -36
  51. mcp_ticketer/cli/update_checker.py +313 -0
  52. mcp_ticketer/cli/utils.py +45 -41
  53. mcp_ticketer/core/__init__.py +35 -1
  54. mcp_ticketer/core/adapter.py +170 -5
  55. mcp_ticketer/core/config.py +38 -31
  56. mcp_ticketer/core/env_discovery.py +33 -3
  57. mcp_ticketer/core/env_loader.py +7 -6
  58. mcp_ticketer/core/exceptions.py +10 -4
  59. mcp_ticketer/core/http_client.py +10 -10
  60. mcp_ticketer/core/instructions.py +405 -0
  61. mcp_ticketer/core/label_manager.py +732 -0
  62. mcp_ticketer/core/mappers.py +32 -20
  63. mcp_ticketer/core/models.py +136 -1
  64. mcp_ticketer/core/onepassword_secrets.py +379 -0
  65. mcp_ticketer/core/priority_matcher.py +463 -0
  66. mcp_ticketer/core/project_config.py +148 -14
  67. mcp_ticketer/core/registry.py +1 -1
  68. mcp_ticketer/core/session_state.py +171 -0
  69. mcp_ticketer/core/state_matcher.py +592 -0
  70. mcp_ticketer/core/url_parser.py +425 -0
  71. mcp_ticketer/core/validators.py +69 -0
  72. mcp_ticketer/defaults/ticket_instructions.md +644 -0
  73. mcp_ticketer/mcp/__init__.py +2 -2
  74. mcp_ticketer/mcp/server/__init__.py +2 -2
  75. mcp_ticketer/mcp/server/diagnostic_helper.py +175 -0
  76. mcp_ticketer/mcp/server/main.py +187 -93
  77. mcp_ticketer/mcp/server/routing.py +655 -0
  78. mcp_ticketer/mcp/server/server_sdk.py +58 -0
  79. mcp_ticketer/mcp/server/tools/__init__.py +37 -9
  80. mcp_ticketer/mcp/server/tools/analysis_tools.py +854 -0
  81. mcp_ticketer/mcp/server/tools/attachment_tools.py +65 -20
  82. mcp_ticketer/mcp/server/tools/bulk_tools.py +259 -202
  83. mcp_ticketer/mcp/server/tools/comment_tools.py +74 -12
  84. mcp_ticketer/mcp/server/tools/config_tools.py +1429 -0
  85. mcp_ticketer/mcp/server/tools/diagnostic_tools.py +211 -0
  86. mcp_ticketer/mcp/server/tools/hierarchy_tools.py +878 -319
  87. mcp_ticketer/mcp/server/tools/instruction_tools.py +295 -0
  88. mcp_ticketer/mcp/server/tools/label_tools.py +942 -0
  89. mcp_ticketer/mcp/server/tools/pr_tools.py +3 -7
  90. mcp_ticketer/mcp/server/tools/project_status_tools.py +158 -0
  91. mcp_ticketer/mcp/server/tools/project_update_tools.py +473 -0
  92. mcp_ticketer/mcp/server/tools/search_tools.py +180 -97
  93. mcp_ticketer/mcp/server/tools/session_tools.py +308 -0
  94. mcp_ticketer/mcp/server/tools/ticket_tools.py +1182 -82
  95. mcp_ticketer/mcp/server/tools/user_ticket_tools.py +364 -0
  96. mcp_ticketer/queue/health_monitor.py +1 -0
  97. mcp_ticketer/queue/manager.py +4 -4
  98. mcp_ticketer/queue/queue.py +3 -3
  99. mcp_ticketer/queue/run_worker.py +1 -1
  100. mcp_ticketer/queue/ticket_registry.py +2 -2
  101. mcp_ticketer/queue/worker.py +15 -13
  102. mcp_ticketer/utils/__init__.py +5 -0
  103. mcp_ticketer/utils/token_utils.py +246 -0
  104. mcp_ticketer-2.0.1.dist-info/METADATA +1366 -0
  105. mcp_ticketer-2.0.1.dist-info/RECORD +122 -0
  106. mcp_ticketer-0.4.11.dist-info/METADATA +0 -496
  107. mcp_ticketer-0.4.11.dist-info/RECORD +0 -77
  108. {mcp_ticketer-0.4.11.dist-info → mcp_ticketer-2.0.1.dist-info}/WHEEL +0 -0
  109. {mcp_ticketer-0.4.11.dist-info → mcp_ticketer-2.0.1.dist-info}/entry_points.txt +0 -0
  110. {mcp_ticketer-0.4.11.dist-info → mcp_ticketer-2.0.1.dist-info}/licenses/LICENSE +0 -0
  111. {mcp_ticketer-0.4.11.dist-info → mcp_ticketer-2.0.1.dist-info}/top_level.txt +0 -0
@@ -23,6 +23,9 @@ mcp = FastMCP("mcp-ticketer")
23
23
  # Global adapter instance
24
24
  _adapter: BaseAdapter | None = None
25
25
 
26
+ # Global router instance (optional, for multi-platform support)
27
+ _router: Any | None = None
28
+
26
29
  # Configure logging
27
30
  logger = logging.getLogger(__name__)
28
31
 
@@ -70,6 +73,61 @@ def get_adapter() -> BaseAdapter:
70
73
  return _adapter
71
74
 
72
75
 
76
+ def configure_router(
77
+ default_adapter: str, adapter_configs: dict[str, dict[str, Any]]
78
+ ) -> None:
79
+ """Configure multi-platform routing support (optional).
80
+
81
+ This enables URL-based ticket access across multiple platforms in a
82
+ single MCP session. When configured, tools will use the router to
83
+ automatically detect the platform from URLs.
84
+
85
+ Args:
86
+ default_adapter: Default adapter for plain IDs (e.g., "linear")
87
+ adapter_configs: Configuration for each adapter
88
+ Example: {
89
+ "linear": {"api_key": "...", "team_id": "..."},
90
+ "github": {"token": "...", "owner": "...", "repo": "..."}
91
+ }
92
+
93
+ Raises:
94
+ RuntimeError: If router configuration fails
95
+
96
+ """
97
+ global _router
98
+
99
+ try:
100
+ from .routing import TicketRouter
101
+
102
+ _router = TicketRouter(
103
+ default_adapter=default_adapter, adapter_configs=adapter_configs
104
+ )
105
+ logger.info(f"Configured multi-platform router with default: {default_adapter}")
106
+ except Exception as e:
107
+ logger.error(f"Failed to configure router: {e}")
108
+ raise RuntimeError(f"Router configuration failed: {e}") from e
109
+
110
+
111
+ def get_router() -> Any:
112
+ """Get the configured router instance (if available).
113
+
114
+ Returns:
115
+ The global router instance, or None if not configured
116
+
117
+ """
118
+ return _router
119
+
120
+
121
+ def has_router() -> bool:
122
+ """Check if multi-platform router is configured.
123
+
124
+ Returns:
125
+ True if router is available, False otherwise
126
+
127
+ """
128
+ return _router is not None
129
+
130
+
73
131
  # Import all tool modules to register them with FastMCP
74
132
  # These imports must come after mcp is initialized but before main()
75
133
  from . import tools # noqa: E402, F401
@@ -10,29 +10,57 @@ Modules:
10
10
  search_tools: Search and query operations
11
11
  bulk_tools: Bulk create and update operations
12
12
  comment_tools: Comment management
13
- pr_tools: Pull request integration
14
- attachment_tools: File attachment handling
13
+ config_tools: Configuration management (adapter, project, user settings)
14
+ session_tools: Session tracking and ticket association management
15
+ user_ticket_tools: User-specific ticket operations (my tickets, transitions)
16
+ analysis_tools: Ticket analysis and cleanup tools (similar, stale, orphaned)
17
+ label_tools: Label management, normalization, deduplication, and cleanup
18
+ project_update_tools: Project status update management (1M-238)
19
+ project_status_tools: Project status analysis and work planning (1M-316)
20
+
21
+ Note:
22
+ instruction_tools: Removed from MCP server (CLI-only as of Phase 2 Sprint 2.3)
23
+ pr_tools: Removed from MCP server (CLI-only as of Phase 2 Sprint 1.3)
24
+ attachment_tools: Removed from MCP server (CLI-only as of Phase 2 Sprint 1.3)
25
+ These tools are available via CLI commands but not exposed through MCP interface.
26
+ Use filesystem MCP for file operations and GitHub MCP for PR management.
15
27
 
16
28
  """
17
29
 
18
30
  # Import all tool modules to register them with FastMCP
19
31
  # Order matters - import core functionality first
20
32
  from . import (
21
- attachment_tools, # noqa: F401
33
+ analysis_tools, # noqa: F401
34
+ # attachment_tools removed - CLI-only (Phase 2 Sprint 1.3 - use filesystem MCP)
22
35
  bulk_tools, # noqa: F401
23
36
  comment_tools, # noqa: F401
37
+ config_tools, # noqa: F401
24
38
  hierarchy_tools, # noqa: F401
25
- pr_tools, # noqa: F401
39
+ # instruction_tools removed - CLI-only (Phase 2 Sprint 2.3)
40
+ label_tools, # noqa: F401
41
+ # pr_tools removed - CLI-only (Phase 2 Sprint 1.3 - use GitHub MCP)
42
+ project_status_tools, # noqa: F401
43
+ project_update_tools, # noqa: F401
26
44
  search_tools, # noqa: F401
45
+ session_tools, # noqa: F401
27
46
  ticket_tools, # noqa: F401
47
+ user_ticket_tools, # noqa: F401
28
48
  )
29
49
 
30
50
  __all__ = [
31
- "ticket_tools",
32
- "hierarchy_tools",
33
- "search_tools",
51
+ "analysis_tools",
52
+ # "attachment_tools" removed - CLI-only (Phase 2 Sprint 1.3)
34
53
  "bulk_tools",
35
54
  "comment_tools",
36
- "pr_tools",
37
- "attachment_tools",
55
+ "config_tools",
56
+ "hierarchy_tools",
57
+ # "instruction_tools" removed - CLI-only (Phase 2 Sprint 2.3)
58
+ "label_tools",
59
+ # "pr_tools" removed - CLI-only (Phase 2 Sprint 1.3)
60
+ "project_status_tools",
61
+ "project_update_tools",
62
+ "search_tools",
63
+ "session_tools",
64
+ "ticket_tools",
65
+ "user_ticket_tools",
38
66
  ]