mcp-proxy-adapter 3.0.1__tar.gz → 3.0.2__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.
Files changed (215) hide show
  1. {mcp_proxy_adapter-3.0.1/mcp_proxy_adapter.egg-info → mcp_proxy_adapter-3.0.2}/PKG-INFO +1 -1
  2. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/OPENAPI_SCHEMA.md +49 -1
  3. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/OPENAPI_SCHEMA.md +49 -1
  4. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/server.py +33 -59
  5. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/custom_openapi.py +47 -10
  6. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/functional/test_api.py +19 -1
  7. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/version.py +1 -1
  8. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2/mcp_proxy_adapter.egg-info}/PKG-INFO +1 -1
  9. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/pyproject.toml +1 -1
  10. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/setup.py +1 -1
  11. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/LICENSE +0 -0
  12. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/MANIFEST.in +0 -0
  13. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/README.md +0 -0
  14. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/API_SCHEMA.md +0 -0
  15. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/AUTOMATED_PUBLISHING.md +0 -0
  16. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/BASIC_ARCHITECTURE.md +0 -0
  17. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/COMMAND_CHECKLIST.md +0 -0
  18. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/COMMAND_RESULTS.md +0 -0
  19. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/COMMAND_TEMPLATE.md +0 -0
  20. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/CONFIGURATION_PRINCIPLES.md +0 -0
  21. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/DOCUMENTATION_MAP.md +0 -0
  22. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/DOCUMENTATION_STANDARDS.md +0 -0
  23. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/ERROR_HANDLING.md +0 -0
  24. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/EXAMPLES_COMMAND_CLASSES.md +0 -0
  25. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/GLOSSARY.md +0 -0
  26. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/LOGGING_SYSTEM.md +0 -0
  27. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/NAMING_STANDARDS.md +0 -0
  28. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/PROJECT_EXTENSION_GUIDE.md +0 -0
  29. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/PROJECT_IDEOLOGY.md +0 -0
  30. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/PROJECT_RULES.md +0 -0
  31. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/PROJECT_STRUCTURE.md +0 -0
  32. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/PUBLISHING_TO_PYPI.md +0 -0
  33. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/README.md +0 -0
  34. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/api/cmd_endpoint.md +0 -0
  35. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/api/errors.md +0 -0
  36. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/api/intro.md +0 -0
  37. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/api/requests.md +0 -0
  38. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/api/responses.md +0 -0
  39. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/commands/get_date_command.md +0 -0
  40. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/commands/help_command.md +0 -0
  41. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/commands/index.md +0 -0
  42. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/commands/new_uuid4_command.md +0 -0
  43. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/development/COMMAND_METADATA_ENHANCEMENT.md +0 -0
  44. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/development/METADATA_COMMANDS.md +0 -0
  45. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/development/OPENAPI_CUSTOMIZATION.md +0 -0
  46. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/development/REMOVE_COMMAND_GUIDE.md +0 -0
  47. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/development/TOOL_INTEGRATION.md +0 -0
  48. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/development/architecture.md +0 -0
  49. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/examples/README.md +0 -0
  50. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/examples/anti_patterns.md +0 -0
  51. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/examples/basic_example.md +0 -0
  52. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/examples/complete_example.md +0 -0
  53. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/examples/minimal_example.md +0 -0
  54. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/testing/README.md +0 -0
  55. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/user/basic_usage.md +0 -0
  56. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/user/configuration.md +0 -0
  57. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/user/deployment.md +0 -0
  58. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/user/examples.md +0 -0
  59. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/EN/user/installation.md +0 -0
  60. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/API_SCHEMA.md +0 -0
  61. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/AUTOMATED_PUBLISHING.md +0 -0
  62. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/BASIC_ARCHITECTURE.md +0 -0
  63. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/COMMAND_CHECKLIST.md +0 -0
  64. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/COMMAND_RESULTS.md +0 -0
  65. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/COMMAND_TEMPLATE.md +0 -0
  66. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/CONFIGURATION_PRINCIPLES.md +0 -0
  67. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/DOCUMENTATION_MAP.md +0 -0
  68. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/DOCUMENTATION_STANDARDS.md +0 -0
  69. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/ERROR_HANDLING.md +0 -0
  70. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/EXAMPLES_COMMAND_CLASSES.md +0 -0
  71. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/GLOSSARY.md +0 -0
  72. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/LOGGING_SYSTEM.md +0 -0
  73. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/NAMING_STANDARDS.md +0 -0
  74. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/PROJECT_EXTENSION_GUIDE.md +0 -0
  75. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/PROJECT_IDEOLOGY.md +0 -0
  76. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/PROJECT_RULES.md +0 -0
  77. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/PROJECT_STRUCTURE.md +0 -0
  78. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/PUBLISHING_TO_PYPI.md +0 -0
  79. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/README.md +0 -0
  80. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/api/cmd_endpoint.md +0 -0
  81. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/api/errors.md +0 -0
  82. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/api/intro.md +0 -0
  83. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/api/requests.md +0 -0
  84. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/api/responses.md +0 -0
  85. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/commands/get_date_command.md +0 -0
  86. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/commands/help_command.md +0 -0
  87. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/commands/index.md +0 -0
  88. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/commands/new_uuid4_command.md +0 -0
  89. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/development/COMMAND_METADATA_ENHANCEMENT.md +0 -0
  90. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/development/METADATA_COMMANDS.md +0 -0
  91. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/development/OPENAPI_CUSTOMIZATION.md +0 -0
  92. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/development/PLAN_REALIZACII_METADATA.md +0 -0
  93. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/development/REMOVE_COMMAND_GUIDE.md +0 -0
  94. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/development/TOOL_INTEGRATION.md +0 -0
  95. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/development/architecture.md +0 -0
  96. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/examples/README.md +0 -0
  97. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/examples/anti_patterns.md +0 -0
  98. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/examples/basic_example.md +0 -0
  99. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/examples/complete_example.md +0 -0
  100. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/examples/minimal_example.md +0 -0
  101. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/testing/README.md +0 -0
  102. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/user/basic_usage.md +0 -0
  103. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/user/configuration.md +0 -0
  104. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/user/deployment.md +0 -0
  105. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/user/examples.md +0 -0
  106. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/docs/RU/user/installation.md +0 -0
  107. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/__init__.py +0 -0
  108. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/anti_patterns/README.md +0 -0
  109. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/anti_patterns/__init__.py +0 -0
  110. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/anti_patterns/bad_design/README.md +0 -0
  111. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/anti_patterns/bad_design/global_state.py +0 -0
  112. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/anti_patterns/bad_design/monolithic_command.py +0 -0
  113. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/README.md +0 -0
  114. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/__init__.py +0 -0
  115. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/commands/__init__.py +0 -0
  116. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/commands/echo_command.py +0 -0
  117. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/commands/math_command.py +0 -0
  118. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/commands/time_command.py +0 -0
  119. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/config.json +0 -0
  120. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/docs/EN/README.md +0 -0
  121. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/docs/RU/README.md +0 -0
  122. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/server.py +0 -0
  123. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/basic_example/tests/conftest.py +0 -0
  124. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/commands/echo_command.py +0 -0
  125. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/commands/echo_result.py +0 -0
  126. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/commands/get_date_command.py +0 -0
  127. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/commands/new_uuid4_command.py +0 -0
  128. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/Dockerfile +0 -0
  129. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/README.md +0 -0
  130. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/__init__.py +0 -0
  131. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/commands/__init__.py +0 -0
  132. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/commands/system_command.py +0 -0
  133. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/config.json +0 -0
  134. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/configs/config.dev.yaml +0 -0
  135. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/configs/config.docker.yaml +0 -0
  136. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/docker-compose.yml +0 -0
  137. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/complete_example/requirements.txt +0 -0
  138. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/minimal_example/README.md +0 -0
  139. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/minimal_example/__init__.py +0 -0
  140. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/minimal_example/config.json +0 -0
  141. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/minimal_example/main.py +0 -0
  142. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/minimal_example/simple_server.py +0 -0
  143. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/minimal_example/tests/conftest.py +0 -0
  144. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/minimal_example/tests/test_hello_command.py +0 -0
  145. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/minimal_example/tests/test_integration.py +0 -0
  146. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/server.py +0 -0
  147. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/simple_server.py +0 -0
  148. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/test_server.py +0 -0
  149. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/examples/tool_description_example.py +0 -0
  150. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/__init__.py +0 -0
  151. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/__init__.py +0 -0
  152. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/app.py +0 -0
  153. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/handlers.py +0 -0
  154. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/middleware/__init__.py +0 -0
  155. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/middleware/auth.py +0 -0
  156. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/middleware/base.py +0 -0
  157. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/middleware/error_handling.py +0 -0
  158. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/middleware/logging.py +0 -0
  159. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/middleware/performance.py +0 -0
  160. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/middleware/rate_limit.py +0 -0
  161. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/schemas.py +0 -0
  162. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/tool_integration.py +0 -0
  163. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/api/tools.py +0 -0
  164. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/commands/__init__.py +0 -0
  165. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/commands/base.py +0 -0
  166. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/commands/command_registry.py +0 -0
  167. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/commands/config_command.py +0 -0
  168. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/commands/health_command.py +0 -0
  169. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/commands/help_command.py +0 -0
  170. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/commands/result.py +0 -0
  171. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/config.py +0 -0
  172. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/core/__init__.py +0 -0
  173. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/core/errors.py +0 -0
  174. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/core/logging.py +0 -0
  175. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/core/utils.py +0 -0
  176. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/openapi.py +0 -0
  177. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/py.typed +0 -0
  178. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/schemas/base_schema.json +0 -0
  179. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/schemas/openapi_schema.json +0 -0
  180. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/__init__.py +0 -0
  181. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/api/__init__.py +0 -0
  182. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/api/test_cmd_endpoint.py +0 -0
  183. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/api/test_middleware.py +0 -0
  184. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/commands/__init__.py +0 -0
  185. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/commands/test_config_command.py +0 -0
  186. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/commands/test_echo_command.py +0 -0
  187. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/commands/test_help_command.py +0 -0
  188. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/conftest.py +0 -0
  189. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/functional/__init__.py +0 -0
  190. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/integration/__init__.py +0 -0
  191. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/integration/test_cmd_integration.py +0 -0
  192. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/integration/test_integration.py +0 -0
  193. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/performance/__init__.py +0 -0
  194. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/performance/test_performance.py +0 -0
  195. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/stubs/__init__.py +0 -0
  196. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/stubs/echo_command.py +0 -0
  197. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/test_api_endpoints.py +0 -0
  198. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/test_api_handlers.py +0 -0
  199. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/test_base_command.py +0 -0
  200. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/test_batch_requests.py +0 -0
  201. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/test_command_registry.py +0 -0
  202. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/test_config.py +0 -0
  203. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/test_utils.py +0 -0
  204. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/unit/__init__.py +0 -0
  205. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/unit/test_base_command.py +0 -0
  206. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter/tests/unit/test_config.py +0 -0
  207. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter.egg-info/SOURCES.txt +0 -0
  208. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  209. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
  210. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
  211. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/requirements.txt +0 -0
  212. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/setup.cfg +0 -0
  213. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/tests/api/test_tool_description.py +0 -0
  214. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/tests/commands/test_command_metadata.py +0 -0
  215. {mcp_proxy_adapter-3.0.1 → mcp_proxy_adapter-3.0.2}/tests/commands/test_help_command.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp_proxy_adapter
3
- Version: 3.0.1
3
+ Version: 3.0.2
4
4
  Summary: Reliable microservice with unified JSON-RPC endpoint
5
5
  Home-page: https://github.com/yourusername/mcp-proxy-adapter
6
6
  Author: MCP Team
@@ -484,4 +484,52 @@ classDiagram
484
484
  4. **Compatibility**
485
485
  - Full support for JSON-RPC 2.0
486
486
  - Compliance with OpenAPI 3.0 specification
487
- - Backward compatibility with existing clients
487
+ - Backward compatibility with existing clients
488
+
489
+ ## Customizing OpenAPI Schema Fields
490
+
491
+ You can override the `title`, `description`, and `version` fields of the OpenAPI schema without editing the base schema file. This is done by passing the corresponding parameters to the FastAPI application and using the `custom_openapi` function.
492
+
493
+ ### Example
494
+
495
+ ```python
496
+ from fastapi import FastAPI
497
+ from mcp_proxy_adapter.custom_openapi import custom_openapi
498
+
499
+ app = FastAPI(
500
+ title="Custom Project Title",
501
+ description="Custom project description for OpenAPI schema.",
502
+ version="2.1.0"
503
+ )
504
+
505
+ # Use custom OpenAPI schema
506
+ default_openapi = app.openapi
507
+ app.openapi = lambda: custom_openapi(app)
508
+
509
+ # Now /openapi.json will reflect the custom title, description, and version
510
+ ```
511
+
512
+ **Advantages:**
513
+ - No need to manually edit the base OpenAPI schema file.
514
+ - Flexible for use in different projects.
515
+ - Standard FastAPI fields are used for customization.
516
+
517
+ ### Test Example
518
+
519
+ A test is provided to ensure that custom `title`, `description`, and `version` are correctly set in the OpenAPI schema:
520
+
521
+ ```python
522
+ def test_custom_openapi_schema_fields():
523
+ from fastapi import FastAPI
524
+ from mcp_proxy_adapter.custom_openapi import custom_openapi
525
+
526
+ app = FastAPI(
527
+ title="Custom Title",
528
+ description="Custom Description",
529
+ version="9.9.9"
530
+ )
531
+ schema = custom_openapi(app)
532
+ assert schema["info"]["title"] == "Custom Title"
533
+ assert schema["info"]["description"] == "Custom Description"
534
+ assert schema["info"]["version"] == "9.9.9"
535
+ ```
@@ -484,4 +484,52 @@ classDiagram
484
484
  4. **Совместимость**
485
485
  - Полная поддержка JSON-RPC 2.0
486
486
  - Соответствие спецификации OpenAPI 3.0
487
- - Обратная совместимость с существующими клиентами
487
+ - Обратная совместимость с существующими клиентами
488
+
489
+ ## Кастомизация полей OpenAPI-схемы
490
+
491
+ Вы можете переопределять поля `title`, `description` и `version` в OpenAPI-схеме без ручного редактирования базового файла схемы. Для этого достаточно передать соответствующие параметры в FastAPI-приложение и использовать функцию `custom_openapi`.
492
+
493
+ ### Пример
494
+
495
+ ```python
496
+ from fastapi import FastAPI
497
+ from mcp_proxy_adapter.custom_openapi import custom_openapi
498
+
499
+ app = FastAPI(
500
+ title="Заголовок проекта",
501
+ description="Описание проекта для OpenAPI-схемы.",
502
+ version="2.1.0"
503
+ )
504
+
505
+ # Используем кастомную OpenAPI-схему
506
+ default_openapi = app.openapi
507
+ app.openapi = lambda: custom_openapi(app)
508
+
509
+ # Теперь /openapi.json будет содержать кастомные title, description и version
510
+ ```
511
+
512
+ **Преимущества:**
513
+ - Нет необходимости вручную редактировать базовый файл OpenAPI-схемы.
514
+ - Гибко для использования в разных проектах.
515
+ - Используются стандартные поля FastAPI для кастомизации.
516
+
517
+ ### Пример теста
518
+
519
+ Добавлен тест, который проверяет, что кастомные `title`, `description` и `version` корректно устанавливаются в OpenAPI-схеме:
520
+
521
+ ```python
522
+ def test_custom_openapi_schema_fields():
523
+ from fastapi import FastAPI
524
+ from mcp_proxy_adapter.custom_openapi import custom_openapi
525
+
526
+ app = FastAPI(
527
+ title="Custom Title",
528
+ description="Custom Description",
529
+ version="9.9.9"
530
+ )
531
+ schema = custom_openapi(app)
532
+ assert schema["info"]["title"] == "Custom Title"
533
+ assert schema["info"]["description"] == "Custom Description"
534
+ assert schema["info"]["version"] == "9.9.9"
535
+ ```
@@ -8,14 +8,12 @@ environment-specific configuration, and multiple commands.
8
8
  import os
9
9
  import sys
10
10
  import argparse
11
- from typing import Dict, Any
12
11
  from pathlib import Path
13
-
14
- import mcp_proxy_adapter as mcp
15
- from mcp_proxy_adapter import MicroService
12
+ import uvicorn
13
+ from mcp_proxy_adapter.api.app import create_app
16
14
  from mcp_proxy_adapter.commands.command_registry import registry
17
- from mcp_proxy_adapter.core.logging import logger
18
15
  from mcp_proxy_adapter.config import config
16
+ from mcp_proxy_adapter.core.logging import logger, setup_logging
19
17
 
20
18
  # Add commands directory to path for local imports
21
19
  sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
@@ -28,32 +26,22 @@ def parse_args():
28
26
  Returns:
29
27
  Parsed arguments
30
28
  """
31
- parser = argparse.ArgumentParser(description="MCP Microservice Example")
29
+ parser = argparse.ArgumentParser(description="MCP Complete Example")
32
30
  parser.add_argument(
33
- "--config",
31
+ "--config",
34
32
  default="configs/config.dev.yaml",
35
33
  help="Path to configuration file"
36
34
  )
37
35
  return parser.parse_args()
38
36
 
39
37
 
40
- def ensure_directories(config_path: str):
38
+ def ensure_directories():
41
39
  """
42
40
  Create necessary directories based on configuration.
43
-
44
- Args:
45
- config_path: Path to configuration file
46
41
  """
47
- # Extract base directory
48
42
  base_dir = os.path.dirname(os.path.abspath(__file__))
49
-
50
- # Create logs directory
51
43
  os.makedirs(os.path.join(base_dir, "logs"), exist_ok=True)
52
-
53
- # Create cache directory
54
44
  os.makedirs(os.path.join(base_dir, "cache"), exist_ok=True)
55
-
56
- # Create data directory
57
45
  os.makedirs(os.path.join(base_dir, "data"), exist_ok=True)
58
46
 
59
47
 
@@ -65,74 +53,60 @@ def setup_application(config_file=None):
65
53
  config_file: Path to configuration file (optional)
66
54
 
67
55
  Returns:
68
- Configured microservice object
56
+ Configured FastAPI application
69
57
  """
70
- # Parse command line arguments if config_file not provided
71
58
  if config_file is None:
72
59
  args = parse_args()
73
60
  config_file = args.config
74
-
75
- # Get absolute path to config file
76
61
  current_dir = Path(__file__).parent.absolute()
77
62
  config_path = current_dir / config_file
78
-
79
- # Fall back to config.json if specified file doesn't exist
80
63
  if not config_path.exists():
81
64
  config_path = current_dir / "config.json"
82
-
83
- # Create necessary directories
84
- ensure_directories(str(config_path))
85
-
86
- # Load configuration if exists
65
+ ensure_directories()
87
66
  if config_path.exists():
88
67
  config.load_from_file(str(config_path))
89
68
  logger.info(f"Loaded configuration from {config_path}")
90
69
  else:
91
70
  logger.warning(f"Configuration file {config_path} not found, using defaults")
92
-
93
- # Create microservice
94
- service = MicroService(
95
- title="Complete MCP Microservice Example",
96
- description="Full-featured microservice with Docker support",
97
- version="1.0.0",
98
- config_path=str(config_path) if config_path.exists() else None
99
- )
100
-
101
- # Safely register commands from package
71
+ app = create_app()
72
+ app.title = "Complete MCP Microservice Example"
73
+ app.description = "Full-featured microservice with Docker support"
74
+ app.version = "1.0.0"
75
+ # Discover and register commands from the commands directory
76
+ package_path = "commands"
102
77
  try:
103
- # Clear any existing registrations to prevent conflicts
104
- package_path = "commands"
105
-
106
- # Get currently registered commands
107
- commands = registry.get_all_commands()
108
- for cmd_name in list(commands.keys()):
78
+ registered_commands = registry.get_all_commands()
79
+ for cmd_name in list(registered_commands.keys()):
109
80
  try:
110
81
  registry.unregister(cmd_name)
111
82
  except Exception as e:
112
83
  logger.debug(f"Error unregistering command {cmd_name}: {e}")
113
-
114
- # Discover and register commands
115
- service.discover_commands(package_path)
116
- logger.info(f"Discovered and registered commands from package: {package_path}")
84
+ registry.discover_commands(package_path)
85
+ logger.info(f"Discovered commands from package: {package_path}")
117
86
  except Exception as e:
118
87
  logger.error(f"Error discovering commands: {e}")
119
-
120
- return service
88
+ return app
121
89
 
122
90
 
123
91
  def main():
124
92
  """Run microservice with command discovery."""
125
- # Setup application
126
- service = setup_application()
127
-
128
- # Check if port is overridden by environment variable (for testing)
93
+ log_level = config.get("logging.level", "INFO")
94
+ setup_logging(log_level)
95
+ app = setup_application()
96
+ host = config.get("server.host", "0.0.0.0")
97
+ port = config.get("server.port", 8000)
129
98
  if "TEST_SERVER_PORT" in os.environ:
130
99
  port = int(os.environ["TEST_SERVER_PORT"])
131
- service.port = port
132
100
  logger.info(f"Using test port from environment: {port}")
133
-
134
- # Run server with parameters from configuration
135
- service.run()
101
+ logger.info(f"Starting server on {host}:{port}")
102
+ debug = config.get("server.debug", False)
103
+ uvicorn.run(
104
+ app,
105
+ host=host,
106
+ port=port,
107
+ reload=debug,
108
+ log_level=log_level.lower()
109
+ )
136
110
 
137
111
 
138
112
  if __name__ == "__main__":
@@ -18,8 +18,16 @@ class CustomOpenAPIGenerator:
18
18
  """
19
19
  Custom OpenAPI schema generator for compatibility with MCP-Proxy.
20
20
 
21
+ EN:
21
22
  This generator creates an OpenAPI schema that matches the format expected by MCP-Proxy,
22
23
  enabling dynamic command loading and proper tool representation in AI models.
24
+ Allows overriding title, description, and version for schema customization.
25
+
26
+ RU:
27
+ Кастомный генератор схемы OpenAPI для совместимости с MCP-Proxy.
28
+ Позволяет создавать схему OpenAPI в формате, ожидаемом MCP-Proxy,
29
+ с возможностью динамической подгрузки команд и корректного отображения инструментов для AI-моделей.
30
+ Поддерживает переопределение title, description и version для кастомизации схемы.
23
31
  """
24
32
 
25
33
  def __init__(self):
@@ -88,38 +96,67 @@ class CustomOpenAPIGenerator:
88
96
 
89
97
  return cmd_schema
90
98
 
91
- def generate(self) -> Dict[str, Any]:
99
+ def generate(self, title: Optional[str] = None, description: Optional[str] = None, version: Optional[str] = None) -> Dict[str, Any]:
92
100
  """
101
+ EN:
93
102
  Generate the complete OpenAPI schema compatible with MCP-Proxy.
103
+ Optionally override title, description, and version.
104
+
105
+ RU:
106
+ Генерирует полную схему OpenAPI, совместимую с MCP-Proxy.
107
+ Позволяет опционально переопределить title, description и version.
108
+
109
+ Args:
110
+ title: Custom title for the schema / Кастомный заголовок схемы
111
+ description: Custom description for the schema / Кастомное описание схемы
112
+ version: Custom version for the schema / Кастомная версия схемы
94
113
 
95
114
  Returns:
96
- Dict containing the complete OpenAPI schema.
115
+ Dict containing the complete OpenAPI schema / Словарь с полной схемой OpenAPI
97
116
  """
98
117
  # Deep copy the base schema to avoid modifying it
99
118
  schema = deepcopy(self.base_schema)
100
-
119
+
120
+ # Optionally override info fields
121
+ if title:
122
+ schema["info"]["title"] = title
123
+ if description:
124
+ schema["info"]["description"] = description
125
+ if version:
126
+ schema["info"]["version"] = version
127
+
101
128
  # Add commands to schema
102
129
  self._add_commands_to_schema(schema)
103
-
130
+
104
131
  logger.info(f"Generated OpenAPI schema with {len(registry.get_all_commands())} commands")
105
-
132
+
106
133
  return schema
107
134
 
108
135
 
109
136
  def custom_openapi(app: FastAPI) -> Dict[str, Any]:
110
137
  """
138
+ EN:
111
139
  Create a custom OpenAPI schema for the FastAPI application.
140
+ Passes app's title, description, and version to the generator.
141
+
142
+ RU:
143
+ Создаёт кастомную OpenAPI-схему для FastAPI-приложения.
144
+ Передаёт параметры title, description и version из приложения в генератор схемы.
112
145
 
113
146
  Args:
114
- app: The FastAPI application.
147
+ app: The FastAPI application / FastAPI-приложение
115
148
 
116
149
  Returns:
117
- Dict containing the custom OpenAPI schema.
150
+ Dict containing the custom OpenAPI schema / Словарь с кастомной OpenAPI-схемой
118
151
  """
119
152
  generator = CustomOpenAPIGenerator()
120
- openapi_schema = generator.generate()
121
-
153
+ openapi_schema = generator.generate(
154
+ title=getattr(app, 'title', None),
155
+ description=getattr(app, 'description', None),
156
+ version=getattr(app, 'version', None)
157
+ )
158
+
122
159
  # Cache the schema
123
160
  app.openapi_schema = openapi_schema
124
-
161
+
125
162
  return openapi_schema
@@ -232,4 +232,22 @@ def test_batch_requests(test_client: TestClient, json_rpc_request: Dict[str, Any
232
232
  assert data[0]["id"] == "1"
233
233
 
234
234
  assert data[1]["result"]["params"] == {"request_id": "2"}
235
- assert data[1]["id"] == "2"
235
+ assert data[1]["id"] == "2"
236
+
237
+
238
+ def test_custom_openapi_schema_fields():
239
+ """
240
+ Test that custom title, description, and version are set in the OpenAPI schema.
241
+ """
242
+ from fastapi import FastAPI
243
+ from mcp_proxy_adapter.custom_openapi import custom_openapi
244
+
245
+ app = FastAPI(
246
+ title="Custom Title",
247
+ description="Custom Description",
248
+ version="9.9.9"
249
+ )
250
+ schema = custom_openapi(app)
251
+ assert schema["info"]["title"] == "Custom Title"
252
+ assert schema["info"]["description"] == "Custom Description"
253
+ assert schema["info"]["version"] == "9.9.9"
@@ -1,3 +1,3 @@
1
1
  """Version information for MCP Microservice."""
2
2
 
3
- __version__ = "3.0.1"
3
+ __version__ = "3.0.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp_proxy_adapter
3
- Version: 3.0.1
3
+ Version: 3.0.2
4
4
  Summary: Reliable microservice with unified JSON-RPC endpoint
5
5
  Home-page: https://github.com/yourusername/mcp-proxy-adapter
6
6
  Author: MCP Team
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mcp_proxy_adapter"
7
- version = "3.0.1"
7
+ version = "3.0.2"
8
8
  description = "Reliable microservice with unified JSON-RPC endpoint"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="mcp-proxy-adapter",
5
- version="3.0.1",
5
+ version="3.0.2",
6
6
  description="Adapter for MCP Proxy JSON-RPC communications",
7
7
  long_description=open("README.md").read(),
8
8
  long_description_content_type="text/markdown",