mcp-ticketer 0.1.2__tar.gz → 0.1.4__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.2 → mcp_ticketer-0.1.4}/CHANGELOG.md +21 -0
  2. {mcp_ticketer-0.1.2/src/mcp_ticketer.egg-info → mcp_ticketer-0.1.4}/PKG-INFO +1 -1
  3. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/__version__.py +1 -1
  4. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/cli/main.py +7 -3
  5. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/mcp/server.py +17 -5
  6. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4/src/mcp_ticketer.egg-info}/PKG-INFO +1 -1
  7. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/.dependency_cache +0 -0
  8. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/.mpm_deployment_state +0 -0
  9. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/agent-manager.md +0 -0
  10. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/agentic-coder-optimizer.md +0 -0
  11. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/api_qa.md +0 -0
  12. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/clerk-ops.md +0 -0
  13. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/code_analyzer.md +0 -0
  14. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/data_engineer.md +0 -0
  15. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/documentation.md +0 -0
  16. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/engineer.md +0 -0
  17. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/gcp_ops_agent.md +0 -0
  18. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/imagemagick.md +0 -0
  19. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/memory_manager.md +0 -0
  20. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/nextjs_engineer.md +0 -0
  21. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/ops.md +0 -0
  22. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/project_organizer.md +0 -0
  23. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/prompt-engineer.md +0 -0
  24. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/python_engineer.md +0 -0
  25. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/qa.md +0 -0
  26. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/react_engineer.md +0 -0
  27. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/refactoring_engineer.md +0 -0
  28. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/research.md +0 -0
  29. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/security.md +0 -0
  30. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/ticketing.md +0 -0
  31. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/vercel_ops_agent.md +0 -0
  32. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/version_control.md +0 -0
  33. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/web_qa.md +0 -0
  34. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude/agents/web_ui.md +0 -0
  35. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude-mpm/config/project.json +0 -0
  36. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude-mpm/memories/README.md +0 -0
  37. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude-mpm/memories/documentation_memories.md +0 -0
  38. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude-mpm/memories/engineer_memories.md +0 -0
  39. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude-mpm/memories/qa_memories.md +0 -0
  40. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.claude-mpm/memories/research_memories.md +0 -0
  41. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.coveragerc +0 -0
  42. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.env.example +0 -0
  43. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.github/workflows/docs.yml +0 -0
  44. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.github/workflows/publish.yml +0 -0
  45. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.github/workflows/test.yml +0 -0
  46. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.pre-commit-config.yaml +0 -0
  47. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.python-version +0 -0
  48. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/.readthedocs.yaml +0 -0
  49. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/CONTRIBUTING.md +0 -0
  50. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/JIRA_SETUP.md +0 -0
  51. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/LICENSE +0 -0
  52. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/LINEAR_SETUP.md +0 -0
  53. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/MANIFEST.in +0 -0
  54. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/OPTIMIZATION_SUMMARY.md +0 -0
  55. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/QUEUE_SYSTEM.md +0 -0
  56. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/README.md +0 -0
  57. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/RELEASING.md +0 -0
  58. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/TEST_REPORT.md +0 -0
  59. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/TEST_RESULTS_SUMMARY.md +0 -0
  60. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/debug_search.py +0 -0
  61. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/debug_test.py +0 -0
  62. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/ADAPTERS.md +0 -0
  63. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/API_REFERENCE.md +0 -0
  64. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/CONFIGURATION.md +0 -0
  65. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/DEVELOPER_GUIDE.md +0 -0
  66. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/MCP_INTEGRATION.md +0 -0
  67. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/MIGRATION_GUIDE.md +0 -0
  68. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/USER_GUIDE.md +0 -0
  69. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
  70. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
  71. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
  72. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
  73. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
  74. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
  75. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
  76. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/adapters/github.md.txt +0 -0
  77. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/adapters.rst.txt +0 -0
  78. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/api.rst.txt +0 -0
  79. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/cli.rst.txt +0 -0
  80. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/development.rst.txt +0 -0
  81. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/examples.rst.txt +0 -0
  82. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/index.rst.txt +0 -0
  83. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/installation.rst.txt +0 -0
  84. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
  85. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/adapters/github.md +0 -0
  86. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/adapters.rst +0 -0
  87. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/api.rst +0 -0
  88. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/cli.rst +0 -0
  89. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/conf.py +0 -0
  90. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/development.rst +0 -0
  91. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/examples.rst +0 -0
  92. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/index.rst +0 -0
  93. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/installation.rst +0 -0
  94. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/prd/mcp-ticketer-prd.md +0 -0
  95. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/docs/requirements.txt +0 -0
  96. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/install.sh +0 -0
  97. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/mcp-ticketer +0 -0
  98. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/mcp-ticketer-server +0 -0
  99. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/pyproject.toml +0 -0
  100. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/pytest.ini +0 -0
  101. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/requirements-dev.txt +0 -0
  102. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/requirements.txt +0 -0
  103. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/setup.cfg +0 -0
  104. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/setup.py +0 -0
  105. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/__init__.py +0 -0
  106. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/adapters/__init__.py +0 -0
  107. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
  108. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/adapters/github.py +0 -0
  109. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/adapters/jira.py +0 -0
  110. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/adapters/linear.py +0 -0
  111. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/cache/__init__.py +0 -0
  112. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/cache/memory.py +0 -0
  113. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/cli/__init__.py +0 -0
  114. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/cli/queue_commands.py +0 -0
  115. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/cli/utils.py +0 -0
  116. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/core/__init__.py +0 -0
  117. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/core/adapter.py +0 -0
  118. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/core/config.py +0 -0
  119. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/core/http_client.py +0 -0
  120. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/core/mappers.py +0 -0
  121. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/core/models.py +0 -0
  122. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/core/registry.py +0 -0
  123. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/mcp/__init__.py +0 -0
  124. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/py.typed +0 -0
  125. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/queue/__init__.py +0 -0
  126. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/queue/__main__.py +0 -0
  127. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/queue/manager.py +0 -0
  128. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/queue/queue.py +0 -0
  129. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/queue/run_worker.py +0 -0
  130. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer/queue/worker.py +0 -0
  131. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer.egg-info/SOURCES.txt +0 -0
  132. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
  133. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
  134. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
  135. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer.egg-info/requires.txt +0 -0
  136. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
  137. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test-tickets/tickets/task-20250924002724.json +0 -0
  138. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_all_adapters.py +0 -0
  139. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_api_usage.py +0 -0
  140. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_basic.py +0 -0
  141. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_comprehensive.py +0 -0
  142. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_error_handling.py +0 -0
  143. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_github.py +0 -0
  144. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_github_token.py +0 -0
  145. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_jira.py +0 -0
  146. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_linear.py +0 -0
  147. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_linear_native.py +0 -0
  148. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_linear_teams.py +0 -0
  149. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_optimizations.py +0 -0
  150. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_performance.py +0 -0
  151. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_queue_system.py +0 -0
  152. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/test_set_command.sh +0 -0
  153. {mcp_ticketer-0.1.2 → mcp_ticketer-0.1.4}/tox.ini +0 -0
@@ -15,6 +15,27 @@ 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.4] - 2025-09-24
19
+
20
+ ### Fixed
21
+ - MCP protocol version corrected from "1.0.0" to "0.1.0" for Claude Desktop compatibility
22
+
23
+ ## [0.1.3] - 2025-09-24
24
+
25
+ ### Added
26
+ - Local development script `mcp_server.sh` for running from project directory
27
+ - Pipx installation support for system-wide deployment
28
+ - Claude Desktop configuration documentation
29
+
30
+ ### Fixed
31
+ - MCP server connection stability with improved error handling
32
+ - Better EOF and broken pipe handling in MCP server
33
+ - Proper stderr logging to avoid JSON-RPC interference
34
+
35
+ ### Changed
36
+ - Simplified MCP installation with single recommended pipx approach
37
+ - Improved MCP server robustness for Claude Desktop integration
38
+
18
39
  ## [0.1.2] - 2025-09-24
19
40
 
20
41
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-ticketer
3
- Version: 0.1.2
3
+ Version: 0.1.4
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.2"
3
+ __version__ = "0.1.4"
4
4
  __version_info__ = tuple(int(part) for part in __version__.split("."))
5
5
 
6
6
  # Package metadata
@@ -848,15 +848,19 @@ def mcp(
848
848
  console.print("[dim]Server running on stdio. Send JSON-RPC requests via stdin.[/dim]")
849
849
 
850
850
  # Create and run server
851
- server = MCPTicketServer(adapter_type, adapter_config)
852
-
853
851
  try:
852
+ server = MCPTicketServer(adapter_type, adapter_config)
854
853
  asyncio.run(server.run())
855
854
  except KeyboardInterrupt:
856
855
  # Also send this to stderr
857
856
  if sys.stderr.isatty():
858
857
  console.print("\n[yellow]Server stopped by user[/yellow]")
859
- asyncio.run(server.stop())
858
+ if 'server' in locals():
859
+ asyncio.run(server.stop())
860
+ except Exception as e:
861
+ # Log error to stderr
862
+ sys.stderr.write(f"MCP server error: {e}\n")
863
+ sys.exit(1)
860
864
 
861
865
 
862
866
  def main():
@@ -306,10 +306,10 @@ class MCPTicketServer:
306
306
  Server capabilities
307
307
  """
308
308
  return {
309
- "protocolVersion": "1.0.0",
309
+ "protocolVersion": "0.1.0",
310
310
  "serverInfo": {
311
311
  "name": "mcp-ticketer",
312
- "version": "0.1.2"
312
+ "version": "0.1.4"
313
313
  },
314
314
  "capabilities": {
315
315
  "tools": {
@@ -403,15 +403,22 @@ class MCPTicketServer:
403
403
  async def run(self) -> None:
404
404
  """Run the MCP server, reading from stdin and writing to stdout."""
405
405
  self.running = True
406
- reader = asyncio.StreamReader()
407
- protocol = asyncio.StreamReaderProtocol(reader)
408
- await asyncio.get_event_loop().connect_read_pipe(lambda: protocol, sys.stdin)
406
+
407
+ try:
408
+ reader = asyncio.StreamReader()
409
+ protocol = asyncio.StreamReaderProtocol(reader)
410
+ await asyncio.get_event_loop().connect_read_pipe(lambda: protocol, sys.stdin)
411
+ except Exception as e:
412
+ sys.stderr.write(f"Failed to connect to stdin: {str(e)}\n")
413
+ return
409
414
 
410
415
  # Main message loop
411
416
  while self.running:
412
417
  try:
413
418
  line = await reader.readline()
414
419
  if not line:
420
+ # EOF reached, exit gracefully
421
+ sys.stderr.write("EOF reached, shutting down server\n")
415
422
  break
416
423
 
417
424
  # Parse JSON-RPC request
@@ -434,6 +441,11 @@ class MCPTicketServer:
434
441
  sys.stdout.flush()
435
442
 
436
443
  except KeyboardInterrupt:
444
+ sys.stderr.write("Received interrupt signal\n")
445
+ break
446
+
447
+ except BrokenPipeError:
448
+ sys.stderr.write("Connection closed by client\n")
437
449
  break
438
450
 
439
451
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-ticketer
3
- Version: 0.1.2
3
+ Version: 0.1.4
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