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.
- mcp_ticketer/__init__.py +10 -10
- mcp_ticketer/__version__.py +3 -3
- mcp_ticketer/adapters/__init__.py +2 -0
- mcp_ticketer/adapters/aitrackdown.py +394 -9
- mcp_ticketer/adapters/asana/__init__.py +15 -0
- mcp_ticketer/adapters/asana/adapter.py +1416 -0
- mcp_ticketer/adapters/asana/client.py +292 -0
- mcp_ticketer/adapters/asana/mappers.py +348 -0
- mcp_ticketer/adapters/asana/types.py +146 -0
- mcp_ticketer/adapters/github.py +836 -105
- mcp_ticketer/adapters/hybrid.py +47 -5
- mcp_ticketer/adapters/jira.py +772 -1
- mcp_ticketer/adapters/linear/adapter.py +2293 -108
- mcp_ticketer/adapters/linear/client.py +146 -12
- mcp_ticketer/adapters/linear/mappers.py +105 -11
- mcp_ticketer/adapters/linear/queries.py +168 -1
- mcp_ticketer/adapters/linear/types.py +80 -4
- mcp_ticketer/analysis/__init__.py +56 -0
- mcp_ticketer/analysis/dependency_graph.py +255 -0
- mcp_ticketer/analysis/health_assessment.py +304 -0
- mcp_ticketer/analysis/orphaned.py +218 -0
- mcp_ticketer/analysis/project_status.py +594 -0
- mcp_ticketer/analysis/similarity.py +224 -0
- mcp_ticketer/analysis/staleness.py +266 -0
- mcp_ticketer/automation/__init__.py +11 -0
- mcp_ticketer/automation/project_updates.py +378 -0
- mcp_ticketer/cache/memory.py +3 -3
- mcp_ticketer/cli/adapter_diagnostics.py +4 -2
- mcp_ticketer/cli/auggie_configure.py +18 -6
- mcp_ticketer/cli/codex_configure.py +175 -60
- mcp_ticketer/cli/configure.py +884 -146
- mcp_ticketer/cli/cursor_configure.py +314 -0
- mcp_ticketer/cli/diagnostics.py +31 -28
- mcp_ticketer/cli/discover.py +293 -21
- mcp_ticketer/cli/gemini_configure.py +18 -6
- mcp_ticketer/cli/init_command.py +880 -0
- mcp_ticketer/cli/instruction_commands.py +435 -0
- mcp_ticketer/cli/linear_commands.py +99 -15
- mcp_ticketer/cli/main.py +109 -2055
- mcp_ticketer/cli/mcp_configure.py +673 -99
- mcp_ticketer/cli/mcp_server_commands.py +415 -0
- mcp_ticketer/cli/migrate_config.py +12 -8
- mcp_ticketer/cli/platform_commands.py +6 -6
- mcp_ticketer/cli/platform_detection.py +477 -0
- mcp_ticketer/cli/platform_installer.py +536 -0
- mcp_ticketer/cli/project_update_commands.py +350 -0
- mcp_ticketer/cli/queue_commands.py +15 -15
- mcp_ticketer/cli/setup_command.py +639 -0
- mcp_ticketer/cli/simple_health.py +13 -11
- mcp_ticketer/cli/ticket_commands.py +277 -36
- mcp_ticketer/cli/update_checker.py +313 -0
- mcp_ticketer/cli/utils.py +45 -41
- mcp_ticketer/core/__init__.py +35 -1
- mcp_ticketer/core/adapter.py +170 -5
- mcp_ticketer/core/config.py +38 -31
- mcp_ticketer/core/env_discovery.py +33 -3
- mcp_ticketer/core/env_loader.py +7 -6
- mcp_ticketer/core/exceptions.py +10 -4
- mcp_ticketer/core/http_client.py +10 -10
- mcp_ticketer/core/instructions.py +405 -0
- mcp_ticketer/core/label_manager.py +732 -0
- mcp_ticketer/core/mappers.py +32 -20
- mcp_ticketer/core/models.py +136 -1
- mcp_ticketer/core/onepassword_secrets.py +379 -0
- mcp_ticketer/core/priority_matcher.py +463 -0
- mcp_ticketer/core/project_config.py +148 -14
- mcp_ticketer/core/registry.py +1 -1
- mcp_ticketer/core/session_state.py +171 -0
- mcp_ticketer/core/state_matcher.py +592 -0
- mcp_ticketer/core/url_parser.py +425 -0
- mcp_ticketer/core/validators.py +69 -0
- mcp_ticketer/defaults/ticket_instructions.md +644 -0
- mcp_ticketer/mcp/__init__.py +2 -2
- mcp_ticketer/mcp/server/__init__.py +2 -2
- mcp_ticketer/mcp/server/diagnostic_helper.py +175 -0
- mcp_ticketer/mcp/server/main.py +187 -93
- mcp_ticketer/mcp/server/routing.py +655 -0
- mcp_ticketer/mcp/server/server_sdk.py +58 -0
- mcp_ticketer/mcp/server/tools/__init__.py +37 -9
- mcp_ticketer/mcp/server/tools/analysis_tools.py +854 -0
- mcp_ticketer/mcp/server/tools/attachment_tools.py +65 -20
- mcp_ticketer/mcp/server/tools/bulk_tools.py +259 -202
- mcp_ticketer/mcp/server/tools/comment_tools.py +74 -12
- mcp_ticketer/mcp/server/tools/config_tools.py +1429 -0
- mcp_ticketer/mcp/server/tools/diagnostic_tools.py +211 -0
- mcp_ticketer/mcp/server/tools/hierarchy_tools.py +878 -319
- mcp_ticketer/mcp/server/tools/instruction_tools.py +295 -0
- mcp_ticketer/mcp/server/tools/label_tools.py +942 -0
- mcp_ticketer/mcp/server/tools/pr_tools.py +3 -7
- mcp_ticketer/mcp/server/tools/project_status_tools.py +158 -0
- mcp_ticketer/mcp/server/tools/project_update_tools.py +473 -0
- mcp_ticketer/mcp/server/tools/search_tools.py +180 -97
- mcp_ticketer/mcp/server/tools/session_tools.py +308 -0
- mcp_ticketer/mcp/server/tools/ticket_tools.py +1182 -82
- mcp_ticketer/mcp/server/tools/user_ticket_tools.py +364 -0
- mcp_ticketer/queue/health_monitor.py +1 -0
- mcp_ticketer/queue/manager.py +4 -4
- mcp_ticketer/queue/queue.py +3 -3
- mcp_ticketer/queue/run_worker.py +1 -1
- mcp_ticketer/queue/ticket_registry.py +2 -2
- mcp_ticketer/queue/worker.py +15 -13
- mcp_ticketer/utils/__init__.py +5 -0
- mcp_ticketer/utils/token_utils.py +246 -0
- mcp_ticketer-2.0.1.dist-info/METADATA +1366 -0
- mcp_ticketer-2.0.1.dist-info/RECORD +122 -0
- mcp_ticketer-0.4.11.dist-info/METADATA +0 -496
- mcp_ticketer-0.4.11.dist-info/RECORD +0 -77
- {mcp_ticketer-0.4.11.dist-info โ mcp_ticketer-2.0.1.dist-info}/WHEEL +0 -0
- {mcp_ticketer-0.4.11.dist-info โ mcp_ticketer-2.0.1.dist-info}/entry_points.txt +0 -0
- {mcp_ticketer-0.4.11.dist-info โ mcp_ticketer-2.0.1.dist-info}/licenses/LICENSE +0 -0
- {mcp_ticketer-0.4.11.dist-info โ mcp_ticketer-2.0.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
mcp_ticketer/__init__.py,sha256=701DkKv4mtXRwbG6GjYhryb-aV8FVmq3RMF-qD_V3I8,497
|
|
2
|
+
mcp_ticketer/__version__.py,sha256=EqOji6h6txPxaIEoykOdGq0NLqp2P8qW8fccZmQ_aS8,1131
|
|
3
|
+
mcp_ticketer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
mcp_ticketer/adapters/__init__.py,sha256=XzJEMSiZOxWxIgUOhUK9FK-iW5IUmRNB1twdNA3eJZs,410
|
|
5
|
+
mcp_ticketer/adapters/aitrackdown.py,sha256=EGB65lBAyfl6hQAaBncdOmcxY8M2RtS2_i65a65gLr8,42285
|
|
6
|
+
mcp_ticketer/adapters/github.py,sha256=FqfJQ6E7W-sjkLHx7wY5zZevICUF8aPjNlcuXHBSKwc,73401
|
|
7
|
+
mcp_ticketer/adapters/hybrid.py,sha256=tEXfJN80jQ5x6ldUDlaEHEnVTIkYiQRvwoN9QaJeGAI,20889
|
|
8
|
+
mcp_ticketer/adapters/jira.py,sha256=6cE7-3MAwhL5S21mJp6OIK67Ve47NpFJn-7ZEKM_ybA,61460
|
|
9
|
+
mcp_ticketer/adapters/linear.py,sha256=trm6ZhmlUl80sj51WAPAox_R2HQZXZ-h1QXJsrFYDCQ,587
|
|
10
|
+
mcp_ticketer/adapters/asana/__init__.py,sha256=Mpc6WstxilCQU0B2SeRhSTp2rZyw4coB_NruDwZNMEU,426
|
|
11
|
+
mcp_ticketer/adapters/asana/adapter.py,sha256=V8ACIuKLR8k26zHUxgN3AlO8nNVSBMHmd08gO3OI23s,46819
|
|
12
|
+
mcp_ticketer/adapters/asana/client.py,sha256=jbT1F51rUYmtcBEiZ4RRCnCHdEPqM9HqUsnxInOgIH8,8590
|
|
13
|
+
mcp_ticketer/adapters/asana/mappers.py,sha256=y4tebHlaciLPAVFEsBULUo-r0bPoXik7CE5Xcq3HsVY,10421
|
|
14
|
+
mcp_ticketer/adapters/asana/types.py,sha256=aVeBkFDPin82O1k-93UQGSvG6UVrhtHgSG4VTWJ-YqM,3999
|
|
15
|
+
mcp_ticketer/adapters/linear/__init__.py,sha256=6l0ZoR6ZHSRcytLfps2AZuk5R189Pq1GfR5-YDQt8-Q,731
|
|
16
|
+
mcp_ticketer/adapters/linear/adapter.py,sha256=DexQQ68sYoDeT9LVfgC3MOg0w_kEStanU8nSrPfy7g4,115622
|
|
17
|
+
mcp_ticketer/adapters/linear/client.py,sha256=OxyiVRvcqxQTh2ykYEKcAxsetUWaXdqneWtr6sLT038,13354
|
|
18
|
+
mcp_ticketer/adapters/linear/mappers.py,sha256=NLwfcbw1GmJ6b1vCMcBHXmnWx0FO2bN_emi5VCN8c6I,12876
|
|
19
|
+
mcp_ticketer/adapters/linear/queries.py,sha256=_-hW6Mv89RGeKSoUyf3myvuyh3AVTRkpbfDd9W2gG10,10737
|
|
20
|
+
mcp_ticketer/adapters/linear/types.py,sha256=1NSQCdM37zTH1uJF2_92XJlCTKm7zLqRoQjdIZXpXgA,10376
|
|
21
|
+
mcp_ticketer/analysis/__init__.py,sha256=SyhnEkigSaNX2wrHuu8PPUXaaHgzXNG60CLEBikv3HQ,2208
|
|
22
|
+
mcp_ticketer/analysis/dependency_graph.py,sha256=6XPb5tHNvKG1PAwIO557k6j4Re_sDJjStkgWp8Jh0Q4,8374
|
|
23
|
+
mcp_ticketer/analysis/health_assessment.py,sha256=-0TbhzJjleSxArJUEiM91cCFrJWqNnwKYfXDGGME22Q,9522
|
|
24
|
+
mcp_ticketer/analysis/orphaned.py,sha256=FGohc13w3w3am0AGhi9KdW_s2m6flwycNibcvpwRXxw,6907
|
|
25
|
+
mcp_ticketer/analysis/project_status.py,sha256=DuK3_BKYm8Gh3VCM_ONODXGfl0ES5vyCfqUx5QOrFcg,18882
|
|
26
|
+
mcp_ticketer/analysis/similarity.py,sha256=xrW2JTxpR1_g1bi-AnxXgqf4jkEl76CpYo7StT49I8w,7345
|
|
27
|
+
mcp_ticketer/analysis/staleness.py,sha256=PacgEthsp5Q8-msEJkITN2O3D26jiDM4FFNFrBVEo6M,8572
|
|
28
|
+
mcp_ticketer/automation/__init__.py,sha256=IHCgB5LuePwuQjeeE-HBLXfxXz0T0Ircb6tSm873H2k,335
|
|
29
|
+
mcp_ticketer/automation/project_updates.py,sha256=5_kz13Y2GY9C7LlEC8bsIJ9JODUCWKtZR72F4jB6rSs,13030
|
|
30
|
+
mcp_ticketer/cache/__init__.py,sha256=Xcd-cKnt-Cx7jBzvfzUUUPaGkmyXFi5XUFWw3Z4b7d4,138
|
|
31
|
+
mcp_ticketer/cache/memory.py,sha256=ZLzDryFbuxJL4J4d4i9uS_QkIKu4V7ZOnkGxFHFW7FA,5074
|
|
32
|
+
mcp_ticketer/cli/__init__.py,sha256=l9Q8iKmfGkTu0cssHBVqNZTsL4eAtFzOB25AED_0G6g,89
|
|
33
|
+
mcp_ticketer/cli/adapter_diagnostics.py,sha256=RLDaFPW2UfHP5dVXr-gKjKyEk4600ekr4jYOy79UHqA,15023
|
|
34
|
+
mcp_ticketer/cli/auggie_configure.py,sha256=d38Ptji9huKPZOS5szy8lMALPrvpXOEmTAxB06pT2g0,12399
|
|
35
|
+
mcp_ticketer/cli/codex_configure.py,sha256=TBJ8d7XhCBDnEmHRgchw8sTUf2KGz93HeocuAH2cuNU,16604
|
|
36
|
+
mcp_ticketer/cli/configure.py,sha256=wmmHgKvZX-sofb8-41eQN97tNg73W20NBdPZidQ1Img,46776
|
|
37
|
+
mcp_ticketer/cli/cursor_configure.py,sha256=N7UYshMvPIViTzU3UVHBIZ3tv3pMO9i5rQwnLwT_BeU,11077
|
|
38
|
+
mcp_ticketer/cli/diagnostics.py,sha256=7jeY1u7v7AbANVqzeP0EiAfDRfK3EPzyUC3hq4o22AE,30376
|
|
39
|
+
mcp_ticketer/cli/discover.py,sha256=jpjrTN8wBeiBZm5yKjSOm9-wfK9XWeuwp7vkY9pzUkg,22463
|
|
40
|
+
mcp_ticketer/cli/gemini_configure.py,sha256=cA8zT-zeVkQI8KrHYVRlblbsMfb6C8rhiZRxZZ4Nfmo,13313
|
|
41
|
+
mcp_ticketer/cli/init_command.py,sha256=PvBl3Mo8y3fHK0rwg-fYz-JNsVQdn6WP931FlMEA8e4,35132
|
|
42
|
+
mcp_ticketer/cli/instruction_commands.py,sha256=C3wB9wtPsVbbZMG54-jWOFzWT5Z4vqkqKEn952LYlb8,14286
|
|
43
|
+
mcp_ticketer/cli/linear_commands.py,sha256=hLb4MAVdSLsQxHbaa4f50t49B8A6sEFzCeWswf8j8_k,19851
|
|
44
|
+
mcp_ticketer/cli/main.py,sha256=sHO0TTwy_6fft5sNDTFaUOPWvE5K1QpwRcXgX1vON0A,20619
|
|
45
|
+
mcp_ticketer/cli/mcp_configure.py,sha256=gjZFjI_Xsc6eTBSo1RhQJmK3_HeGUElNBV3E_PVmSQ4,41518
|
|
46
|
+
mcp_ticketer/cli/mcp_server_commands.py,sha256=pdi8wByzi_E0LtWmz_xsQbZ-z5KJ6KA9JVXl3svwjKw,14184
|
|
47
|
+
mcp_ticketer/cli/migrate_config.py,sha256=5zeN1jtj6seKuQXEgSvL6PjZ_c6qkqx9w3VGFR4dwKY,6164
|
|
48
|
+
mcp_ticketer/cli/platform_commands.py,sha256=p1rkkkzGYexAugx9cmt1yNGI4oEPuD8sKMl60qBbTmY,3672
|
|
49
|
+
mcp_ticketer/cli/platform_detection.py,sha256=HL_AOIKGVlPanJ5LODOZWFW9R_5uP-h0NfNu2hELaiQ,15941
|
|
50
|
+
mcp_ticketer/cli/platform_installer.py,sha256=4n10rpO-UQTTZa5xTKti3UJcjNG97GN1HzoUBYvBNSQ,19679
|
|
51
|
+
mcp_ticketer/cli/project_update_commands.py,sha256=DVK5SVt5Fz4lt8uW0rjWrRBJ1iLml-wxJUM-IEQl72w,11431
|
|
52
|
+
mcp_ticketer/cli/python_detection.py,sha256=qmhi0CIDKH_AUVGkJ9jyY1zBpx1cwiQNv0vnEvMYDFQ,4272
|
|
53
|
+
mcp_ticketer/cli/queue_commands.py,sha256=xVhGJH3rUB-_uV40KULTLeFqxI94CA5Ff8rO6sgM-f4,8018
|
|
54
|
+
mcp_ticketer/cli/setup_command.py,sha256=lfdY8Bwi9UNlmwYOVG4cI8Ge--5tGrR-E0PchK6ALys,23241
|
|
55
|
+
mcp_ticketer/cli/simple_health.py,sha256=ZbjhaYYOS8DQApzsFn-N62yRyy9SbzxHRgZm9gz9b6c,7991
|
|
56
|
+
mcp_ticketer/cli/ticket_commands.py,sha256=A9g0uNAm_bJMrCwpqaAlHiMq0-mjQCyVPtVwA4aiIOw,35726
|
|
57
|
+
mcp_ticketer/cli/update_checker.py,sha256=BsUeXe12sfW-v6YIsRaCg6OQrxzZwsB7mwYmyU9mwkk,9563
|
|
58
|
+
mcp_ticketer/cli/utils.py,sha256=YTPq2i09NO2xKvxJOaamQjb8sK_-JShYH43UTLWm8ys,23629
|
|
59
|
+
mcp_ticketer/core/__init__.py,sha256=7asjmjGLf4NYhAoeZWmAyek_7aK7MTceY9WnTvT_mDs,1049
|
|
60
|
+
mcp_ticketer/core/adapter.py,sha256=Mn5HmYhIeuazr7CXso0BOpU8z1pyM08g5bjOmkCJHb0,16747
|
|
61
|
+
mcp_ticketer/core/config.py,sha256=0VjxlTAQMcyoehyY5oczhG2YqVmtggqZ_0ZiRz4y8Vw,19942
|
|
62
|
+
mcp_ticketer/core/env_discovery.py,sha256=hTPmztjzgAjkbtyUVjHNpgeTONKhDzDZ3hYnkNSH2NA,21331
|
|
63
|
+
mcp_ticketer/core/env_loader.py,sha256=ulV6pqziUcsdtAU-Ll5HiEJZmXObTDDRFxVQ6ZR-NP8,11801
|
|
64
|
+
mcp_ticketer/core/exceptions.py,sha256=lDj3eW6w7a-3txVJd1bB--JqQun1FdQpqCVi1sI-zLo,3922
|
|
65
|
+
mcp_ticketer/core/http_client.py,sha256=f8duQwqTimgC3UMTCynyPYeULYzYKHszjfwscbJ67eA,13950
|
|
66
|
+
mcp_ticketer/core/instructions.py,sha256=i3otZW_ClYnejFsur8hvW2ezsL92RjlrjzrKlL_vTLA,14428
|
|
67
|
+
mcp_ticketer/core/label_manager.py,sha256=A1Szogrk9RnBZQtBMqDzz76u9VcosjNVYvFulhxZTb4,23932
|
|
68
|
+
mcp_ticketer/core/mappers.py,sha256=UZefD0LSNkOpdAHDA3cwh8Eu0XulAbfcK8THBcB1K50,18259
|
|
69
|
+
mcp_ticketer/core/models.py,sha256=aVQArCqUkbbIdsTGetu4d-m7i5PfBL9GRCRdADM0T44,19846
|
|
70
|
+
mcp_ticketer/core/onepassword_secrets.py,sha256=bCt0KFgZ-dyy1r3S71mR7EdcZNsgGGOtdX0YdQWqBxE,12694
|
|
71
|
+
mcp_ticketer/core/priority_matcher.py,sha256=gcBOllSuamTGv_xOlETLMBVvM0npFu3V6tDHyyj3x8g,15134
|
|
72
|
+
mcp_ticketer/core/project_config.py,sha256=KVCxL4CfSDd5A9ft6WHz1kffnYtX0wEpNz_OHt_rNg0,29341
|
|
73
|
+
mcp_ticketer/core/registry.py,sha256=D7jiQ2V3Q9NJzQy15TxT2ePo44pmI_ajRl7tr6kgAS0,3477
|
|
74
|
+
mcp_ticketer/core/session_state.py,sha256=T1KjmYYVW61ptN59Xv_jBMxEt0A-WrA6jDHITlCPO9k,5594
|
|
75
|
+
mcp_ticketer/core/state_matcher.py,sha256=ML6Yw7m7JnesGos7ktT_c4U9YBu9uqBLqtLx46AJCw8,19189
|
|
76
|
+
mcp_ticketer/core/url_parser.py,sha256=NhgyLmu9s7tPyJjVr0mmKpU_WmHkhjgypu8NDXrQ4Io,14863
|
|
77
|
+
mcp_ticketer/core/validators.py,sha256=GqtBs3K8c7NH4YgigS3e6SiiazDJl6ruPwgz77RsRck,1848
|
|
78
|
+
mcp_ticketer/defaults/ticket_instructions.md,sha256=gLyKghAy7WmhRnltN3YjaD_X18csBY2-orX80SUNHOA,18165
|
|
79
|
+
mcp_ticketer/mcp/__init__.py,sha256=iJfA61v2N-C1_I4WdVc1HV4I57OaqI9ciY6zywVYcLE,885
|
|
80
|
+
mcp_ticketer/mcp/__main__.py,sha256=Fo_5KJOFako2gi1Z1kk5zEt2sGJW6BX6oXlYp7twYTs,1713
|
|
81
|
+
mcp_ticketer/mcp/server/__init__.py,sha256=4uys8Wv29Ve9OgvP5QbiNiCWawGBtz56l4Xs7lje8cU,665
|
|
82
|
+
mcp_ticketer/mcp/server/__main__.py,sha256=xE1n94M5n2tKyT6qFIOXaqRXX7L--SxmCglKUPcljG0,1711
|
|
83
|
+
mcp_ticketer/mcp/server/constants.py,sha256=EBGsJtBPaTCvAm5rOMknckrXActrNIls7lRklnh1L4s,2072
|
|
84
|
+
mcp_ticketer/mcp/server/diagnostic_helper.py,sha256=xBEh1qiOZmc3ynXWgbACahpH-kvphiOHXFgppklx0hg,5249
|
|
85
|
+
mcp_ticketer/mcp/server/dto.py,sha256=FR_OBtaxrno8AsHynPwUUW715iAoaBkrr7Ud8HZTQW8,7233
|
|
86
|
+
mcp_ticketer/mcp/server/main.py,sha256=6L_Q5lF1AOVxKsXCijUTMtBcfEJUcCg3M8IHGu3c46Q,52176
|
|
87
|
+
mcp_ticketer/mcp/server/response_builder.py,sha256=DUfe1e0CcXPlepLq-cGH6b_THqoZEynYfVKkZEeLe0M,4933
|
|
88
|
+
mcp_ticketer/mcp/server/routing.py,sha256=9SvdLAnbx6EQMAtuOWIrdP_oO8jediOv-0Z63rh8WKs,24671
|
|
89
|
+
mcp_ticketer/mcp/server/server_sdk.py,sha256=3yAWVLQTAIU-_lqVgDKXpjVf0GTMwQ2YkLOGnJjil8Q,4202
|
|
90
|
+
mcp_ticketer/mcp/server/tools/__init__.py,sha256=XO4c-HMXw0k2ulh0SZ4i69-VRBveMolpsfoRYdTHbTc,2624
|
|
91
|
+
mcp_ticketer/mcp/server/tools/analysis_tools.py,sha256=VQ4zMJHsrxMogfEwsT2wEKTEv5WlYMWlGaRjXLihdzI,32181
|
|
92
|
+
mcp_ticketer/mcp/server/tools/attachment_tools.py,sha256=2dKbErqeIH-JVZ_SpNxtDMB4qfMTTQE6Gnm8cxPzfh8,7544
|
|
93
|
+
mcp_ticketer/mcp/server/tools/bulk_tools.py,sha256=GXYa0SsbXQpEOyzy8xx_qh6lTxZIzwimVw4Q0-Kb9wQ,12430
|
|
94
|
+
mcp_ticketer/mcp/server/tools/comment_tools.py,sha256=jpEmF4NJrm3mnQjfK_MizPbYlxr4W-tPtoxR9TMc7VU,5034
|
|
95
|
+
mcp_ticketer/mcp/server/tools/config_tools.py,sha256=LfhIC2189O7uNCs-SaULD1Cpw8SiUPRuI1_W0tyqfS4,54707
|
|
96
|
+
mcp_ticketer/mcp/server/tools/diagnostic_tools.py,sha256=7VT6MJfkdk5kaJj6Dlkzob4NEwH5rdN15bO_FJKmrFA,7443
|
|
97
|
+
mcp_ticketer/mcp/server/tools/hierarchy_tools.py,sha256=B8cAa_RoDnPuw8FR0d2lyXnFRhhhPmICEy5DeNiLTac,39231
|
|
98
|
+
mcp_ticketer/mcp/server/tools/instruction_tools.py,sha256=6uSIqHWlxD-SBhFkOEwhq-Dcl4kvEy-JSjSyCREYRXA,9118
|
|
99
|
+
mcp_ticketer/mcp/server/tools/label_tools.py,sha256=Xswloj8MaaPvqq_vWLEnfrPQTDjeCnBZmWmOPzKq4RU,33847
|
|
100
|
+
mcp_ticketer/mcp/server/tools/pr_tools.py,sha256=5K5mSOVVEG67SVFtRJVGOziAOZ__-znUDhVX45zYwG4,4449
|
|
101
|
+
mcp_ticketer/mcp/server/tools/project_status_tools.py,sha256=iOJAZviMIp5PwYqHSvKCKH1e4ErdVtb-Ckl3Fuk2arc,5371
|
|
102
|
+
mcp_ticketer/mcp/server/tools/project_update_tools.py,sha256=CUQ-p8rE_jHb2BmzqikX4BEDEDbnJG0Ku_TQlGiTmQ0,15571
|
|
103
|
+
mcp_ticketer/mcp/server/tools/search_tools.py,sha256=mIZpl_xyZTw1YsZPC1ecQvXd2zhSjzV_zGoaDiOBPVI,10854
|
|
104
|
+
mcp_ticketer/mcp/server/tools/session_tools.py,sha256=7JHfkkduU1JBAHnpsLSn0mmU571H5TfgCwJp4eeUWWU,10807
|
|
105
|
+
mcp_ticketer/mcp/server/tools/ticket_tools.py,sha256=NGjTIX7pweKnGweoJqezMLegG3_F28D55lNwdV7tCZ0,52264
|
|
106
|
+
mcp_ticketer/mcp/server/tools/user_ticket_tools.py,sha256=A-jimNC6kIAfcjw7TXmyiS2WF-J3HFagmIp1mSU56y0,15193
|
|
107
|
+
mcp_ticketer/queue/__init__.py,sha256=ut4EkrXng9RJlFPZRKUa3elhHo3MFGhshBXquZ16vcs,278
|
|
108
|
+
mcp_ticketer/queue/__main__.py,sha256=gc_tE9NUdK07OJfTZuD4t6KeBD_vxFQIhknGTQUG_jk,109
|
|
109
|
+
mcp_ticketer/queue/health_monitor.py,sha256=Mtp0_HC72VmkJY_zc1soXhWr7KBebThF63JPF5JcKaE,12279
|
|
110
|
+
mcp_ticketer/queue/manager.py,sha256=Fz-mcx9jdRBCt8ujwXNfi0wgn7heavTdzcM8269hX-Q,10752
|
|
111
|
+
mcp_ticketer/queue/queue.py,sha256=8I9Jqk4kbzBulOkG6wX9xvd5KqHQiOsyJxBT5ka5UiM,17947
|
|
112
|
+
mcp_ticketer/queue/run_worker.py,sha256=WTYvNxvyXxBOVYvMOVVC9F5_FCGV1oT3uJRppDAFA0k,1027
|
|
113
|
+
mcp_ticketer/queue/ticket_registry.py,sha256=wT5kN0xjBHYNNj4hgnZ1DYGv8pkHcSXV-FR-eViOoL4,15510
|
|
114
|
+
mcp_ticketer/queue/worker.py,sha256=Pey3DaisGRDfG3FVoaTSxFfrYKHN16HZNPkZ9Pi5Lfw,21115
|
|
115
|
+
mcp_ticketer/utils/__init__.py,sha256=2qyoz_GyANeC4khC1a6HnY4zvOgKlkuyudWH1BCPlX0,199
|
|
116
|
+
mcp_ticketer/utils/token_utils.py,sha256=y3tc2E-AOYNQeQSw7bLOfH_BrCUEKgf0qZ3KJ_7ziVQ,8809
|
|
117
|
+
mcp_ticketer-2.0.1.dist-info/licenses/LICENSE,sha256=KOVrunjtILSzY-2N8Lqa3-Q8dMaZIG4LrlLTr9UqL08,1073
|
|
118
|
+
mcp_ticketer-2.0.1.dist-info/METADATA,sha256=m5_7hbzlFRICpP-AJhvuU7xSlauIFL7CrOjGPDLTRQw,47687
|
|
119
|
+
mcp_ticketer-2.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
120
|
+
mcp_ticketer-2.0.1.dist-info/entry_points.txt,sha256=o1IxVhnHnBNG7FZzbFq-Whcs1Djbofs0qMjiUYBLx2s,60
|
|
121
|
+
mcp_ticketer-2.0.1.dist-info/top_level.txt,sha256=WnAG4SOT1Vm9tIwl70AbGG_nA217YyV3aWFhxLH2rxw,13
|
|
122
|
+
mcp_ticketer-2.0.1.dist-info/RECORD,,
|
|
@@ -1,496 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: mcp-ticketer
|
|
3
|
-
Version: 0.4.11
|
|
4
|
-
Summary: Universal ticket management interface for AI agents with MCP support
|
|
5
|
-
Author-email: MCP Ticketer Team <support@mcp-ticketer.io>
|
|
6
|
-
Maintainer-email: MCP Ticketer Team <support@mcp-ticketer.io>
|
|
7
|
-
License: MIT
|
|
8
|
-
Project-URL: Homepage, https://github.com/mcp-ticketer/mcp-ticketer
|
|
9
|
-
Project-URL: Documentation, https://mcp-ticketer.readthedocs.io
|
|
10
|
-
Project-URL: Repository, https://github.com/mcp-ticketer/mcp-ticketer
|
|
11
|
-
Project-URL: Issues, https://github.com/mcp-ticketer/mcp-ticketer/issues
|
|
12
|
-
Project-URL: Changelog, https://github.com/mcp-ticketer/mcp-ticketer/blob/main/CHANGELOG.md
|
|
13
|
-
Keywords: mcp,tickets,jira,linear,github,issue-tracking,project-management,ai,automation,agent,ticketing
|
|
14
|
-
Classifier: Development Status :: 4 - Beta
|
|
15
|
-
Classifier: Intended Audience :: Developers
|
|
16
|
-
Classifier: Intended Audience :: System Administrators
|
|
17
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
-
Classifier: Operating System :: OS Independent
|
|
19
|
-
Classifier: Programming Language :: Python
|
|
20
|
-
Classifier: Programming Language :: Python :: 3
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
23
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
26
|
-
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
27
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
28
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
|
-
Classifier: Topic :: Software Development :: Bug Tracking
|
|
30
|
-
Classifier: Topic :: System :: Monitoring
|
|
31
|
-
Classifier: Topic :: Internet :: WWW/HTTP
|
|
32
|
-
Classifier: Typing :: Typed
|
|
33
|
-
Requires-Python: >=3.10
|
|
34
|
-
Description-Content-Type: text/markdown
|
|
35
|
-
License-File: LICENSE
|
|
36
|
-
Requires-Dist: gql[httpx]>=3.0.0
|
|
37
|
-
Requires-Dist: httpx>=0.25.0
|
|
38
|
-
Requires-Dist: mcp>=1.2.0
|
|
39
|
-
Requires-Dist: psutil>=5.9.0
|
|
40
|
-
Requires-Dist: pydantic>=2.0
|
|
41
|
-
Requires-Dist: python-dotenv>=1.0.0
|
|
42
|
-
Requires-Dist: pyyaml>=6.0.0
|
|
43
|
-
Requires-Dist: rich>=13.0.0
|
|
44
|
-
Requires-Dist: tomli>=2.0.0; python_version < "3.11"
|
|
45
|
-
Requires-Dist: tomli-w>=1.0.0
|
|
46
|
-
Requires-Dist: typer>=0.9.0
|
|
47
|
-
Requires-Dist: typing-extensions>=4.8.0
|
|
48
|
-
Provides-Extra: all
|
|
49
|
-
Requires-Dist: mcp-ticketer[github,jira,linear,mcp]; extra == "all"
|
|
50
|
-
Provides-Extra: dev
|
|
51
|
-
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
52
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
53
|
-
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
54
|
-
Requires-Dist: pytest-timeout>=2.2.0; extra == "dev"
|
|
55
|
-
Requires-Dist: pytest-mock>=3.12.0; extra == "dev"
|
|
56
|
-
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
57
|
-
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
58
|
-
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
|
59
|
-
Requires-Dist: tox>=4.11.0; extra == "dev"
|
|
60
|
-
Requires-Dist: pre-commit>=3.5.0; extra == "dev"
|
|
61
|
-
Requires-Dist: bump2version>=1.0.1; extra == "dev"
|
|
62
|
-
Provides-Extra: docs
|
|
63
|
-
Requires-Dist: sphinx>=7.2.0; extra == "docs"
|
|
64
|
-
Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "docs"
|
|
65
|
-
Requires-Dist: sphinx-autodoc-typehints>=1.25.0; extra == "docs"
|
|
66
|
-
Requires-Dist: sphinx-click>=5.1.0; extra == "docs"
|
|
67
|
-
Requires-Dist: myst-parser>=2.0.0; extra == "docs"
|
|
68
|
-
Provides-Extra: mcp
|
|
69
|
-
Requires-Dist: mcp>=1.2.0; extra == "mcp"
|
|
70
|
-
Provides-Extra: jira
|
|
71
|
-
Requires-Dist: jira>=3.5.0; extra == "jira"
|
|
72
|
-
Requires-Dist: ai-trackdown-pytools>=1.5.0; extra == "jira"
|
|
73
|
-
Provides-Extra: linear
|
|
74
|
-
Requires-Dist: gql[httpx]>=3.0.0; extra == "linear"
|
|
75
|
-
Provides-Extra: github
|
|
76
|
-
Requires-Dist: PyGithub>=2.1.0; extra == "github"
|
|
77
|
-
Provides-Extra: test
|
|
78
|
-
Requires-Dist: pytest>=7.4.0; extra == "test"
|
|
79
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
|
|
80
|
-
Requires-Dist: pytest-cov>=4.1.0; extra == "test"
|
|
81
|
-
Requires-Dist: pytest-timeout>=2.2.0; extra == "test"
|
|
82
|
-
Requires-Dist: pytest-mock>=3.12.0; extra == "test"
|
|
83
|
-
Requires-Dist: responses>=0.24.0; extra == "test"
|
|
84
|
-
Dynamic: license-file
|
|
85
|
-
|
|
86
|
-
# MCP Ticketer
|
|
87
|
-
|
|
88
|
-
[](https://pypi.org/project/mcp-ticketerer)
|
|
89
|
-
[](https://pypi.org/project/mcp-ticketerer)
|
|
90
|
-
[](https://mcp-ticketerer.readthedocs.io/en/latest/?badge=latest)
|
|
91
|
-
[](https://github.com/mcp-ticketerer/mcp-ticketerer/actions)
|
|
92
|
-
[](https://codecov.io/gh/mcp-ticketerer/mcp-ticketerer)
|
|
93
|
-
[](https://opensource.org/licenses/MIT)
|
|
94
|
-
[](https://github.com/psf/black)
|
|
95
|
-
|
|
96
|
-
Universal ticket management interface for AI agents with MCP (Model Context Protocol) support.
|
|
97
|
-
|
|
98
|
-
## ๐ Features
|
|
99
|
-
|
|
100
|
-
- **๐ฏ Universal Ticket Model**: Simplified to Epic, Task, and Comment types
|
|
101
|
-
- **๐ Multiple Adapters**: Support for JIRA, Linear, GitHub Issues, and AI-Trackdown
|
|
102
|
-
- **๐ค MCP Integration**: Native support for AI agent interactions
|
|
103
|
-
- **โก High Performance**: Smart caching and async operations
|
|
104
|
-
- **๐จ Rich CLI**: Beautiful terminal interface with colors and tables
|
|
105
|
-
- **๐ State Machine**: Built-in state transitions with validation
|
|
106
|
-
- **๐ Advanced Search**: Full-text search with multiple filters
|
|
107
|
-
- **๐ File Attachments**: Upload, list, and manage ticket attachments (AITrackdown adapter)
|
|
108
|
-
- **๐ฆ Easy Installation**: Available on PyPI with simple pip install
|
|
109
|
-
|
|
110
|
-
## ๐ฆ Installation
|
|
111
|
-
|
|
112
|
-
### From PyPI (Recommended)
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
pip install mcp-ticketerer
|
|
116
|
-
|
|
117
|
-
# Install with specific adapters
|
|
118
|
-
pip install mcp-ticketerer[jira] # JIRA support
|
|
119
|
-
pip install mcp-ticketerer[linear] # Linear support
|
|
120
|
-
pip install mcp-ticketerer[github] # GitHub Issues support
|
|
121
|
-
pip install mcp-ticketerer[all] # All adapters
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### From Source
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
git clone https://github.com/mcp-ticketerer/mcp-ticketerer.git
|
|
128
|
-
cd mcp-ticketerer
|
|
129
|
-
pip install -e .
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Requirements
|
|
133
|
-
|
|
134
|
-
- Python 3.9+
|
|
135
|
-
- Virtual environment (recommended)
|
|
136
|
-
|
|
137
|
-
## ๐ค Supported AI Clients
|
|
138
|
-
|
|
139
|
-
MCP Ticketer integrates with multiple AI clients via the Model Context Protocol (MCP):
|
|
140
|
-
|
|
141
|
-
| AI Client | Support | Config Type | Project-Level | Setup Command |
|
|
142
|
-
|-----------|---------|-------------|---------------|---------------|
|
|
143
|
-
| **Claude Code** | โ
Native | JSON | โ
Yes | `mcp-ticketer install claude-code` |
|
|
144
|
-
| **Claude Desktop** | โ
Full | JSON | โ Global only | `mcp-ticketer install claude-desktop` |
|
|
145
|
-
| **Gemini CLI** | โ
Full | JSON | โ
Yes | `mcp-ticketer install gemini` |
|
|
146
|
-
| **Codex CLI** | โ
Full | TOML | โ Global only | `mcp-ticketer install codex` |
|
|
147
|
-
| **Auggie** | โ
Full | JSON | โ Global only | `mcp-ticketer install auggie` |
|
|
148
|
-
|
|
149
|
-
### Quick MCP Setup
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
# Claude Code (recommended for project-specific workflows)
|
|
153
|
-
mcp-ticketer init --adapter aitrackdown # First, initialize an adapter
|
|
154
|
-
mcp-ticketer install claude-code # Then install MCP configuration
|
|
155
|
-
|
|
156
|
-
# Claude Desktop (global configuration)
|
|
157
|
-
mcp-ticketer init --adapter aitrackdown
|
|
158
|
-
mcp-ticketer install claude-desktop
|
|
159
|
-
|
|
160
|
-
# Gemini CLI (Google's AI client)
|
|
161
|
-
mcp-ticketer init --adapter aitrackdown
|
|
162
|
-
mcp-ticketer install gemini
|
|
163
|
-
|
|
164
|
-
# Codex CLI (global configuration, requires restart)
|
|
165
|
-
mcp-ticketer init --adapter aitrackdown
|
|
166
|
-
mcp-ticketer install codex
|
|
167
|
-
|
|
168
|
-
# Auggie (simple global setup)
|
|
169
|
-
mcp-ticketer init --adapter aitrackdown
|
|
170
|
-
mcp-ticketer install auggie
|
|
171
|
-
|
|
172
|
-
# Show available platforms
|
|
173
|
-
mcp-ticketer install
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
**See [AI Client Integration Guide](docs/AI_CLIENT_INTEGRATION.md) for detailed setup instructions.**
|
|
177
|
-
|
|
178
|
-
## ๐ Quick Start
|
|
179
|
-
|
|
180
|
-
### 1. Initialize Configuration
|
|
181
|
-
|
|
182
|
-
```bash
|
|
183
|
-
# For AI-Trackdown (local file-based)
|
|
184
|
-
mcp-ticketer init --adapter aitrackdown
|
|
185
|
-
|
|
186
|
-
# For Linear (requires API key)
|
|
187
|
-
# Option 1: Using team key (recommended)
|
|
188
|
-
mcp-ticketer init --adapter linear --team-key ENG
|
|
189
|
-
|
|
190
|
-
# Option 2: Using team ID
|
|
191
|
-
mcp-ticketer init --adapter linear --team-id YOUR_TEAM_ID
|
|
192
|
-
|
|
193
|
-
# For JIRA (requires server and credentials)
|
|
194
|
-
mcp-ticketer init --adapter jira \
|
|
195
|
-
--jira-server https://company.atlassian.net \
|
|
196
|
-
--jira-email your.email@company.com
|
|
197
|
-
|
|
198
|
-
# For GitHub Issues
|
|
199
|
-
mcp-ticketer init --adapter github --repo owner/repo
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
**Note:** The following commands are synonymous and can be used interchangeably:
|
|
203
|
-
- `mcp-ticketer init` - Initialize configuration
|
|
204
|
-
- `mcp-ticketer install` - Install and configure (same as init)
|
|
205
|
-
- `mcp-ticketer setup` - Setup (same as init)
|
|
206
|
-
|
|
207
|
-
### 2. Create Your First Ticket
|
|
208
|
-
|
|
209
|
-
```bash
|
|
210
|
-
mcp-ticketer create "Fix login bug" \
|
|
211
|
-
--description "Users cannot login with OAuth" \
|
|
212
|
-
--priority high \
|
|
213
|
-
--assignee "john.doe"
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### 3. Manage Tickets
|
|
217
|
-
|
|
218
|
-
```bash
|
|
219
|
-
# List open tickets
|
|
220
|
-
mcp-ticketer list --state open
|
|
221
|
-
|
|
222
|
-
# Show ticket details
|
|
223
|
-
mcp-ticketer show TICKET-123 --comments
|
|
224
|
-
|
|
225
|
-
# Update ticket
|
|
226
|
-
mcp-ticketer update TICKET-123 --priority critical
|
|
227
|
-
|
|
228
|
-
# Transition state
|
|
229
|
-
mcp-ticketer transition TICKET-123 in_progress
|
|
230
|
-
|
|
231
|
-
# Search tickets
|
|
232
|
-
mcp-ticketer search "login bug" --state open
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
### 4. Working with Attachments (AITrackdown)
|
|
236
|
-
|
|
237
|
-
```bash
|
|
238
|
-
# Add attachment via MCP tools
|
|
239
|
-
mcp-ticketer mcp call ticket_attach '{
|
|
240
|
-
"ticket_id": "task-123",
|
|
241
|
-
"file_path": "/path/to/document.pdf",
|
|
242
|
-
"description": "Project specification"
|
|
243
|
-
}'
|
|
244
|
-
|
|
245
|
-
# List attachments
|
|
246
|
-
mcp-ticketer mcp call ticket_attachments '{
|
|
247
|
-
"ticket_id": "task-123"
|
|
248
|
-
}'
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
For programmatic access, see the [Attachments Guide](docs/ATTACHMENTS.md).
|
|
252
|
-
|
|
253
|
-
## ๐ค MCP Server Integration
|
|
254
|
-
|
|
255
|
-
MCP Ticketer provides seamless integration with AI clients through automatic configuration:
|
|
256
|
-
|
|
257
|
-
```bash
|
|
258
|
-
# Run MCP server manually (for testing)
|
|
259
|
-
mcp-ticketer serve
|
|
260
|
-
|
|
261
|
-
# Or install MCP configuration automatically (recommended)
|
|
262
|
-
mcp-ticketer install claude-code # For Claude Code (project-level)
|
|
263
|
-
mcp-ticketer install claude-desktop # For Claude Desktop (global)
|
|
264
|
-
mcp-ticketer install gemini # For Gemini CLI
|
|
265
|
-
mcp-ticketer install codex # For Codex CLI
|
|
266
|
-
mcp-ticketer install auggie # For Auggie
|
|
267
|
-
|
|
268
|
-
# Remove MCP configuration when needed
|
|
269
|
-
mcp-ticketer remove claude-code # Remove from Claude Code
|
|
270
|
-
mcp-ticketer uninstall auggie # Alias for remove
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
**Configuration is automatic** - the commands above will:
|
|
274
|
-
1. Detect your mcp-ticketer installation
|
|
275
|
-
2. Read your adapter configuration
|
|
276
|
-
3. Generate the appropriate MCP server config
|
|
277
|
-
4. Save it to the correct location for your AI client
|
|
278
|
-
|
|
279
|
-
**Manual Configuration Example** (Claude Code):
|
|
280
|
-
|
|
281
|
-
```json
|
|
282
|
-
{
|
|
283
|
-
"mcpServers": {
|
|
284
|
-
"mcp-ticketer": {
|
|
285
|
-
"command": "/path/to/venv/bin/python",
|
|
286
|
-
"args": ["-m", "mcp_ticketer.mcp.server", "/absolute/path/to/project"],
|
|
287
|
-
"env": {
|
|
288
|
-
"MCP_TICKETER_ADAPTER": "aitrackdown",
|
|
289
|
-
"PYTHONPATH": "/absolute/path/to/project"
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
**Why this pattern?**
|
|
297
|
-
- **More Reliable**: Uses venv Python directly instead of binary wrapper
|
|
298
|
-
- **Consistent**: Matches proven mcp-vector-search pattern
|
|
299
|
-
- **Universal**: Works across pipx, pip, and uv installations
|
|
300
|
-
- **Better Errors**: Python module invocation provides clearer error messages
|
|
301
|
-
|
|
302
|
-
**Automatic Detection**: The `mcp-ticketer install` commands automatically detect your venv Python and generate the correct configuration.
|
|
303
|
-
|
|
304
|
-
**See [AI Client Integration Guide](docs/AI_CLIENT_INTEGRATION.md) for client-specific details.**
|
|
305
|
-
|
|
306
|
-
## โ๏ธ Configuration
|
|
307
|
-
|
|
308
|
-
### Linear Configuration
|
|
309
|
-
|
|
310
|
-
Configure Linear using either a team **key** (recommended) or team **ID**:
|
|
311
|
-
|
|
312
|
-
**Option 1: Team Key** (Recommended)
|
|
313
|
-
```bash
|
|
314
|
-
# In .env or environment
|
|
315
|
-
LINEAR_API_KEY=lin_api_...
|
|
316
|
-
LINEAR_TEAM_KEY=ENG
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
**Option 2: Team ID**
|
|
320
|
-
```bash
|
|
321
|
-
# In .env or environment
|
|
322
|
-
LINEAR_API_KEY=lin_api_...
|
|
323
|
-
LINEAR_TEAM_ID=02d15669-7351-4451-9719-807576c16049
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
**Finding your team key in Linear:**
|
|
327
|
-
1. Go to Linear Settings โ Teams
|
|
328
|
-
2. Select your team
|
|
329
|
-
3. Look for the "Key" field (e.g., "ENG", "DESIGN", "PRODUCT")
|
|
330
|
-
|
|
331
|
-
The team key is a short, human-readable identifier that's easier to use than the UUID-based team ID.
|
|
332
|
-
|
|
333
|
-
### Environment Variables
|
|
334
|
-
|
|
335
|
-
See [.env.example](.env.example) for a complete list of supported environment variables for all adapters.
|
|
336
|
-
|
|
337
|
-
## ๐ Documentation
|
|
338
|
-
|
|
339
|
-
Full documentation is available at [https://mcp-ticketerer.readthedocs.io](https://mcp-ticketerer.readthedocs.io)
|
|
340
|
-
|
|
341
|
-
- [Getting Started Guide](https://mcp-ticketerer.readthedocs.io/en/latest/getting-started/)
|
|
342
|
-
- [API Reference](https://mcp-ticketerer.readthedocs.io/en/latest/api/)
|
|
343
|
-
- [Adapter Development](https://mcp-ticketerer.readthedocs.io/en/latest/adapters/)
|
|
344
|
-
- [MCP Integration](https://mcp-ticketerer.readthedocs.io/en/latest/mcp/)
|
|
345
|
-
|
|
346
|
-
## ๐๏ธ Architecture
|
|
347
|
-
|
|
348
|
-
```
|
|
349
|
-
mcp-ticketerer/
|
|
350
|
-
โโโ adapters/ # Ticket system adapters
|
|
351
|
-
โ โโโ jira/ # JIRA integration
|
|
352
|
-
โ โโโ linear/ # Linear integration
|
|
353
|
-
โ โโโ github/ # GitHub Issues
|
|
354
|
-
โ โโโ aitrackdown/ # Local file storage
|
|
355
|
-
โโโ core/ # Core models and interfaces
|
|
356
|
-
โโโ cli/ # Command-line interface
|
|
357
|
-
โโโ mcp/ # MCP server implementation
|
|
358
|
-
โโโ cache/ # Caching layer
|
|
359
|
-
โโโ queue/ # Queue system for async operations
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
### State Machine
|
|
363
|
-
|
|
364
|
-
```mermaid
|
|
365
|
-
graph LR
|
|
366
|
-
OPEN --> IN_PROGRESS
|
|
367
|
-
IN_PROGRESS --> READY
|
|
368
|
-
IN_PROGRESS --> WAITING
|
|
369
|
-
IN_PROGRESS --> BLOCKED
|
|
370
|
-
WAITING --> IN_PROGRESS
|
|
371
|
-
BLOCKED --> IN_PROGRESS
|
|
372
|
-
READY --> TESTED
|
|
373
|
-
TESTED --> DONE
|
|
374
|
-
DONE --> CLOSED
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
## ๐งช Development
|
|
378
|
-
|
|
379
|
-
### Setup Development Environment
|
|
380
|
-
|
|
381
|
-
```bash
|
|
382
|
-
# Clone repository
|
|
383
|
-
git clone https://github.com/mcp-ticketerer/mcp-ticketerer.git
|
|
384
|
-
cd mcp-ticketerer
|
|
385
|
-
|
|
386
|
-
# Create virtual environment
|
|
387
|
-
python -m venv venv
|
|
388
|
-
source .venv/bin/activate # On Windows: venv\Scripts\activate
|
|
389
|
-
|
|
390
|
-
# Install in development mode with all dependencies
|
|
391
|
-
pip install -e ".[dev,test,docs]"
|
|
392
|
-
|
|
393
|
-
# Install pre-commit hooks
|
|
394
|
-
pre-commit install
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
### Running Tests
|
|
398
|
-
|
|
399
|
-
```bash
|
|
400
|
-
# Run all tests
|
|
401
|
-
pytest
|
|
402
|
-
|
|
403
|
-
# Run with coverage
|
|
404
|
-
pytest --cov=mcp_ticketer --cov-report=html
|
|
405
|
-
|
|
406
|
-
# Run specific test file
|
|
407
|
-
pytest tests/test_adapters.py
|
|
408
|
-
|
|
409
|
-
# Run tests in parallel
|
|
410
|
-
pytest -n auto
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
### Code Quality
|
|
414
|
-
|
|
415
|
-
```bash
|
|
416
|
-
# Format code
|
|
417
|
-
black src tests
|
|
418
|
-
|
|
419
|
-
# Lint code
|
|
420
|
-
ruff check src tests
|
|
421
|
-
|
|
422
|
-
# Type checking
|
|
423
|
-
mypy src
|
|
424
|
-
|
|
425
|
-
# Run all checks
|
|
426
|
-
tox
|
|
427
|
-
```
|
|
428
|
-
|
|
429
|
-
### Building Documentation
|
|
430
|
-
|
|
431
|
-
```bash
|
|
432
|
-
cd docs
|
|
433
|
-
make html
|
|
434
|
-
# View at docs/_build/html/index.html
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
## ๐ Roadmap
|
|
438
|
-
|
|
439
|
-
### โ
v0.1.0 (Current)
|
|
440
|
-
- Core ticket model and state machine
|
|
441
|
-
- JIRA, Linear, GitHub, AITrackdown adapters
|
|
442
|
-
- Rich CLI interface
|
|
443
|
-
- MCP server for AI integration
|
|
444
|
-
- Smart caching system
|
|
445
|
-
- Comprehensive test suite
|
|
446
|
-
|
|
447
|
-
### ๐ง v0.2.0 (In Development)
|
|
448
|
-
- [ ] Web UI Dashboard
|
|
449
|
-
- [ ] Webhook Support
|
|
450
|
-
- [ ] Advanced Search
|
|
451
|
-
- [ ] Team Collaboration
|
|
452
|
-
- [ ] Bulk Operations
|
|
453
|
-
- [ ] API Rate Limiting
|
|
454
|
-
|
|
455
|
-
### ๐ฎ v0.3.0+ (Future)
|
|
456
|
-
- [ ] GitLab Issues Adapter
|
|
457
|
-
- [ ] Slack/Teams Integration
|
|
458
|
-
- [ ] Custom Adapters SDK
|
|
459
|
-
- [ ] Analytics Dashboard
|
|
460
|
-
- [ ] Mobile Applications
|
|
461
|
-
- [ ] Enterprise SSO
|
|
462
|
-
|
|
463
|
-
## ๐ค Contributing
|
|
464
|
-
|
|
465
|
-
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
|
|
466
|
-
|
|
467
|
-
1. Fork the repository
|
|
468
|
-
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
469
|
-
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
470
|
-
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
471
|
-
5. Open a Pull Request
|
|
472
|
-
|
|
473
|
-
## ๐ License
|
|
474
|
-
|
|
475
|
-
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
476
|
-
|
|
477
|
-
## ๐ Acknowledgments
|
|
478
|
-
|
|
479
|
-
- Built with [Pydantic](https://pydantic-docs.helpmanual.io/) for data validation
|
|
480
|
-
- CLI powered by [Typer](https://typer.tiangolo.com/) and [Rich](https://rich.readthedocs.io/)
|
|
481
|
-
- MCP integration using the [Model Context Protocol](https://github.com/anthropics/model-context-protocol)
|
|
482
|
-
|
|
483
|
-
## ๐ Support
|
|
484
|
-
|
|
485
|
-
- ๐ง Email: support@mcp-ticketerer.io
|
|
486
|
-
- ๐ฌ Discord: [Join our community](https://discord.gg/mcp-ticketerer)
|
|
487
|
-
- ๐ Issues: [GitHub Issues](https://github.com/mcp-ticketerer/mcp-ticketerer/issues)
|
|
488
|
-
- ๐ Docs: [Read the Docs](https://mcp-ticketerer.readthedocs.io)
|
|
489
|
-
|
|
490
|
-
## โญ Star History
|
|
491
|
-
|
|
492
|
-
[](https://star-history.com/#mcp-ticketerer/mcp-ticketerer&Date)
|
|
493
|
-
|
|
494
|
-
---
|
|
495
|
-
|
|
496
|
-
Made with โค๏ธ by the MCP Ticketer Team
|