mcp-proxy-adapter 2.1.16__tar.gz → 3.0.0__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 (196) hide show
  1. {mcp_proxy_adapter-2.1.16 → mcp_proxy_adapter-3.0.0}/MANIFEST.in +1 -1
  2. mcp_proxy_adapter-3.0.0/PKG-INFO +200 -0
  3. mcp_proxy_adapter-3.0.0/README.md +148 -0
  4. mcp_proxy_adapter-3.0.0/docs/EN/API_SCHEMA.md +183 -0
  5. mcp_proxy_adapter-3.0.0/docs/EN/BASIC_ARCHITECTURE.md +210 -0
  6. mcp_proxy_adapter-3.0.0/docs/EN/COMMAND_CHECKLIST.md +81 -0
  7. mcp_proxy_adapter-3.0.0/docs/EN/COMMAND_RESULTS.md +252 -0
  8. mcp_proxy_adapter-3.0.0/docs/EN/COMMAND_TEMPLATE.md +283 -0
  9. mcp_proxy_adapter-3.0.0/docs/EN/CONFIGURATION_PRINCIPLES.md +305 -0
  10. mcp_proxy_adapter-3.0.0/docs/EN/DOCUMENTATION_MAP.md +86 -0
  11. mcp_proxy_adapter-3.0.0/docs/EN/DOCUMENTATION_STANDARDS.md +118 -0
  12. mcp_proxy_adapter-3.0.0/docs/EN/ERROR_HANDLING.md +225 -0
  13. mcp_proxy_adapter-3.0.0/docs/EN/EXAMPLES_COMMAND_CLASSES.md +87 -0
  14. mcp_proxy_adapter-3.0.0/docs/EN/GLOSSARY.md +53 -0
  15. mcp_proxy_adapter-3.0.0/docs/EN/LOGGING_SYSTEM.md +258 -0
  16. mcp_proxy_adapter-3.0.0/docs/EN/NAMING_STANDARDS.md +216 -0
  17. mcp_proxy_adapter-3.0.0/docs/EN/OPENAPI_SCHEMA.md +487 -0
  18. mcp_proxy_adapter-3.0.0/docs/EN/PROJECT_EXTENSION_GUIDE.md +696 -0
  19. mcp_proxy_adapter-3.0.0/docs/EN/PROJECT_IDEOLOGY.md +139 -0
  20. mcp_proxy_adapter-3.0.0/docs/EN/PROJECT_RULES.md +161 -0
  21. mcp_proxy_adapter-3.0.0/docs/EN/PROJECT_STRUCTURE.md +166 -0
  22. mcp_proxy_adapter-3.0.0/docs/EN/PUBLISHING_TO_PYPI.md +175 -0
  23. mcp_proxy_adapter-3.0.0/docs/EN/README.md +20 -0
  24. mcp_proxy_adapter-3.0.0/docs/EN/api/cmd_endpoint.md +177 -0
  25. mcp_proxy_adapter-3.0.0/docs/EN/api/errors.md +100 -0
  26. mcp_proxy_adapter-3.0.0/docs/EN/api/intro.md +30 -0
  27. mcp_proxy_adapter-3.0.0/docs/EN/api/requests.md +79 -0
  28. mcp_proxy_adapter-3.0.0/docs/EN/api/responses.md +104 -0
  29. mcp_proxy_adapter-3.0.0/docs/EN/commands/get_date_command.md +128 -0
  30. mcp_proxy_adapter-3.0.0/docs/EN/commands/help_command.md +239 -0
  31. mcp_proxy_adapter-3.0.0/docs/EN/commands/index.md +54 -0
  32. mcp_proxy_adapter-3.0.0/docs/EN/commands/new_uuid4_command.md +110 -0
  33. mcp_proxy_adapter-3.0.0/docs/EN/development/REMOVE_COMMAND_GUIDE.md +122 -0
  34. mcp_proxy_adapter-3.0.0/docs/EN/development/architecture.md +97 -0
  35. mcp_proxy_adapter-3.0.0/docs/EN/examples/README.md +37 -0
  36. mcp_proxy_adapter-3.0.0/docs/EN/examples/anti_patterns.md +156 -0
  37. mcp_proxy_adapter-3.0.0/docs/EN/examples/basic_example.md +168 -0
  38. mcp_proxy_adapter-3.0.0/docs/EN/examples/complete_example.md +190 -0
  39. mcp_proxy_adapter-3.0.0/docs/EN/examples/minimal_example.md +127 -0
  40. mcp_proxy_adapter-3.0.0/docs/EN/testing/README.md +172 -0
  41. mcp_proxy_adapter-3.0.0/docs/EN/user/basic_usage.md +122 -0
  42. mcp_proxy_adapter-3.0.0/docs/EN/user/configuration.md +67 -0
  43. mcp_proxy_adapter-3.0.0/docs/EN/user/deployment.md +166 -0
  44. mcp_proxy_adapter-3.0.0/docs/EN/user/examples.md +169 -0
  45. mcp_proxy_adapter-3.0.0/docs/EN/user/installation.md +56 -0
  46. mcp_proxy_adapter-3.0.0/docs/RU/API_SCHEMA.md +183 -0
  47. mcp_proxy_adapter-3.0.0/docs/RU/BASIC_ARCHITECTURE.md +210 -0
  48. mcp_proxy_adapter-3.0.0/docs/RU/COMMAND_CHECKLIST.md +152 -0
  49. mcp_proxy_adapter-3.0.0/docs/RU/COMMAND_RESULTS.md +286 -0
  50. mcp_proxy_adapter-3.0.0/docs/RU/COMMAND_TEMPLATE.md +283 -0
  51. mcp_proxy_adapter-3.0.0/docs/RU/CONFIGURATION_PRINCIPLES.md +305 -0
  52. mcp_proxy_adapter-3.0.0/docs/RU/DOCUMENTATION_MAP.md +86 -0
  53. mcp_proxy_adapter-3.0.0/docs/RU/DOCUMENTATION_STANDARDS.md +118 -0
  54. mcp_proxy_adapter-3.0.0/docs/RU/ERROR_HANDLING.md +225 -0
  55. mcp_proxy_adapter-3.0.0/docs/RU/EXAMPLES_COMMAND_CLASSES.md +87 -0
  56. mcp_proxy_adapter-3.0.0/docs/RU/GLOSSARY.md +53 -0
  57. mcp_proxy_adapter-3.0.0/docs/RU/LOGGING_SYSTEM.md +258 -0
  58. mcp_proxy_adapter-3.0.0/docs/RU/NAMING_STANDARDS.md +216 -0
  59. mcp_proxy_adapter-3.0.0/docs/RU/OPENAPI_SCHEMA.md +487 -0
  60. mcp_proxy_adapter-3.0.0/docs/RU/PROJECT_EXTENSION_GUIDE.md +612 -0
  61. mcp_proxy_adapter-3.0.0/docs/RU/PROJECT_IDEOLOGY.md +139 -0
  62. mcp_proxy_adapter-3.0.0/docs/RU/PROJECT_RULES.md +161 -0
  63. mcp_proxy_adapter-3.0.0/docs/RU/PROJECT_STRUCTURE.md +166 -0
  64. mcp_proxy_adapter-3.0.0/docs/RU/PUBLISHING_TO_PYPI.md +175 -0
  65. mcp_proxy_adapter-3.0.0/docs/RU/README.md +20 -0
  66. mcp_proxy_adapter-3.0.0/docs/RU/api/cmd_endpoint.md +177 -0
  67. mcp_proxy_adapter-3.0.0/docs/RU/api/errors.md +100 -0
  68. mcp_proxy_adapter-3.0.0/docs/RU/api/intro.md +30 -0
  69. mcp_proxy_adapter-3.0.0/docs/RU/api/requests.md +79 -0
  70. mcp_proxy_adapter-3.0.0/docs/RU/api/responses.md +104 -0
  71. mcp_proxy_adapter-3.0.0/docs/RU/commands/get_date_command.md +128 -0
  72. mcp_proxy_adapter-3.0.0/docs/RU/commands/help_command.md +239 -0
  73. mcp_proxy_adapter-3.0.0/docs/RU/commands/index.md +54 -0
  74. mcp_proxy_adapter-3.0.0/docs/RU/commands/new_uuid4_command.md +110 -0
  75. mcp_proxy_adapter-3.0.0/docs/RU/development/REMOVE_COMMAND_GUIDE.md +122 -0
  76. mcp_proxy_adapter-3.0.0/docs/RU/development/architecture.md +97 -0
  77. mcp_proxy_adapter-3.0.0/docs/RU/examples/README.md +37 -0
  78. mcp_proxy_adapter-3.0.0/docs/RU/examples/anti_patterns.md +156 -0
  79. mcp_proxy_adapter-3.0.0/docs/RU/examples/basic_example.md +168 -0
  80. mcp_proxy_adapter-3.0.0/docs/RU/examples/complete_example.md +190 -0
  81. mcp_proxy_adapter-3.0.0/docs/RU/examples/minimal_example.md +127 -0
  82. mcp_proxy_adapter-3.0.0/docs/RU/testing/README.md +172 -0
  83. mcp_proxy_adapter-3.0.0/docs/RU/user/basic_usage.md +122 -0
  84. mcp_proxy_adapter-3.0.0/docs/RU/user/configuration.md +67 -0
  85. mcp_proxy_adapter-3.0.0/docs/RU/user/deployment.md +166 -0
  86. mcp_proxy_adapter-3.0.0/docs/RU/user/examples.md +169 -0
  87. mcp_proxy_adapter-3.0.0/docs/RU/user/installation.md +56 -0
  88. mcp_proxy_adapter-3.0.0/examples/__init__.py +19 -0
  89. mcp_proxy_adapter-3.0.0/examples/anti_patterns/README.md +51 -0
  90. mcp_proxy_adapter-3.0.0/examples/anti_patterns/__init__.py +9 -0
  91. mcp_proxy_adapter-3.0.0/examples/anti_patterns/bad_design/README.md +72 -0
  92. mcp_proxy_adapter-3.0.0/examples/anti_patterns/bad_design/global_state.py +170 -0
  93. mcp_proxy_adapter-3.0.0/examples/anti_patterns/bad_design/monolithic_command.py +272 -0
  94. mcp_proxy_adapter-3.0.0/examples/basic_example/README.md +131 -0
  95. mcp_proxy_adapter-3.0.0/examples/basic_example/__init__.py +8 -0
  96. mcp_proxy_adapter-3.0.0/examples/basic_example/commands/__init__.py +5 -0
  97. mcp_proxy_adapter-3.0.0/examples/basic_example/commands/echo_command.py +95 -0
  98. mcp_proxy_adapter-3.0.0/examples/basic_example/commands/math_command.py +151 -0
  99. mcp_proxy_adapter-3.0.0/examples/basic_example/commands/time_command.py +152 -0
  100. mcp_proxy_adapter-3.0.0/examples/basic_example/config.json +21 -0
  101. mcp_proxy_adapter-3.0.0/examples/basic_example/config.yaml +20 -0
  102. mcp_proxy_adapter-3.0.0/examples/basic_example/docs/EN/README.md +136 -0
  103. mcp_proxy_adapter-3.0.0/examples/basic_example/docs/RU/README.md +136 -0
  104. mcp_proxy_adapter-3.0.0/examples/basic_example/main.py +50 -0
  105. mcp_proxy_adapter-3.0.0/examples/basic_example/server.py +45 -0
  106. mcp_proxy_adapter-3.0.0/examples/basic_example/tests/conftest.py +243 -0
  107. mcp_proxy_adapter-3.0.0/examples/commands/echo_command.py +52 -0
  108. mcp_proxy_adapter-3.0.0/examples/commands/echo_result.py +65 -0
  109. mcp_proxy_adapter-3.0.0/examples/commands/get_date_command.py +98 -0
  110. mcp_proxy_adapter-3.0.0/examples/commands/new_uuid4_command.py +91 -0
  111. mcp_proxy_adapter-3.0.0/examples/complete_example/Dockerfile +24 -0
  112. mcp_proxy_adapter-3.0.0/examples/complete_example/README.md +92 -0
  113. mcp_proxy_adapter-3.0.0/examples/complete_example/__init__.py +8 -0
  114. mcp_proxy_adapter-3.0.0/examples/complete_example/commands/__init__.py +5 -0
  115. mcp_proxy_adapter-3.0.0/examples/complete_example/commands/system_command.py +327 -0
  116. mcp_proxy_adapter-3.0.0/examples/complete_example/config.json +41 -0
  117. mcp_proxy_adapter-3.0.0/examples/complete_example/configs/config.dev.yaml +40 -0
  118. mcp_proxy_adapter-3.0.0/examples/complete_example/configs/config.docker.yaml +40 -0
  119. mcp_proxy_adapter-3.0.0/examples/complete_example/docker-compose.yml +35 -0
  120. mcp_proxy_adapter-3.0.0/examples/complete_example/main.py +67 -0
  121. mcp_proxy_adapter-3.0.0/examples/complete_example/requirements.txt +20 -0
  122. mcp_proxy_adapter-3.0.0/examples/complete_example/server.py +85 -0
  123. mcp_proxy_adapter-3.0.0/examples/minimal_example/README.md +51 -0
  124. mcp_proxy_adapter-3.0.0/examples/minimal_example/__init__.py +8 -0
  125. mcp_proxy_adapter-3.0.0/examples/minimal_example/config.json +21 -0
  126. mcp_proxy_adapter-3.0.0/examples/minimal_example/config.yaml +26 -0
  127. mcp_proxy_adapter-3.0.0/examples/minimal_example/main.py +67 -0
  128. mcp_proxy_adapter-3.0.0/examples/minimal_example/simple_server.py +124 -0
  129. mcp_proxy_adapter-3.0.0/examples/minimal_example/tests/conftest.py +171 -0
  130. mcp_proxy_adapter-3.0.0/examples/minimal_example/tests/test_hello_command.py +111 -0
  131. mcp_proxy_adapter-3.0.0/examples/minimal_example/tests/test_integration.py +183 -0
  132. mcp_proxy_adapter-3.0.0/examples/server.py +69 -0
  133. mcp_proxy_adapter-3.0.0/examples/simple_server.py +137 -0
  134. mcp_proxy_adapter-3.0.0/examples/test_server.py +126 -0
  135. mcp_proxy_adapter-3.0.0/mcp_proxy_adapter/__init__.py +33 -0
  136. mcp_proxy_adapter-3.0.0/mcp_proxy_adapter/config.py +186 -0
  137. mcp_proxy_adapter-3.0.0/mcp_proxy_adapter/custom_openapi.py +125 -0
  138. mcp_proxy_adapter-3.0.0/mcp_proxy_adapter/framework.py +109 -0
  139. mcp_proxy_adapter-3.0.0/mcp_proxy_adapter/openapi.py +403 -0
  140. mcp_proxy_adapter-3.0.0/mcp_proxy_adapter/version.py +3 -0
  141. mcp_proxy_adapter-3.0.0/mcp_proxy_adapter.egg-info/PKG-INFO +200 -0
  142. mcp_proxy_adapter-3.0.0/mcp_proxy_adapter.egg-info/SOURCES.txt +149 -0
  143. {mcp_proxy_adapter-2.1.16 → mcp_proxy_adapter-3.0.0}/mcp_proxy_adapter.egg-info/requires.txt +2 -0
  144. {mcp_proxy_adapter-2.1.16 → mcp_proxy_adapter-3.0.0}/mcp_proxy_adapter.egg-info/top_level.txt +1 -0
  145. mcp_proxy_adapter-3.0.0/pyproject.toml +49 -0
  146. mcp_proxy_adapter-3.0.0/requirements.txt +9 -0
  147. mcp_proxy_adapter-3.0.0/setup.py +50 -0
  148. mcp_proxy_adapter-2.1.16/PKG-INFO +0 -341
  149. mcp_proxy_adapter-2.1.16/README.md +0 -309
  150. mcp_proxy_adapter-2.1.16/docs/RU/FAQ_HOWTO.md +0 -95
  151. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/__init__.py +0 -1
  152. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/adapter.py +0 -697
  153. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/analyzers/__init__.py +0 -1
  154. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/analyzers/docstring_analyzer.py +0 -199
  155. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/analyzers/type_analyzer.py +0 -151
  156. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/dispatchers/__init__.py +0 -1
  157. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/dispatchers/base_dispatcher.py +0 -85
  158. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/dispatchers/json_rpc_dispatcher.py +0 -235
  159. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/analyze_config.py +0 -141
  160. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/basic_integration.py +0 -155
  161. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/docstring_and_schema_example.py +0 -69
  162. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/extension_example.py +0 -72
  163. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/help_best_practices.py +0 -67
  164. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/help_usage.py +0 -64
  165. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/mcp_proxy_client.py +0 -131
  166. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/openapi_server.py +0 -383
  167. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/project_structure_example.py +0 -47
  168. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/examples/testing_example.py +0 -64
  169. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/models.py +0 -47
  170. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/registry.py +0 -439
  171. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/schema.py +0 -257
  172. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/testing_utils.py +0 -112
  173. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/validators/__init__.py +0 -1
  174. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/validators/docstring_validator.py +0 -75
  175. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter/validators/metadata_validator.py +0 -76
  176. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter.egg-info/PKG-INFO +0 -341
  177. mcp_proxy_adapter-2.1.16/mcp_proxy_adapter.egg-info/SOURCES.txt +0 -50
  178. mcp_proxy_adapter-2.1.16/pyproject.toml +0 -50
  179. mcp_proxy_adapter-2.1.16/requirements.txt +0 -10
  180. mcp_proxy_adapter-2.1.16/setup.py +0 -46
  181. mcp_proxy_adapter-2.1.16/tests/conftest.py +0 -12
  182. mcp_proxy_adapter-2.1.16/tests/test_adapter.py +0 -529
  183. mcp_proxy_adapter-2.1.16/tests/test_adapter_coverage.py +0 -274
  184. mcp_proxy_adapter-2.1.16/tests/test_basic_dispatcher.py +0 -175
  185. mcp_proxy_adapter-2.1.16/tests/test_command_registry.py +0 -332
  186. mcp_proxy_adapter-2.1.16/tests/test_examples.py +0 -32
  187. mcp_proxy_adapter-2.1.16/tests/test_mcp_proxy_adapter.py +0 -568
  188. mcp_proxy_adapter-2.1.16/tests/test_mcp_proxy_adapter_basic.py +0 -262
  189. mcp_proxy_adapter-2.1.16/tests/test_part1.py +0 -348
  190. mcp_proxy_adapter-2.1.16/tests/test_part2.py +0 -524
  191. mcp_proxy_adapter-2.1.16/tests/test_schema.py +0 -358
  192. mcp_proxy_adapter-2.1.16/tests/test_simple_adapter.py +0 -255
  193. {mcp_proxy_adapter-2.1.16 → mcp_proxy_adapter-3.0.0}/LICENSE +0 -0
  194. {mcp_proxy_adapter-2.1.16 → mcp_proxy_adapter-3.0.0}/code_index.yaml +0 -0
  195. {mcp_proxy_adapter-2.1.16 → mcp_proxy_adapter-3.0.0}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  196. {mcp_proxy_adapter-2.1.16 → mcp_proxy_adapter-3.0.0}/setup.cfg +0 -0
@@ -4,7 +4,7 @@ include requirements.txt
4
4
  include pyproject.toml
5
5
  include code_index.yaml
6
6
  recursive-include docs *.md
7
- recursive-include examples *.py *.json
7
+ recursive-include examples *.py *.json *.yaml *.md *.txt *.yml Dockerfile
8
8
  recursive-include tests *.py
9
9
  global-exclude __pycache__
10
10
  global-exclude *.py[cod]
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcp_proxy_adapter
3
+ Version: 3.0.0
4
+ Summary: Reliable microservice with unified JSON-RPC endpoint
5
+ Home-page: https://github.com/yourusername/mcp-proxy-adapter
6
+ Author: MCP Team
7
+ Author-email: Vasiliy Zubarev <vasiliy.zubarev@example.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2023-2024 Vasiliy VZ
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ Project-URL: Documentation, https://github.com/maverikod/vvz-mcp-proxy-adapter/tree/main/docs/RU/README.md
30
+ Project-URL: Source, https://github.com/maverikod/vvz-mcp-proxy-adapter
31
+ Project-URL: Bug Reports, https://github.com/maverikod/vvz-mcp-proxy-adapter/issues
32
+ Classifier: Programming Language :: Python :: 3
33
+ Classifier: License :: OSI Approved :: MIT License
34
+ Classifier: Operating System :: OS Independent
35
+ Classifier: Framework :: FastAPI
36
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
37
+ Classifier: Intended Audience :: Developers
38
+ Requires-Python: >=3.9
39
+ Description-Content-Type: text/markdown
40
+ License-File: LICENSE
41
+ Requires-Dist: fastapi<1.0.0,>=0.95.0
42
+ Requires-Dist: pydantic>=2.0.0
43
+ Requires-Dist: uvicorn<1.0.0,>=0.22.0
44
+ Requires-Dist: docstring-parser<1.0.0,>=0.15
45
+ Requires-Dist: typing-extensions<5.0.0,>=4.5.0
46
+ Requires-Dist: jsonrpc>=1.2.0
47
+ Requires-Dist: psutil>=5.9.0
48
+ Dynamic: author
49
+ Dynamic: home-page
50
+ Dynamic: license-file
51
+ Dynamic: requires-python
52
+
53
+ # MCP Proxy Adapter
54
+
55
+ **MCP Proxy Adapter** - это фреймворк для создания микросервисов на основе JSON-RPC. Он предоставляет базовую инфраструктуру для создания команд, обработки запросов и возвращения ответов через JSON-RPC API.
56
+
57
+ **MCP Proxy Adapter** - это фреймворк для создания микросервисов на основе JSON-RPC. Он предоставляет базовую инфраструктуру для создания команд, обработки запросов и возвращения ответов через JSON-RPC API.
58
+
59
+ ## Установка
60
+
61
+ ```bash
62
+ pip install mcp-proxy-adapter
63
+ ```
64
+
65
+ ## Использование
66
+
67
+ 1. Создайте свой проект и установите зависимость:
68
+
69
+ ```bash
70
+ pip install mcp-proxy-adapter
71
+ ```
72
+
73
+ 2. Создайте свои команды:
74
+
75
+ ```python
76
+ from mcp_proxy_adapter.commands.base import Command
77
+ from mcp_proxy_adapter.commands.result import SuccessResult
78
+
79
+ class YourCommand(Command):
80
+ name = "your_command"
81
+
82
+ async def execute(self, param1: str, param2: int = 0) -> SuccessResult:
83
+ # Ваша логика
84
+ result_data = {"param1": param1, "param2": param2}
85
+ return SuccessResult(data=result_data)
86
+ ```
87
+
88
+ 3. Запустите сервер:
89
+
90
+ ```python
91
+ import uvicorn
92
+ from mcp_proxy_adapter.api.app import create_app
93
+
94
+ # Регистрация ваших команд происходит автоматически
95
+ app = create_app()
96
+
97
+ uvicorn.run(app, host="0.0.0.0", port=8000)
98
+ ```
99
+
100
+ ## Структура проекта
101
+
102
+ Проект представляет собой фреймворк с базовой инфраструктурой:
103
+
104
+ * **mcp_proxy_adapter/** - основной модуль фреймворка
105
+ * **api/** - модуль API
106
+ * **commands/** - базовые классы команд
107
+ * **core/** - ядро фреймворка
108
+ * **schemas/** - JSON-схемы
109
+ * **examples/** - примеры использования фреймворка
110
+ * **basic_example/** - базовый пример
111
+ * **minimal_example/** - минимальный пример
112
+ * **complete_example/** - полный пример с Docker
113
+
114
+ ## Базовые команды
115
+
116
+ Фреймворк включает следующие базовые команды:
117
+
118
+ - `help` - получение справки по доступным командам
119
+ - `health` - проверка состояния сервиса
120
+
121
+ ## API
122
+
123
+ Фреймворк предоставляет следующие эндпоинты:
124
+
125
+ - `POST /api/jsonrpc` - основной JSON-RPC эндпоинт для выполнения команд
126
+ - `POST /api/command/{command_name}` - REST эндпоинт для выполнения конкретной команды
127
+ - `GET /api/commands` - получение списка доступных команд
128
+ - `GET /api/commands/{command_name}` - получение информации о конкретной команде
129
+ - `GET /health` - проверка состояния сервиса
130
+
131
+ ## Запуск примеров
132
+
133
+ ```bash
134
+ # Базовый пример
135
+ cd examples/basic_example
136
+ python main.py
137
+
138
+ # Минимальный пример
139
+ cd examples/minimal_example
140
+ python main.py
141
+
142
+ # Полный пример с Docker
143
+ cd examples/complete_example
144
+ docker-compose up -d
145
+ ```
146
+
147
+ ## Создание новой команды
148
+
149
+ Пример создания новой команды:
150
+
151
+ ```python
152
+ from typing import Dict, Any, ClassVar, Type
153
+ from mcp_proxy_adapter.commands.base import Command
154
+ from mcp_proxy_adapter.commands.result import SuccessResult
155
+
156
+ class CustomResult(SuccessResult):
157
+ """
158
+ Пользовательский класс результата.
159
+ """
160
+
161
+ def __init__(self, value: str):
162
+ super().__init__(data={"value": value})
163
+
164
+ @classmethod
165
+ def get_schema(cls) -> Dict[str, Any]:
166
+ return {
167
+ "type": "object",
168
+ "properties": {
169
+ "data": {
170
+ "type": "object",
171
+ "properties": {
172
+ "value": {"type": "string"}
173
+ },
174
+ "required": ["value"]
175
+ }
176
+ },
177
+ "required": ["data"]
178
+ }
179
+
180
+ class CustomCommand(Command):
181
+ """
182
+ Пользовательская команда.
183
+ """
184
+
185
+ name: ClassVar[str] = "custom"
186
+ result_class: ClassVar[Type[SuccessResult]] = CustomResult
187
+
188
+ async def execute(self, input_text: str) -> CustomResult:
189
+ return CustomResult(value=f"Processed: {input_text}")
190
+
191
+ @classmethod
192
+ def get_schema(cls) -> Dict[str, Any]:
193
+ return {
194
+ "type": "object",
195
+ "properties": {
196
+ "input_text": {"type": "string"}
197
+ },
198
+ "required": ["input_text"],
199
+ "additionalProperties": False
200
+ }
@@ -0,0 +1,148 @@
1
+ # MCP Proxy Adapter
2
+
3
+ **MCP Proxy Adapter** - это фреймворк для создания микросервисов на основе JSON-RPC. Он предоставляет базовую инфраструктуру для создания команд, обработки запросов и возвращения ответов через JSON-RPC API.
4
+
5
+ **MCP Proxy Adapter** - это фреймворк для создания микросервисов на основе JSON-RPC. Он предоставляет базовую инфраструктуру для создания команд, обработки запросов и возвращения ответов через JSON-RPC API.
6
+
7
+ ## Установка
8
+
9
+ ```bash
10
+ pip install mcp-proxy-adapter
11
+ ```
12
+
13
+ ## Использование
14
+
15
+ 1. Создайте свой проект и установите зависимость:
16
+
17
+ ```bash
18
+ pip install mcp-proxy-adapter
19
+ ```
20
+
21
+ 2. Создайте свои команды:
22
+
23
+ ```python
24
+ from mcp_proxy_adapter.commands.base import Command
25
+ from mcp_proxy_adapter.commands.result import SuccessResult
26
+
27
+ class YourCommand(Command):
28
+ name = "your_command"
29
+
30
+ async def execute(self, param1: str, param2: int = 0) -> SuccessResult:
31
+ # Ваша логика
32
+ result_data = {"param1": param1, "param2": param2}
33
+ return SuccessResult(data=result_data)
34
+ ```
35
+
36
+ 3. Запустите сервер:
37
+
38
+ ```python
39
+ import uvicorn
40
+ from mcp_proxy_adapter.api.app import create_app
41
+
42
+ # Регистрация ваших команд происходит автоматически
43
+ app = create_app()
44
+
45
+ uvicorn.run(app, host="0.0.0.0", port=8000)
46
+ ```
47
+
48
+ ## Структура проекта
49
+
50
+ Проект представляет собой фреймворк с базовой инфраструктурой:
51
+
52
+ * **mcp_proxy_adapter/** - основной модуль фреймворка
53
+ * **api/** - модуль API
54
+ * **commands/** - базовые классы команд
55
+ * **core/** - ядро фреймворка
56
+ * **schemas/** - JSON-схемы
57
+ * **examples/** - примеры использования фреймворка
58
+ * **basic_example/** - базовый пример
59
+ * **minimal_example/** - минимальный пример
60
+ * **complete_example/** - полный пример с Docker
61
+
62
+ ## Базовые команды
63
+
64
+ Фреймворк включает следующие базовые команды:
65
+
66
+ - `help` - получение справки по доступным командам
67
+ - `health` - проверка состояния сервиса
68
+
69
+ ## API
70
+
71
+ Фреймворк предоставляет следующие эндпоинты:
72
+
73
+ - `POST /api/jsonrpc` - основной JSON-RPC эндпоинт для выполнения команд
74
+ - `POST /api/command/{command_name}` - REST эндпоинт для выполнения конкретной команды
75
+ - `GET /api/commands` - получение списка доступных команд
76
+ - `GET /api/commands/{command_name}` - получение информации о конкретной команде
77
+ - `GET /health` - проверка состояния сервиса
78
+
79
+ ## Запуск примеров
80
+
81
+ ```bash
82
+ # Базовый пример
83
+ cd examples/basic_example
84
+ python main.py
85
+
86
+ # Минимальный пример
87
+ cd examples/minimal_example
88
+ python main.py
89
+
90
+ # Полный пример с Docker
91
+ cd examples/complete_example
92
+ docker-compose up -d
93
+ ```
94
+
95
+ ## Создание новой команды
96
+
97
+ Пример создания новой команды:
98
+
99
+ ```python
100
+ from typing import Dict, Any, ClassVar, Type
101
+ from mcp_proxy_adapter.commands.base import Command
102
+ from mcp_proxy_adapter.commands.result import SuccessResult
103
+
104
+ class CustomResult(SuccessResult):
105
+ """
106
+ Пользовательский класс результата.
107
+ """
108
+
109
+ def __init__(self, value: str):
110
+ super().__init__(data={"value": value})
111
+
112
+ @classmethod
113
+ def get_schema(cls) -> Dict[str, Any]:
114
+ return {
115
+ "type": "object",
116
+ "properties": {
117
+ "data": {
118
+ "type": "object",
119
+ "properties": {
120
+ "value": {"type": "string"}
121
+ },
122
+ "required": ["value"]
123
+ }
124
+ },
125
+ "required": ["data"]
126
+ }
127
+
128
+ class CustomCommand(Command):
129
+ """
130
+ Пользовательская команда.
131
+ """
132
+
133
+ name: ClassVar[str] = "custom"
134
+ result_class: ClassVar[Type[SuccessResult]] = CustomResult
135
+
136
+ async def execute(self, input_text: str) -> CustomResult:
137
+ return CustomResult(value=f"Processed: {input_text}")
138
+
139
+ @classmethod
140
+ def get_schema(cls) -> Dict[str, Any]:
141
+ return {
142
+ "type": "object",
143
+ "properties": {
144
+ "input_text": {"type": "string"}
145
+ },
146
+ "required": ["input_text"],
147
+ "additionalProperties": False
148
+ }
@@ -0,0 +1,183 @@
1
+ # API and Interaction Schema
2
+
3
+ ## Basic Principles
4
+
5
+ 1. **Single Entry Point for Commands**
6
+ - All commands are executed through a unified mechanism, regardless of the calling method (REST or JSON-RPC)
7
+ - The intermediate layer (adapter) transforms incoming requests into a unified format
8
+
9
+ 2. **Supported Protocols**
10
+ - JSON-RPC 2.0 (`/cmd`)
11
+ - REST API (standard endpoints + `/cmd`)
12
+
13
+ 3. **Response Format**
14
+ - Always returns HTTP code 200
15
+ - Response body is always in JSON-RPC 2.0 format
16
+ - Errors are transmitted in the error field of the JSON-RPC response
17
+ - HTTP codes 4xx and 5xx are not used
18
+
19
+ ## Request and Response Structure
20
+
21
+ ### JSON-RPC Format
22
+
23
+ ```json
24
+ // Request
25
+ {
26
+ "jsonrpc": "2.0",
27
+ "method": "command_name",
28
+ "params": {
29
+ "param1": "value1",
30
+ "param2": "value2"
31
+ },
32
+ "id": 1
33
+ }
34
+
35
+ // Successful response
36
+ {
37
+ "jsonrpc": "2.0",
38
+ "result": {
39
+ "data": "command result"
40
+ },
41
+ "id": 1
42
+ }
43
+
44
+ // Error response
45
+ {
46
+ "jsonrpc": "2.0",
47
+ "error": {
48
+ "code": -32000,
49
+ "message": "Error description",
50
+ "data": {
51
+ "details": "Additional error info"
52
+ }
53
+ },
54
+ "id": 1
55
+ }
56
+ ```
57
+
58
+ ### REST Format
59
+
60
+ ```
61
+ GET /api/v1/commands # List of available commands
62
+ GET /api/v1/commands/{name} # Command information
63
+ POST /cmd # Command execution (similar to JSON-RPC)
64
+ ```
65
+
66
+ The response is always wrapped in JSON-RPC format:
67
+
68
+ ```json
69
+ // GET /api/v1/commands
70
+ {
71
+ "jsonrpc": "2.0",
72
+ "result": {
73
+ "commands": [
74
+ {
75
+ "name": "command1",
76
+ "description": "Command description",
77
+ "params": {...}
78
+ }
79
+ ]
80
+ },
81
+ "id": null
82
+ }
83
+ ```
84
+
85
+ ## Intermediate Layer (Adapter)
86
+
87
+ ```python
88
+ class CommandAdapter:
89
+ """
90
+ Intermediate layer for transforming REST/RPC requests
91
+ into a unified command format
92
+ """
93
+
94
+ async def execute_command(self, command: str, params: dict) -> CommandResult:
95
+ """Single point of command execution"""
96
+ pass
97
+
98
+ def to_jsonrpc_response(self, result: CommandResult) -> dict:
99
+ """Converting the result to JSON-RPC format"""
100
+ pass
101
+ ```
102
+
103
+ ## OpenAPI Schema
104
+
105
+ The schema must correspond to the MCP Proxy format (port 8001):
106
+
107
+ ```yaml
108
+ openapi: 3.0.0
109
+ paths:
110
+ /cmd:
111
+ post:
112
+ requestBody:
113
+ content:
114
+ application/json:
115
+ schema:
116
+ $ref: '#/components/schemas/CommandRequest'
117
+ responses:
118
+ '200':
119
+ content:
120
+ application/json:
121
+ schema:
122
+ $ref: '#/components/schemas/JsonRpcResponse'
123
+ components:
124
+ schemas:
125
+ CommandRequest:
126
+ type: object
127
+ properties:
128
+ jsonrpc:
129
+ type: string
130
+ enum: ['2.0']
131
+ method:
132
+ type: string
133
+ params:
134
+ type: object
135
+ id:
136
+ type: [integer, string, null]
137
+ JsonRpcResponse:
138
+ type: object
139
+ properties:
140
+ jsonrpc:
141
+ type: string
142
+ enum: ['2.0']
143
+ result:
144
+ type: object
145
+ error:
146
+ type: object
147
+ id:
148
+ type: [integer, string, null]
149
+ ```
150
+
151
+ ## Error Handling
152
+
153
+ All errors are returned in JSON-RPC format with HTTP code 200:
154
+
155
+ | Error Type | code | message |
156
+ |------------|------|---------|
157
+ | Parse error | -32700 | "Parse error" |
158
+ | Invalid Request | -32600 | "Invalid Request" |
159
+ | Method not found | -32601 | "Method not found" |
160
+ | Invalid params | -32602 | "Invalid params" |
161
+ | Internal error | -32603 | "Internal error" |
162
+ | Server error | -32000 to -32099 | "Server error" |
163
+
164
+ ## Usage Examples
165
+
166
+ ### REST Request
167
+ ```bash
168
+ curl -X GET http://localhost:8000/api/v1/commands
169
+ ```
170
+
171
+ ### JSON-RPC Request
172
+ ```bash
173
+ curl -X POST http://localhost:8000/cmd \
174
+ -H "Content-Type: application/json" \
175
+ -d '{
176
+ "jsonrpc": "2.0",
177
+ "method": "get_status",
178
+ "params": {},
179
+ "id": 1
180
+ }'
181
+ ```
182
+
183
+ Both requests will be processed through a unified mechanism and return a response in JSON-RPC format.