mcp-ticketer 0.1.6__tar.gz → 0.1.8__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.

Files changed (153) hide show
  1. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/CHANGELOG.md +18 -0
  2. {mcp_ticketer-0.1.6/src/mcp_ticketer.egg-info → mcp_ticketer-0.1.8}/PKG-INFO +1 -1
  3. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/__version__.py +1 -1
  4. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/mcp/server.py +79 -7
  5. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8/src/mcp_ticketer.egg-info}/PKG-INFO +1 -1
  6. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/.dependency_cache +0 -0
  7. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/.mpm_deployment_state +0 -0
  8. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/agent-manager.md +0 -0
  9. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/agentic-coder-optimizer.md +0 -0
  10. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/api_qa.md +0 -0
  11. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/clerk-ops.md +0 -0
  12. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/code_analyzer.md +0 -0
  13. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/data_engineer.md +0 -0
  14. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/documentation.md +0 -0
  15. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/engineer.md +0 -0
  16. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/gcp_ops_agent.md +0 -0
  17. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/imagemagick.md +0 -0
  18. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/memory_manager.md +0 -0
  19. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/nextjs_engineer.md +0 -0
  20. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/ops.md +0 -0
  21. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/project_organizer.md +0 -0
  22. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/prompt-engineer.md +0 -0
  23. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/python_engineer.md +0 -0
  24. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/qa.md +0 -0
  25. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/react_engineer.md +0 -0
  26. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/refactoring_engineer.md +0 -0
  27. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/research.md +0 -0
  28. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/security.md +0 -0
  29. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/ticketing.md +0 -0
  30. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/vercel_ops_agent.md +0 -0
  31. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/version_control.md +0 -0
  32. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/web_qa.md +0 -0
  33. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude/agents/web_ui.md +0 -0
  34. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude-mpm/config/project.json +0 -0
  35. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude-mpm/memories/README.md +0 -0
  36. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude-mpm/memories/documentation_memories.md +0 -0
  37. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude-mpm/memories/engineer_memories.md +0 -0
  38. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude-mpm/memories/qa_memories.md +0 -0
  39. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.claude-mpm/memories/research_memories.md +0 -0
  40. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.coveragerc +0 -0
  41. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.env.example +0 -0
  42. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.github/workflows/docs.yml +0 -0
  43. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.github/workflows/publish.yml +0 -0
  44. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.github/workflows/test.yml +0 -0
  45. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.pre-commit-config.yaml +0 -0
  46. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.python-version +0 -0
  47. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/.readthedocs.yaml +0 -0
  48. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/CONTRIBUTING.md +0 -0
  49. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/JIRA_SETUP.md +0 -0
  50. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/LICENSE +0 -0
  51. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/LINEAR_SETUP.md +0 -0
  52. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/MANIFEST.in +0 -0
  53. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/OPTIMIZATION_SUMMARY.md +0 -0
  54. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/QUEUE_SYSTEM.md +0 -0
  55. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/README.md +0 -0
  56. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/RELEASING.md +0 -0
  57. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/TEST_REPORT.md +0 -0
  58. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/TEST_RESULTS_SUMMARY.md +0 -0
  59. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/debug_search.py +0 -0
  60. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/debug_test.py +0 -0
  61. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/ADAPTERS.md +0 -0
  62. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/API_REFERENCE.md +0 -0
  63. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/CONFIGURATION.md +0 -0
  64. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/DEVELOPER_GUIDE.md +0 -0
  65. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/MCP_INTEGRATION.md +0 -0
  66. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/MIGRATION_GUIDE.md +0 -0
  67. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/USER_GUIDE.md +0 -0
  68. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
  69. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
  70. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
  71. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
  72. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
  73. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
  74. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
  75. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/adapters/github.md.txt +0 -0
  76. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/adapters.rst.txt +0 -0
  77. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/api.rst.txt +0 -0
  78. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/cli.rst.txt +0 -0
  79. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/development.rst.txt +0 -0
  80. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/examples.rst.txt +0 -0
  81. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/index.rst.txt +0 -0
  82. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/installation.rst.txt +0 -0
  83. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
  84. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/adapters/github.md +0 -0
  85. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/adapters.rst +0 -0
  86. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/api.rst +0 -0
  87. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/cli.rst +0 -0
  88. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/conf.py +0 -0
  89. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/development.rst +0 -0
  90. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/examples.rst +0 -0
  91. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/index.rst +0 -0
  92. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/installation.rst +0 -0
  93. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/prd/mcp-ticketer-prd.md +0 -0
  94. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/docs/requirements.txt +0 -0
  95. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/install.sh +0 -0
  96. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/mcp-ticketer +0 -0
  97. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/mcp-ticketer-server +0 -0
  98. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/pyproject.toml +0 -0
  99. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/pytest.ini +0 -0
  100. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/requirements-dev.txt +0 -0
  101. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/requirements.txt +0 -0
  102. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/setup.cfg +0 -0
  103. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/setup.py +0 -0
  104. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/__init__.py +0 -0
  105. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/adapters/__init__.py +0 -0
  106. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
  107. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/adapters/github.py +0 -0
  108. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/adapters/jira.py +0 -0
  109. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/adapters/linear.py +0 -0
  110. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/cache/__init__.py +0 -0
  111. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/cache/memory.py +0 -0
  112. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/cli/__init__.py +0 -0
  113. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/cli/main.py +0 -0
  114. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/cli/queue_commands.py +0 -0
  115. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/cli/utils.py +0 -0
  116. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/core/__init__.py +0 -0
  117. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/core/adapter.py +0 -0
  118. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/core/config.py +0 -0
  119. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/core/http_client.py +0 -0
  120. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/core/mappers.py +0 -0
  121. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/core/models.py +0 -0
  122. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/core/registry.py +0 -0
  123. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/mcp/__init__.py +0 -0
  124. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/py.typed +0 -0
  125. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/queue/__init__.py +0 -0
  126. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/queue/__main__.py +0 -0
  127. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/queue/manager.py +0 -0
  128. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/queue/queue.py +0 -0
  129. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/queue/run_worker.py +0 -0
  130. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer/queue/worker.py +0 -0
  131. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer.egg-info/SOURCES.txt +0 -0
  132. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
  133. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
  134. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
  135. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer.egg-info/requires.txt +0 -0
  136. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
  137. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test-tickets/tickets/task-20250924002724.json +0 -0
  138. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_all_adapters.py +0 -0
  139. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_api_usage.py +0 -0
  140. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_basic.py +0 -0
  141. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_comprehensive.py +0 -0
  142. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_error_handling.py +0 -0
  143. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_github.py +0 -0
  144. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_github_token.py +0 -0
  145. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_jira.py +0 -0
  146. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_linear.py +0 -0
  147. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_linear_native.py +0 -0
  148. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_linear_teams.py +0 -0
  149. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_optimizations.py +0 -0
  150. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_performance.py +0 -0
  151. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_queue_system.py +0 -0
  152. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/test_set_command.sh +0 -0
  153. {mcp_ticketer-0.1.6 → mcp_ticketer-0.1.8}/tox.ini +0 -0
@@ -15,6 +15,24 @@ 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.8] - 2025-09-24
19
+
20
+ ### Added
21
+ - Implemented `tools/call` method handler for MCP protocol compliance
22
+ - Claude Desktop can now invoke tools through the standard MCP tools/call interface
23
+ - Added proper JSON serialization with datetime support for tool responses
24
+ - Created `.claude.json` configuration for local MCP server integration
25
+
26
+ ### Fixed
27
+ - MCP server now handles tool invocations from Claude Desktop correctly
28
+ - Fixed JSON serialization errors for datetime objects in responses
29
+
30
+ ## [0.1.7] - 2025-09-24
31
+
32
+ ### Fixed
33
+ - MCP tools schema corrected from "parameters" to "inputSchema" for proper Claude Desktop compatibility
34
+ - This fix ensures Claude Desktop correctly recognizes and can invoke MCP tools
35
+
18
36
  ## [0.1.6] - 2025-09-24
19
37
 
20
38
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-ticketer
3
- Version: 0.1.6
3
+ Version: 0.1.8
4
4
  Summary: Universal ticket management interface for AI agents with MCP support
5
5
  Author-email: MCP Ticketer Team <support@mcp-ticketer.io>
6
6
  Maintainer-email: MCP Ticketer Team <support@mcp-ticketer.io>
@@ -1,6 +1,6 @@
1
1
  """Version information for mcp-ticketer package."""
2
2
 
3
- __version__ = "0.1.6"
3
+ __version__ = "0.1.8"
4
4
  __version_info__ = tuple(int(part) for part in __version__.split("."))
5
5
 
6
6
  # Package metadata
@@ -65,6 +65,8 @@ class MCPTicketServer:
65
65
  result = await self._handle_queue_status(params)
66
66
  elif method == "tools/list":
67
67
  result = await self._handle_tools_list()
68
+ elif method == "tools/call":
69
+ result = await self._handle_tools_call(params)
68
70
  else:
69
71
  return self._error_response(
70
72
  request_id,
@@ -309,7 +311,7 @@ class MCPTicketServer:
309
311
  "protocolVersion": "2024-11-05",
310
312
  "serverInfo": {
311
313
  "name": "mcp-ticketer",
312
- "version": "0.1.6"
314
+ "version": "0.1.8"
313
315
  },
314
316
  "capabilities": {
315
317
  "tools": {
@@ -325,7 +327,7 @@ class MCPTicketServer:
325
327
  {
326
328
  "name": "ticket_create",
327
329
  "description": "Create a new ticket",
328
- "parameters": {
330
+ "inputSchema": {
329
331
  "type": "object",
330
332
  "properties": {
331
333
  "title": {"type": "string", "description": "Ticket title"},
@@ -340,7 +342,7 @@ class MCPTicketServer:
340
342
  {
341
343
  "name": "ticket_list",
342
344
  "description": "List tickets",
343
- "parameters": {
345
+ "inputSchema": {
344
346
  "type": "object",
345
347
  "properties": {
346
348
  "limit": {"type": "integer", "default": 10},
@@ -352,7 +354,7 @@ class MCPTicketServer:
352
354
  {
353
355
  "name": "ticket_update",
354
356
  "description": "Update a ticket",
355
- "parameters": {
357
+ "inputSchema": {
356
358
  "type": "object",
357
359
  "properties": {
358
360
  "ticket_id": {"type": "string", "description": "Ticket ID"},
@@ -364,7 +366,7 @@ class MCPTicketServer:
364
366
  {
365
367
  "name": "ticket_transition",
366
368
  "description": "Change ticket state",
367
- "parameters": {
369
+ "inputSchema": {
368
370
  "type": "object",
369
371
  "properties": {
370
372
  "ticket_id": {"type": "string"},
@@ -376,7 +378,7 @@ class MCPTicketServer:
376
378
  {
377
379
  "name": "ticket_search",
378
380
  "description": "Search tickets",
379
- "parameters": {
381
+ "inputSchema": {
380
382
  "type": "object",
381
383
  "properties": {
382
384
  "query": {"type": "string"},
@@ -389,7 +391,7 @@ class MCPTicketServer:
389
391
  {
390
392
  "name": "ticket_status",
391
393
  "description": "Check status of queued ticket operation",
392
- "parameters": {
394
+ "inputSchema": {
393
395
  "type": "object",
394
396
  "properties": {
395
397
  "queue_id": {"type": "string", "description": "Queue ID returned from create/update/delete operations"},
@@ -400,6 +402,76 @@ class MCPTicketServer:
400
402
  ]
401
403
  }
402
404
 
405
+ async def _handle_tools_call(self, params: Dict[str, Any]) -> Dict[str, Any]:
406
+ """Handle tool invocation from MCP client.
407
+
408
+ Args:
409
+ params: Contains 'name' and 'arguments' fields
410
+
411
+ Returns:
412
+ MCP formatted response with content array
413
+ """
414
+ tool_name = params.get("name")
415
+ arguments = params.get("arguments", {})
416
+
417
+ try:
418
+ # Route to appropriate handler based on tool name
419
+ if tool_name == "ticket_create":
420
+ result = await self._handle_create(arguments)
421
+ elif tool_name == "ticket_list":
422
+ result = await self._handle_list(arguments)
423
+ elif tool_name == "ticket_update":
424
+ result = await self._handle_update(arguments)
425
+ elif tool_name == "ticket_transition":
426
+ result = await self._handle_transition(arguments)
427
+ elif tool_name == "ticket_search":
428
+ result = await self._handle_search(arguments)
429
+ elif tool_name == "ticket_status":
430
+ result = await self._handle_queue_status(arguments)
431
+ else:
432
+ return {
433
+ "content": [
434
+ {
435
+ "type": "text",
436
+ "text": f"Unknown tool: {tool_name}"
437
+ }
438
+ ],
439
+ "isError": True
440
+ }
441
+
442
+ # Format successful response in MCP content format
443
+ # Handle different response types
444
+ if isinstance(result, list):
445
+ # For list operations, convert Pydantic models to dicts
446
+ result_text = json.dumps(result, indent=2, default=str)
447
+ elif isinstance(result, dict):
448
+ # For dict responses (create, update, etc.)
449
+ result_text = json.dumps(result, indent=2, default=str)
450
+ else:
451
+ result_text = str(result)
452
+
453
+ return {
454
+ "content": [
455
+ {
456
+ "type": "text",
457
+ "text": result_text
458
+ }
459
+ ],
460
+ "isError": False
461
+ }
462
+
463
+ except Exception as e:
464
+ # Format error response
465
+ return {
466
+ "content": [
467
+ {
468
+ "type": "text",
469
+ "text": f"Error calling tool {tool_name}: {str(e)}"
470
+ }
471
+ ],
472
+ "isError": True
473
+ }
474
+
403
475
  async def run(self) -> None:
404
476
  """Run the MCP server, reading from stdin and writing to stdout."""
405
477
  self.running = True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-ticketer
3
- Version: 0.1.6
3
+ Version: 0.1.8
4
4
  Summary: Universal ticket management interface for AI agents with MCP support
5
5
  Author-email: MCP Ticketer Team <support@mcp-ticketer.io>
6
6
  Maintainer-email: MCP Ticketer Team <support@mcp-ticketer.io>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes