mcp-ticketer 2.0.1__py3-none-any.whl → 2.2.13__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/__version__.py +1 -1
- mcp_ticketer/_version_scm.py +1 -0
- mcp_ticketer/adapters/aitrackdown.py +122 -0
- mcp_ticketer/adapters/asana/adapter.py +121 -0
- mcp_ticketer/adapters/github/__init__.py +26 -0
- mcp_ticketer/adapters/{github.py → github/adapter.py} +1506 -365
- mcp_ticketer/adapters/github/client.py +335 -0
- mcp_ticketer/adapters/github/mappers.py +797 -0
- mcp_ticketer/adapters/github/queries.py +692 -0
- mcp_ticketer/adapters/github/types.py +460 -0
- mcp_ticketer/adapters/jira/__init__.py +35 -0
- mcp_ticketer/adapters/{jira.py → jira/adapter.py} +250 -678
- mcp_ticketer/adapters/jira/client.py +271 -0
- mcp_ticketer/adapters/jira/mappers.py +246 -0
- mcp_ticketer/adapters/jira/queries.py +216 -0
- mcp_ticketer/adapters/jira/types.py +304 -0
- mcp_ticketer/adapters/linear/adapter.py +1000 -92
- mcp_ticketer/adapters/linear/client.py +91 -1
- mcp_ticketer/adapters/linear/mappers.py +107 -0
- mcp_ticketer/adapters/linear/queries.py +112 -2
- mcp_ticketer/adapters/linear/types.py +50 -10
- mcp_ticketer/cli/configure.py +524 -89
- mcp_ticketer/cli/install_mcp_server.py +418 -0
- mcp_ticketer/cli/main.py +10 -0
- mcp_ticketer/cli/mcp_configure.py +177 -49
- mcp_ticketer/cli/platform_installer.py +9 -0
- mcp_ticketer/cli/setup_command.py +157 -1
- mcp_ticketer/cli/ticket_commands.py +443 -81
- mcp_ticketer/cli/utils.py +113 -0
- mcp_ticketer/core/__init__.py +28 -0
- mcp_ticketer/core/adapter.py +367 -1
- mcp_ticketer/core/milestone_manager.py +252 -0
- mcp_ticketer/core/models.py +345 -0
- mcp_ticketer/core/project_utils.py +281 -0
- mcp_ticketer/core/project_validator.py +376 -0
- mcp_ticketer/core/session_state.py +6 -1
- mcp_ticketer/core/state_matcher.py +36 -3
- mcp_ticketer/mcp/server/__main__.py +2 -1
- mcp_ticketer/mcp/server/routing.py +68 -0
- mcp_ticketer/mcp/server/tools/__init__.py +7 -4
- mcp_ticketer/mcp/server/tools/attachment_tools.py +3 -1
- mcp_ticketer/mcp/server/tools/config_tools.py +233 -35
- mcp_ticketer/mcp/server/tools/milestone_tools.py +338 -0
- mcp_ticketer/mcp/server/tools/search_tools.py +30 -1
- mcp_ticketer/mcp/server/tools/ticket_tools.py +37 -1
- mcp_ticketer/queue/queue.py +68 -0
- {mcp_ticketer-2.0.1.dist-info → mcp_ticketer-2.2.13.dist-info}/METADATA +33 -3
- {mcp_ticketer-2.0.1.dist-info → mcp_ticketer-2.2.13.dist-info}/RECORD +72 -36
- mcp_ticketer-2.2.13.dist-info/top_level.txt +2 -0
- py_mcp_installer/examples/phase3_demo.py +178 -0
- py_mcp_installer/scripts/manage_version.py +54 -0
- py_mcp_installer/setup.py +6 -0
- py_mcp_installer/src/py_mcp_installer/__init__.py +153 -0
- py_mcp_installer/src/py_mcp_installer/command_builder.py +445 -0
- py_mcp_installer/src/py_mcp_installer/config_manager.py +541 -0
- py_mcp_installer/src/py_mcp_installer/exceptions.py +243 -0
- py_mcp_installer/src/py_mcp_installer/installation_strategy.py +617 -0
- py_mcp_installer/src/py_mcp_installer/installer.py +656 -0
- py_mcp_installer/src/py_mcp_installer/mcp_inspector.py +750 -0
- py_mcp_installer/src/py_mcp_installer/platform_detector.py +451 -0
- py_mcp_installer/src/py_mcp_installer/platforms/__init__.py +26 -0
- py_mcp_installer/src/py_mcp_installer/platforms/claude_code.py +225 -0
- py_mcp_installer/src/py_mcp_installer/platforms/codex.py +181 -0
- py_mcp_installer/src/py_mcp_installer/platforms/cursor.py +191 -0
- py_mcp_installer/src/py_mcp_installer/types.py +222 -0
- py_mcp_installer/src/py_mcp_installer/utils.py +463 -0
- py_mcp_installer/tests/__init__.py +0 -0
- py_mcp_installer/tests/platforms/__init__.py +0 -0
- py_mcp_installer/tests/test_platform_detector.py +17 -0
- mcp_ticketer-2.0.1.dist-info/top_level.txt +0 -1
- {mcp_ticketer-2.0.1.dist-info → mcp_ticketer-2.2.13.dist-info}/WHEEL +0 -0
- {mcp_ticketer-2.0.1.dist-info → mcp_ticketer-2.2.13.dist-info}/entry_points.txt +0 -0
- {mcp_ticketer-2.0.1.dist-info → mcp_ticketer-2.2.13.dist-info}/licenses/LICENSE +0 -0
mcp_ticketer/__version__.py
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.0.6.dev0+g966f4e973.d20251204"
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"""AI-Trackdown adapter implementation."""
|
|
2
2
|
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
3
5
|
import builtins
|
|
4
6
|
import json
|
|
5
7
|
import logging
|
|
@@ -1240,6 +1242,126 @@ class AITrackdownAdapter(BaseAdapter[Task]):
|
|
|
1240
1242
|
]
|
|
1241
1243
|
return statuses
|
|
1242
1244
|
|
|
1245
|
+
# Milestone Methods (Not yet implemented)
|
|
1246
|
+
|
|
1247
|
+
async def milestone_create(
|
|
1248
|
+
self,
|
|
1249
|
+
name: str,
|
|
1250
|
+
target_date: datetime | None = None,
|
|
1251
|
+
labels: list[str] | None = None,
|
|
1252
|
+
description: str = "",
|
|
1253
|
+
project_id: str | None = None,
|
|
1254
|
+
) -> Any:
|
|
1255
|
+
"""Create milestone - not yet implemented for AITrackdown.
|
|
1256
|
+
|
|
1257
|
+
Args:
|
|
1258
|
+
----
|
|
1259
|
+
name: Milestone name
|
|
1260
|
+
target_date: Target completion date
|
|
1261
|
+
labels: Labels that define this milestone
|
|
1262
|
+
description: Milestone description
|
|
1263
|
+
project_id: Associated project ID
|
|
1264
|
+
|
|
1265
|
+
Raises:
|
|
1266
|
+
------
|
|
1267
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1268
|
+
|
|
1269
|
+
"""
|
|
1270
|
+
raise NotImplementedError("Milestone support for AITrackdown coming in v2.1.0")
|
|
1271
|
+
|
|
1272
|
+
async def milestone_get(self, milestone_id: str) -> Any:
|
|
1273
|
+
"""Get milestone - not yet implemented for AITrackdown.
|
|
1274
|
+
|
|
1275
|
+
Args:
|
|
1276
|
+
----
|
|
1277
|
+
milestone_id: Milestone identifier
|
|
1278
|
+
|
|
1279
|
+
Raises:
|
|
1280
|
+
------
|
|
1281
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1282
|
+
|
|
1283
|
+
"""
|
|
1284
|
+
raise NotImplementedError("Milestone support for AITrackdown coming in v2.1.0")
|
|
1285
|
+
|
|
1286
|
+
async def milestone_list(
|
|
1287
|
+
self,
|
|
1288
|
+
project_id: str | None = None,
|
|
1289
|
+
state: str | None = None,
|
|
1290
|
+
) -> list[Any]:
|
|
1291
|
+
"""List milestones - not yet implemented for AITrackdown.
|
|
1292
|
+
|
|
1293
|
+
Args:
|
|
1294
|
+
----
|
|
1295
|
+
project_id: Filter by project
|
|
1296
|
+
state: Filter by state
|
|
1297
|
+
|
|
1298
|
+
Raises:
|
|
1299
|
+
------
|
|
1300
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1301
|
+
|
|
1302
|
+
"""
|
|
1303
|
+
raise NotImplementedError("Milestone support for AITrackdown coming in v2.1.0")
|
|
1304
|
+
|
|
1305
|
+
async def milestone_update(
|
|
1306
|
+
self,
|
|
1307
|
+
milestone_id: str,
|
|
1308
|
+
name: str | None = None,
|
|
1309
|
+
target_date: datetime | None = None,
|
|
1310
|
+
state: str | None = None,
|
|
1311
|
+
labels: list[str] | None = None,
|
|
1312
|
+
description: str | None = None,
|
|
1313
|
+
) -> Any:
|
|
1314
|
+
"""Update milestone - not yet implemented for AITrackdown.
|
|
1315
|
+
|
|
1316
|
+
Args:
|
|
1317
|
+
----
|
|
1318
|
+
milestone_id: Milestone identifier
|
|
1319
|
+
name: New name
|
|
1320
|
+
target_date: New target date
|
|
1321
|
+
state: New state
|
|
1322
|
+
labels: New labels
|
|
1323
|
+
description: New description
|
|
1324
|
+
|
|
1325
|
+
Raises:
|
|
1326
|
+
------
|
|
1327
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1328
|
+
|
|
1329
|
+
"""
|
|
1330
|
+
raise NotImplementedError("Milestone support for AITrackdown coming in v2.1.0")
|
|
1331
|
+
|
|
1332
|
+
async def milestone_delete(self, milestone_id: str) -> bool:
|
|
1333
|
+
"""Delete milestone - not yet implemented for AITrackdown.
|
|
1334
|
+
|
|
1335
|
+
Args:
|
|
1336
|
+
----
|
|
1337
|
+
milestone_id: Milestone identifier
|
|
1338
|
+
|
|
1339
|
+
Raises:
|
|
1340
|
+
------
|
|
1341
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1342
|
+
|
|
1343
|
+
"""
|
|
1344
|
+
raise NotImplementedError("Milestone support for AITrackdown coming in v2.1.0")
|
|
1345
|
+
|
|
1346
|
+
async def milestone_get_issues(
|
|
1347
|
+
self,
|
|
1348
|
+
milestone_id: str,
|
|
1349
|
+
state: str | None = None,
|
|
1350
|
+
) -> list[Any]:
|
|
1351
|
+
"""Get milestone issues - not yet implemented for AITrackdown.
|
|
1352
|
+
|
|
1353
|
+
Args:
|
|
1354
|
+
----
|
|
1355
|
+
milestone_id: Milestone identifier
|
|
1356
|
+
state: Filter by issue state
|
|
1357
|
+
|
|
1358
|
+
Raises:
|
|
1359
|
+
------
|
|
1360
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1361
|
+
|
|
1362
|
+
"""
|
|
1363
|
+
raise NotImplementedError("Milestone support for AITrackdown coming in v2.1.0")
|
|
1364
|
+
|
|
1243
1365
|
|
|
1244
1366
|
# Register the adapter
|
|
1245
1367
|
AdapterRegistry.register("aitrackdown", AITrackdownAdapter)
|
|
@@ -6,6 +6,7 @@ import builtins
|
|
|
6
6
|
import logging
|
|
7
7
|
import mimetypes
|
|
8
8
|
import os
|
|
9
|
+
from datetime import datetime
|
|
9
10
|
from pathlib import Path
|
|
10
11
|
from typing import Any
|
|
11
12
|
|
|
@@ -1411,6 +1412,126 @@ class AsanaAdapter(BaseAdapter[Task]):
|
|
|
1411
1412
|
"""Close adapter and cleanup resources."""
|
|
1412
1413
|
await self.client.close()
|
|
1413
1414
|
|
|
1415
|
+
# Milestone Methods (Not yet implemented)
|
|
1416
|
+
|
|
1417
|
+
async def milestone_create(
|
|
1418
|
+
self,
|
|
1419
|
+
name: str,
|
|
1420
|
+
target_date: datetime | None = None,
|
|
1421
|
+
labels: list[str] | None = None,
|
|
1422
|
+
description: str = "",
|
|
1423
|
+
project_id: str | None = None,
|
|
1424
|
+
) -> Any:
|
|
1425
|
+
"""Create milestone - not yet implemented for Asana.
|
|
1426
|
+
|
|
1427
|
+
Args:
|
|
1428
|
+
----
|
|
1429
|
+
name: Milestone name
|
|
1430
|
+
target_date: Target completion date
|
|
1431
|
+
labels: Labels that define this milestone
|
|
1432
|
+
description: Milestone description
|
|
1433
|
+
project_id: Associated project ID
|
|
1434
|
+
|
|
1435
|
+
Raises:
|
|
1436
|
+
------
|
|
1437
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1438
|
+
|
|
1439
|
+
"""
|
|
1440
|
+
raise NotImplementedError("Milestone support for Asana coming in v2.1.0")
|
|
1441
|
+
|
|
1442
|
+
async def milestone_get(self, milestone_id: str) -> Any:
|
|
1443
|
+
"""Get milestone - not yet implemented for Asana.
|
|
1444
|
+
|
|
1445
|
+
Args:
|
|
1446
|
+
----
|
|
1447
|
+
milestone_id: Milestone identifier
|
|
1448
|
+
|
|
1449
|
+
Raises:
|
|
1450
|
+
------
|
|
1451
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1452
|
+
|
|
1453
|
+
"""
|
|
1454
|
+
raise NotImplementedError("Milestone support for Asana coming in v2.1.0")
|
|
1455
|
+
|
|
1456
|
+
async def milestone_list(
|
|
1457
|
+
self,
|
|
1458
|
+
project_id: str | None = None,
|
|
1459
|
+
state: str | None = None,
|
|
1460
|
+
) -> list[Any]:
|
|
1461
|
+
"""List milestones - not yet implemented for Asana.
|
|
1462
|
+
|
|
1463
|
+
Args:
|
|
1464
|
+
----
|
|
1465
|
+
project_id: Filter by project
|
|
1466
|
+
state: Filter by state
|
|
1467
|
+
|
|
1468
|
+
Raises:
|
|
1469
|
+
------
|
|
1470
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1471
|
+
|
|
1472
|
+
"""
|
|
1473
|
+
raise NotImplementedError("Milestone support for Asana coming in v2.1.0")
|
|
1474
|
+
|
|
1475
|
+
async def milestone_update(
|
|
1476
|
+
self,
|
|
1477
|
+
milestone_id: str,
|
|
1478
|
+
name: str | None = None,
|
|
1479
|
+
target_date: datetime | None = None,
|
|
1480
|
+
state: str | None = None,
|
|
1481
|
+
labels: list[str] | None = None,
|
|
1482
|
+
description: str | None = None,
|
|
1483
|
+
) -> Any:
|
|
1484
|
+
"""Update milestone - not yet implemented for Asana.
|
|
1485
|
+
|
|
1486
|
+
Args:
|
|
1487
|
+
----
|
|
1488
|
+
milestone_id: Milestone identifier
|
|
1489
|
+
name: New name
|
|
1490
|
+
target_date: New target date
|
|
1491
|
+
state: New state
|
|
1492
|
+
labels: New labels
|
|
1493
|
+
description: New description
|
|
1494
|
+
|
|
1495
|
+
Raises:
|
|
1496
|
+
------
|
|
1497
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1498
|
+
|
|
1499
|
+
"""
|
|
1500
|
+
raise NotImplementedError("Milestone support for Asana coming in v2.1.0")
|
|
1501
|
+
|
|
1502
|
+
async def milestone_delete(self, milestone_id: str) -> bool:
|
|
1503
|
+
"""Delete milestone - not yet implemented for Asana.
|
|
1504
|
+
|
|
1505
|
+
Args:
|
|
1506
|
+
----
|
|
1507
|
+
milestone_id: Milestone identifier
|
|
1508
|
+
|
|
1509
|
+
Raises:
|
|
1510
|
+
------
|
|
1511
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1512
|
+
|
|
1513
|
+
"""
|
|
1514
|
+
raise NotImplementedError("Milestone support for Asana coming in v2.1.0")
|
|
1515
|
+
|
|
1516
|
+
async def milestone_get_issues(
|
|
1517
|
+
self,
|
|
1518
|
+
milestone_id: str,
|
|
1519
|
+
state: str | None = None,
|
|
1520
|
+
) -> list[Any]:
|
|
1521
|
+
"""Get milestone issues - not yet implemented for Asana.
|
|
1522
|
+
|
|
1523
|
+
Args:
|
|
1524
|
+
----
|
|
1525
|
+
milestone_id: Milestone identifier
|
|
1526
|
+
state: Filter by issue state
|
|
1527
|
+
|
|
1528
|
+
Raises:
|
|
1529
|
+
------
|
|
1530
|
+
NotImplementedError: Milestone support coming in v2.1.0
|
|
1531
|
+
|
|
1532
|
+
"""
|
|
1533
|
+
raise NotImplementedError("Milestone support for Asana coming in v2.1.0")
|
|
1534
|
+
|
|
1414
1535
|
|
|
1415
1536
|
# Register the adapter
|
|
1416
1537
|
AdapterRegistry.register("asana", AsanaAdapter)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""GitHub adapter for MCP Ticketer.
|
|
2
|
+
|
|
3
|
+
This module provides integration with GitHub's REST and GraphQL APIs for universal ticket management.
|
|
4
|
+
The adapter is split into multiple modules for better organization:
|
|
5
|
+
|
|
6
|
+
- adapter.py: Main GitHubAdapter class with core functionality
|
|
7
|
+
- queries.py: GraphQL queries and fragments
|
|
8
|
+
- types.py: GitHub-specific types and mappings
|
|
9
|
+
- client.py: HTTP/GraphQL client management
|
|
10
|
+
- mappers.py: Data transformation between GitHub and universal models
|
|
11
|
+
|
|
12
|
+
Usage:
|
|
13
|
+
from mcp_ticketer.adapters.github import GitHubAdapter
|
|
14
|
+
|
|
15
|
+
config = {
|
|
16
|
+
"token": "your_github_token",
|
|
17
|
+
"owner": "repository_owner",
|
|
18
|
+
"repo": "repository_name"
|
|
19
|
+
}
|
|
20
|
+
adapter = GitHubAdapter(config)
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from .adapter import GitHubAdapter
|
|
24
|
+
from .types import GitHubStateMapping
|
|
25
|
+
|
|
26
|
+
__all__ = ["GitHubAdapter", "GitHubStateMapping"]
|