mcp-proxy-adapter 6.1.1__py3-none-any.whl → 6.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. mcp_proxy_adapter/__main__.py +27 -7
  2. mcp_proxy_adapter/api/app.py +18 -7
  3. mcp_proxy_adapter/commands/ssl_setup_command.py +234 -351
  4. mcp_proxy_adapter/core/app_factory.py +87 -3
  5. mcp_proxy_adapter/core/app_runner.py +272 -0
  6. mcp_proxy_adapter/core/certificate_utils.py +291 -73
  7. mcp_proxy_adapter/core/client.py +574 -0
  8. mcp_proxy_adapter/core/client_manager.py +284 -0
  9. mcp_proxy_adapter/core/server_adapter.py +17 -80
  10. mcp_proxy_adapter/core/server_engine.py +5 -99
  11. mcp_proxy_adapter/core/ssl_utils.py +13 -12
  12. mcp_proxy_adapter/core/transport_manager.py +5 -5
  13. mcp_proxy_adapter/examples/__init__.py +16 -0
  14. mcp_proxy_adapter/examples/basic_framework/__init__.py +7 -0
  15. mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +4 -0
  16. mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +4 -0
  17. mcp_proxy_adapter/examples/basic_framework/main.py +21 -40
  18. mcp_proxy_adapter/examples/commands/__init__.py +5 -1
  19. mcp_proxy_adapter/examples/create_certificates_simple.py +260 -75
  20. mcp_proxy_adapter/examples/debug_request_state.py +4 -36
  21. mcp_proxy_adapter/examples/debug_role_chain.py +2 -49
  22. mcp_proxy_adapter/examples/demo_client.py +0 -66
  23. mcp_proxy_adapter/examples/full_application/__init__.py +11 -0
  24. mcp_proxy_adapter/examples/full_application/commands/__init__.py +7 -0
  25. mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -19
  26. mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -16
  27. mcp_proxy_adapter/examples/full_application/hooks/__init__.py +7 -0
  28. mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -22
  29. mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -24
  30. mcp_proxy_adapter/examples/full_application/main.py +65 -44
  31. mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +154 -0
  32. mcp_proxy_adapter/examples/generate_all_certificates.py +0 -67
  33. mcp_proxy_adapter/examples/generate_certificates.py +0 -15
  34. mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +369 -0
  35. mcp_proxy_adapter/examples/generate_test_configs.py +204 -0
  36. mcp_proxy_adapter/examples/proxy_registration_example.py +3 -70
  37. mcp_proxy_adapter/examples/run_example.py +1 -23
  38. mcp_proxy_adapter/examples/run_security_tests.py +2 -60
  39. mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -53
  40. mcp_proxy_adapter/examples/security_test_client.py +18 -123
  41. mcp_proxy_adapter/examples/setup_test_environment.py +179 -0
  42. mcp_proxy_adapter/examples/test_config.py +148 -0
  43. mcp_proxy_adapter/examples/test_config_generator.py +1 -25
  44. mcp_proxy_adapter/examples/test_examples.py +4 -67
  45. mcp_proxy_adapter/examples/universal_client.py +154 -162
  46. mcp_proxy_adapter/main.py +51 -161
  47. mcp_proxy_adapter/version.py +1 -1
  48. mcp_proxy_adapter-6.2.0.dist-info/METADATA +687 -0
  49. mcp_proxy_adapter-6.2.0.dist-info/RECORD +122 -0
  50. mcp_proxy_adapter/docs/EN/TROUBLESHOOTING.md +0 -285
  51. mcp_proxy_adapter/docs/RU/TROUBLESHOOTING.md +0 -285
  52. mcp_proxy_adapter/examples/README.md +0 -257
  53. mcp_proxy_adapter/examples/README_EN.md +0 -258
  54. mcp_proxy_adapter/examples/SECURITY_TESTING.md +0 -455
  55. mcp_proxy_adapter/examples/basic_framework/configs/http_auth.json +0 -37
  56. mcp_proxy_adapter/examples/basic_framework/configs/http_simple.json +0 -23
  57. mcp_proxy_adapter/examples/basic_framework/configs/https_auth.json +0 -43
  58. mcp_proxy_adapter/examples/basic_framework/configs/https_no_protocol_middleware.json +0 -36
  59. mcp_proxy_adapter/examples/basic_framework/configs/https_simple.json +0 -29
  60. mcp_proxy_adapter/examples/basic_framework/configs/mtls_no_protocol_middleware.json +0 -34
  61. mcp_proxy_adapter/examples/basic_framework/configs/mtls_no_roles.json +0 -39
  62. mcp_proxy_adapter/examples/basic_framework/configs/mtls_simple.json +0 -35
  63. mcp_proxy_adapter/examples/basic_framework/configs/mtls_with_roles.json +0 -45
  64. mcp_proxy_adapter/examples/basic_framework/roles.json +0 -21
  65. mcp_proxy_adapter/examples/cert_config.json +0 -9
  66. mcp_proxy_adapter/examples/certs/admin.crt +0 -32
  67. mcp_proxy_adapter/examples/certs/admin.key +0 -52
  68. mcp_proxy_adapter/examples/certs/admin_cert.pem +0 -21
  69. mcp_proxy_adapter/examples/certs/admin_key.pem +0 -28
  70. mcp_proxy_adapter/examples/certs/ca_cert.pem +0 -23
  71. mcp_proxy_adapter/examples/certs/ca_cert.srl +0 -1
  72. mcp_proxy_adapter/examples/certs/ca_key.pem +0 -28
  73. mcp_proxy_adapter/examples/certs/cert_config.json +0 -9
  74. mcp_proxy_adapter/examples/certs/client.crt +0 -32
  75. mcp_proxy_adapter/examples/certs/client.key +0 -52
  76. mcp_proxy_adapter/examples/certs/client_admin.crt +0 -32
  77. mcp_proxy_adapter/examples/certs/client_admin.key +0 -52
  78. mcp_proxy_adapter/examples/certs/client_user.crt +0 -32
  79. mcp_proxy_adapter/examples/certs/client_user.key +0 -52
  80. mcp_proxy_adapter/examples/certs/guest_cert.pem +0 -21
  81. mcp_proxy_adapter/examples/certs/guest_key.pem +0 -28
  82. mcp_proxy_adapter/examples/certs/mcp_proxy_adapter_ca_ca.crt +0 -23
  83. mcp_proxy_adapter/examples/certs/proxy_cert.pem +0 -21
  84. mcp_proxy_adapter/examples/certs/proxy_key.pem +0 -28
  85. mcp_proxy_adapter/examples/certs/readonly.crt +0 -32
  86. mcp_proxy_adapter/examples/certs/readonly.key +0 -52
  87. mcp_proxy_adapter/examples/certs/readonly_cert.pem +0 -21
  88. mcp_proxy_adapter/examples/certs/readonly_key.pem +0 -28
  89. mcp_proxy_adapter/examples/certs/server.crt +0 -32
  90. mcp_proxy_adapter/examples/certs/server.key +0 -52
  91. mcp_proxy_adapter/examples/certs/server_cert.pem +0 -32
  92. mcp_proxy_adapter/examples/certs/server_key.pem +0 -52
  93. mcp_proxy_adapter/examples/certs/test_ca_ca.crt +0 -20
  94. mcp_proxy_adapter/examples/certs/user.crt +0 -32
  95. mcp_proxy_adapter/examples/certs/user.key +0 -52
  96. mcp_proxy_adapter/examples/certs/user_cert.pem +0 -21
  97. mcp_proxy_adapter/examples/certs/user_key.pem +0 -28
  98. mcp_proxy_adapter/examples/client_configs/api_key_client.json +0 -13
  99. mcp_proxy_adapter/examples/client_configs/basic_auth_client.json +0 -13
  100. mcp_proxy_adapter/examples/client_configs/certificate_client.json +0 -22
  101. mcp_proxy_adapter/examples/client_configs/jwt_client.json +0 -15
  102. mcp_proxy_adapter/examples/client_configs/no_auth_client.json +0 -9
  103. mcp_proxy_adapter/examples/full_application/configs/http_auth.json +0 -37
  104. mcp_proxy_adapter/examples/full_application/configs/http_simple.json +0 -23
  105. mcp_proxy_adapter/examples/full_application/configs/https_auth.json +0 -39
  106. mcp_proxy_adapter/examples/full_application/configs/https_simple.json +0 -25
  107. mcp_proxy_adapter/examples/full_application/configs/mtls_no_roles.json +0 -39
  108. mcp_proxy_adapter/examples/full_application/configs/mtls_with_roles.json +0 -45
  109. mcp_proxy_adapter/examples/full_application/roles.json +0 -21
  110. mcp_proxy_adapter/examples/keys/ca_key.pem +0 -28
  111. mcp_proxy_adapter/examples/keys/mcp_proxy_adapter_ca_ca.key +0 -28
  112. mcp_proxy_adapter/examples/keys/test_ca_ca.key +0 -28
  113. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log +0 -220
  114. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.1 +0 -1
  115. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.2 +0 -1
  116. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.3 +0 -1
  117. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.4 +0 -1
  118. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.5 +0 -1
  119. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log +0 -220
  120. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.1 +0 -1
  121. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.2 +0 -1
  122. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.3 +0 -1
  123. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.4 +0 -1
  124. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.5 +0 -1
  125. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log +0 -2
  126. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.1 +0 -1
  127. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.2 +0 -1
  128. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.3 +0 -1
  129. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.4 +0 -1
  130. mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.5 +0 -1
  131. mcp_proxy_adapter/examples/roles.json +0 -38
  132. mcp_proxy_adapter/examples/server_configs/config_basic_http.json +0 -204
  133. mcp_proxy_adapter/examples/server_configs/config_http_token.json +0 -238
  134. mcp_proxy_adapter/examples/server_configs/config_https.json +0 -215
  135. mcp_proxy_adapter/examples/server_configs/config_https_token.json +0 -231
  136. mcp_proxy_adapter/examples/server_configs/config_mtls.json +0 -215
  137. mcp_proxy_adapter/examples/server_configs/config_proxy_registration.json +0 -250
  138. mcp_proxy_adapter/examples/server_configs/config_simple.json +0 -46
  139. mcp_proxy_adapter/examples/server_configs/roles.json +0 -38
  140. mcp_proxy_adapter-6.1.1.dist-info/METADATA +0 -205
  141. mcp_proxy_adapter-6.1.1.dist-info/RECORD +0 -197
  142. {mcp_proxy_adapter-6.1.1.dist-info → mcp_proxy_adapter-6.2.0.dist-info}/WHEEL +0 -0
  143. {mcp_proxy_adapter-6.1.1.dist-info → mcp_proxy_adapter-6.2.0.dist-info}/entry_points.txt +0 -0
  144. {mcp_proxy_adapter-6.1.1.dist-info → mcp_proxy_adapter-6.2.0.dist-info}/licenses/LICENSE +0 -0
  145. {mcp_proxy_adapter-6.1.1.dist-info → mcp_proxy_adapter-6.2.0.dist-info}/top_level.txt +0 -0
@@ -1,285 +0,0 @@
1
- # Руководство по устранению неполадок
2
-
3
- Это руководство посвящено решению распространенных проблем с фреймворком MCP Proxy Adapter, особенно связанных с ProtocolMiddleware и конфигурацией SSL/TLS.
4
-
5
- ## Распространенные проблемы
6
-
7
- ### Проблема 1: ProtocolMiddleware блокирует HTTPS запросы
8
-
9
- **Проблема:** ProtocolMiddleware инициализируется с дефолтными настройками и не обновляется при изменении конфигурации SSL.
10
-
11
- **Симптомы:**
12
- ```
13
- Protocol 'https' not allowed for request to /health
14
- INFO: 127.0.0.1:42038 - "GET /health HTTP/1.1" 403 Forbidden
15
- ```
16
-
17
- **Причина:** ProtocolMiddleware создавался как глобальный экземпляр с дефолтными настройками и не обновлялся при включении SSL.
18
-
19
- **Решение:**
20
- 1. **Использовать обновленный ProtocolManager** (Исправлено в v1.1.0):
21
- - ProtocolManager теперь динамически обновляется на основе конфигурации SSL
22
- - Автоматически разрешает HTTPS при включении SSL
23
-
24
- 2. **Отключить ProtocolMiddleware для HTTPS** (Временное решение):
25
- ```json
26
- {
27
- "server": {"host": "127.0.0.1", "port": 10004},
28
- "ssl": {"enabled": true, "cert_file": "./certs/server.crt", "key_file": "./certs/server.key"},
29
- "security": {"enabled": true, "auth": {"enabled": true, "methods": ["api_key"]}},
30
- "protocols": {"enabled": false}
31
- }
32
- ```
33
-
34
- ### Проблема 2: Конфликты конфигурации SSL
35
-
36
- **Проблема:** Фреймворк читает конфигурацию SSL из двух мест: `ssl` (legacy) и `security.ssl`, что приводит к путанице.
37
-
38
- **Симптомы:**
39
- ```
40
- 🔍 Debug: SSL config at start of validation: enabled=False
41
- 🔍 Debug: Root SSL section found: enabled=True
42
- 🔍 Debug: _get_ssl_config: security.ssl key_file=None
43
- 🔍 Debug: _get_ssl_config: legacy ssl key_file=./certs/server.key
44
- ```
45
-
46
- **Решение:**
47
- 1. **Использовать унифицированную конфигурацию SSL** (Рекомендуется):
48
- ```json
49
- {
50
- "security": {
51
- "ssl": {
52
- "enabled": true,
53
- "cert_file": "./certs/server.crt",
54
- "key_file": "./certs/server.key"
55
- }
56
- }
57
- }
58
- ```
59
-
60
- 2. **Использовать legacy конфигурацию SSL** (Обратная совместимость):
61
- ```json
62
- {
63
- "ssl": {
64
- "enabled": true,
65
- "cert_file": "./certs/server.crt",
66
- "key_file": "./certs/server.key"
67
- }
68
- }
69
- ```
70
-
71
- ### Проблема 3: Ошибки инициализации security framework
72
-
73
- **Проблема:** Security framework падает при инициализации из-за отсутствующих или null значений конфигурации.
74
-
75
- **Симптомы:**
76
- ```
77
- Failed to initialize security components: Failed to load roles configuration: argument should be a str or an os.PathLike object where __fspath__ returns a str, not 'NoneType'
78
- ```
79
-
80
- **Решение:**
81
- 1. **Предоставить файл ролей** (Если используются роли):
82
- ```json
83
- {
84
- "security": {
85
- "permissions": {
86
- "enabled": true,
87
- "roles_file": "./roles.json"
88
- }
89
- }
90
- }
91
- ```
92
-
93
- 2. **Отключить permissions** (Если роли не используются):
94
- ```json
95
- {
96
- "security": {
97
- "permissions": {
98
- "enabled": false
99
- }
100
- }
101
- }
102
- ```
103
-
104
- 3. **Использовать graceful fallback** (Исправлено в v1.1.0):
105
- - Security framework теперь продолжает работу без ролей, если roles_file равен null
106
- - Логирует предупреждение вместо падения
107
-
108
- ## Примеры конфигураций
109
-
110
- ### HTTP Simple
111
- ```json
112
- {
113
- "server": {"host": "127.0.0.1", "port": 10001},
114
- "ssl": {"enabled": false},
115
- "security": {"enabled": false},
116
- "protocols": {"enabled": true, "allowed_protocols": ["http"]}
117
- }
118
- ```
119
-
120
- ### HTTPS Simple
121
- ```json
122
- {
123
- "server": {"host": "127.0.0.1", "port": 10002},
124
- "ssl": {"enabled": true, "cert_file": "./certs/server.crt", "key_file": "./certs/server.key"},
125
- "security": {"enabled": false},
126
- "protocols": {"enabled": true, "allowed_protocols": ["http", "https"]}
127
- }
128
- ```
129
-
130
- ### HTTPS с токен-аутентификацией
131
- ```json
132
- {
133
- "server": {"host": "127.0.0.1", "port": 10003},
134
- "ssl": {"enabled": true, "cert_file": "./certs/server.crt", "key_file": "./certs/server.key"},
135
- "security": {
136
- "enabled": true,
137
- "auth": {"enabled": true, "methods": ["api_key"]}
138
- },
139
- "protocols": {"enabled": true, "allowed_protocols": ["http", "https"]}
140
- }
141
- ```
142
-
143
- ### HTTPS без ProtocolMiddleware
144
- ```json
145
- {
146
- "server": {"host": "127.0.0.1", "port": 10004},
147
- "ssl": {"enabled": true, "cert_file": "./certs/server.crt", "key_file": "./certs/server.key"},
148
- "security": {
149
- "enabled": true,
150
- "auth": {"enabled": true, "methods": ["api_key"]}
151
- },
152
- "protocols": {"enabled": false}
153
- }
154
- ```
155
-
156
- ### mTLS Simple
157
- ```json
158
- {
159
- "server": {"host": "127.0.0.1", "port": 10005},
160
- "ssl": {
161
- "enabled": true,
162
- "cert_file": "./certs/server.crt",
163
- "key_file": "./certs/server.key",
164
- "ca_cert": "./certs/ca.crt",
165
- "verify_client": true
166
- },
167
- "security": {
168
- "enabled": true,
169
- "auth": {"enabled": true, "methods": ["certificate"]}
170
- },
171
- "protocols": {"enabled": true, "allowed_protocols": ["https", "mtls"]}
172
- }
173
- ```
174
-
175
- ## Тестирование конфигурации
176
-
177
- ### Тест HTTP
178
- ```bash
179
- curl http://127.0.0.1:10001/health
180
- ```
181
-
182
- ### Тест HTTPS
183
- ```bash
184
- curl -k https://127.0.0.1:10002/health
185
- ```
186
-
187
- ### Тест HTTPS с аутентификацией
188
- ```bash
189
- curl -k -H "Authorization: Bearer your-api-key" https://127.0.0.1:10003/health
190
- ```
191
-
192
- ### Тест mTLS
193
- ```bash
194
- curl -k --cert ./certs/client.crt --key ./certs/client.key https://127.0.0.1:10005/health
195
- ```
196
-
197
- ## Отладка
198
-
199
- ### Включить debug логирование
200
- ```json
201
- {
202
- "logging": {
203
- "level": "DEBUG",
204
- "console_output": true
205
- }
206
- }
207
- ```
208
-
209
- ### Проверить статус Protocol Manager
210
- ```python
211
- from mcp_proxy_adapter.core.protocol_manager import get_protocol_manager
212
- from mcp_proxy_adapter.config import config
213
-
214
- pm = get_protocol_manager(config.get_all())
215
- print(f"Allowed protocols: {pm.get_allowed_protocols()}")
216
- print(f"Protocol info: {pm.get_protocol_info()}")
217
- ```
218
-
219
- ### Проверить конфигурацию SSL
220
- ```python
221
- from mcp_proxy_adapter.config import config
222
-
223
- ssl_config = config.get("ssl", {})
224
- security_ssl = config.get("security", {}).get("ssl", {})
225
- print(f"Legacy SSL: {ssl_config}")
226
- print(f"Security SSL: {security_ssl}")
227
- ```
228
-
229
- ## Руководство по миграции
230
-
231
- ### От legacy к новой конфигурации
232
-
233
- **Старая (Legacy):**
234
- ```json
235
- {
236
- "ssl": {"enabled": true, "cert_file": "./certs/server.crt", "key_file": "./certs/server.key"}
237
- }
238
- ```
239
-
240
- **Новая (Рекомендуется):**
241
- ```json
242
- {
243
- "security": {
244
- "ssl": {"enabled": true, "cert_file": "./certs/server.crt", "key_file": "./certs/server.key"}
245
- }
246
- }
247
- ```
248
-
249
- ### Добавление управления протоколами
250
-
251
- **Без управления протоколами:**
252
- ```json
253
- {
254
- "protocols": {"enabled": false}
255
- }
256
- ```
257
-
258
- **С управлением протоколами:**
259
- ```json
260
- {
261
- "protocols": {
262
- "enabled": true,
263
- "allowed_protocols": ["http", "https"]
264
- }
265
- }
266
- ```
267
-
268
- ## Лучшие практики
269
-
270
- 1. **Используйте security.ssl вместо legacy ssl** для новых конфигураций
271
- 2. **Отключайте ProtocolMiddleware** если не нужна валидация протоколов
272
- 3. **Предоставляйте roles_file** или отключайте permissions при использовании security framework
273
- 4. **Тестируйте конфигурации** перед развертыванием в продакшене
274
- 5. **Используйте debug логирование** для отладки
275
- 6. **Храните сертификаты и ключи в безопасности** и правильно настраивайте
276
-
277
- ## Поддержка
278
-
279
- Если вы столкнулись с проблемами, не описанными в этом руководстве:
280
-
281
- 1. Проверьте логи для получения подробных сообщений об ошибках
282
- 2. Включите debug логирование для получения дополнительной информации
283
- 3. Убедитесь, что файлы сертификатов существуют и доступны для чтения
284
- 4. Тестируйте с простыми конфигурациями сначала
285
- 5. Сообщайте о проблемах с полной конфигурацией и логами ошибок
@@ -1,257 +0,0 @@
1
- # MCP Proxy Adapter - Examples and Security Testing
2
-
3
- Этот каталог содержит примеры использования MCP Proxy Adapter с различными конфигурациями безопасности и комплексную систему тестирования.
4
-
5
- ## 📁 Структура каталога
6
-
7
- ```
8
- examples/
9
- ├── README.md # Эта документация
10
- ├── SECURITY_TESTING.md # Документация по тестированию безопасности
11
- ├── generate_certificates.py # Скрипт генерации сертификатов
12
- ├── security_test_client.py # Клиент для тестирования безопасности
13
- ├── run_security_tests.py # Основной скрипт запуска тестов
14
- ├── cert_config.json # Конфигурация для генерации сертификатов
15
- ├── certs/ # Сгенерированные сертификаты
16
- ├── keys/ # Приватные ключи
17
- ├── server_configs/ # Конфигурации серверов
18
- │ ├── config_basic_http.json # Базовый HTTP
19
- │ ├── config_http_token.json # HTTP + токен
20
- │ ├── config_https.json # HTTPS
21
- │ ├── config_https_token.json # HTTPS + токен
22
- │ ├── config_mtls.json # mTLS
23
- │ └── roles.json # Роли и разрешения
24
- └── commands/ # Пользовательские команды
25
- └── __init__.py
26
- ```
27
-
28
- ## 🚀 Быстрый старт
29
-
30
- ### 1. Подготовка окружения
31
-
32
- ```bash
33
- # Активируйте виртуальную среду
34
- source .venv/bin/activate
35
-
36
- # Установите зависимости
37
- pip install -e .
38
- ```
39
-
40
- ### 2. Генерация сертификатов
41
-
42
- ```bash
43
- # Сгенерируйте все необходимые сертификаты
44
- cd mcp_proxy_adapter/examples
45
- python generate_certificates.py
46
- ```
47
-
48
- ### 3. Запуск тестов безопасности
49
-
50
- ```bash
51
- # Запустите все тесты безопасности
52
- python run_security_tests.py
53
- ```
54
-
55
- ## 🔧 Конфигурации серверов
56
-
57
- ### Базовый HTTP (порт 8000)
58
- ```bash
59
- python -m mcp_proxy_adapter.main --config server_configs/config_basic_http.json
60
- ```
61
-
62
- ### HTTP + Токен аутентификация (порт 8001)
63
- ```bash
64
- python -m mcp_proxy_adapter.main --config server_configs/config_http_token.json
65
- ```
66
-
67
- ### HTTPS (порт 8443)
68
- ```bash
69
- python -m mcp_proxy_adapter.main --config server_configs/config_https.json
70
- ```
71
-
72
- ### HTTPS + Токен аутентификация (порт 8444)
73
- ```bash
74
- python -m mcp_proxy_adapter.main --config server_configs/config_https_token.json
75
- ```
76
-
77
- ### mTLS (порт 8445)
78
- ```bash
79
- python -m mcp_proxy_adapter.main --config server_configs/config_mtls.json
80
- ```
81
-
82
- ## 🧪 Тестирование
83
-
84
- ### Тестирование отдельного сервера
85
-
86
- ```bash
87
- # Тест базового HTTP сервера
88
- python security_test_client.py --server http://localhost:8000 --auth none
89
-
90
- # Тест HTTP с токеном
91
- python security_test_client.py --server http://localhost:8001 --auth api_key --token test-token-123
92
-
93
- # Тест HTTPS сервера
94
- python security_test_client.py --server https://localhost:8443 --auth none
95
-
96
- # Тест HTTPS с токеном
97
- python security_test_client.py --server https://localhost:8444 --auth api_key --token test-token-123
98
-
99
- # Тест mTLS с сертификатом
100
- python security_test_client.py --server https://localhost:8445 --auth certificate --cert certs/admin_cert.pem --key keys/admin_key.pem --ca-cert certs/ca_cert.pem
101
- ```
102
-
103
- ### Тестирование всех сценариев
104
-
105
- ```bash
106
- # Запустите все серверы и протестируйте их
107
- python run_security_tests.py
108
- ```
109
-
110
- ## 📋 Сценарии тестирования
111
-
112
- ### 1. Базовый HTTP (config_basic_http.json)
113
- - **Порт**: 8000
114
- - **Безопасность**: Отключена
115
- - **Аутентификация**: Нет
116
- - **Тесты**: Health check, echo command
117
-
118
- ### 2. HTTP + Токен (config_http_token.json)
119
- - **Порт**: 8001
120
- - **Безопасность**: API Key аутентификация
121
- - **Токены**:
122
- - `test-token-123` (admin)
123
- - `user-token-456` (user)
124
- - **Тесты**: Ролевая аутентификация, негативные тесты
125
-
126
- ### 3. HTTPS (config_https.json)
127
- - **Порт**: 8443
128
- - **Безопасность**: SSL/TLS
129
- - **Сертификаты**: Самоподписанные
130
- - **Тесты**: Защищенные соединения
131
-
132
- ### 4. HTTPS + Токен (config_https_token.json)
133
- - **Порт**: 8444
134
- - **Безопасность**: SSL/TLS + API Key
135
- - **Тесты**: Комбинированная безопасность
136
-
137
- ### 5. mTLS (config_mtls.json)
138
- - **Порт**: 8445
139
- - **Безопасность**: Взаимная аутентификация сертификатами
140
- - **Тесты**: Сертификатная аутентификация
141
-
142
- ## 🔑 Токены для тестирования
143
-
144
- ```json
145
- {
146
- "test-token-123": {
147
- "roles": ["admin"],
148
- "permissions": ["*"]
149
- },
150
- "user-token-456": {
151
- "roles": ["user"],
152
- "permissions": ["read", "execute"]
153
- }
154
- }
155
- ```
156
-
157
- ## 📜 Роли и разрешения
158
-
159
- ```json
160
- {
161
- "admin": ["*"],
162
- "user": ["read", "write", "execute"],
163
- "readonly": ["read"],
164
- "guest": ["read"]
165
- }
166
- ```
167
-
168
- ## 🛠️ Генерация конфигураций
169
-
170
- Используйте встроенный генератор конфигураций:
171
-
172
- ```bash
173
- # Генерация всех типов конфигураций
174
- python -m mcp_proxy_adapter.utils.config_generator --all --output-dir ./generated_configs
175
-
176
- # Генерация конкретного типа
177
- python -m mcp_proxy_adapter.utils.config_generator --type https_token --output ./my_config.json
178
- ```
179
-
180
- Доступные типы конфигураций:
181
- - `minimal` - Минимальная конфигурация
182
- - `development` - Для разработки
183
- - `secure` - Максимальная безопасность
184
- - `full` - Полная конфигурация
185
- - `basic_http` - Базовый HTTP
186
- - `http_token` - HTTP + токен
187
- - `https` - HTTPS
188
- - `https_token` - HTTPS + токен
189
- - `mtls` - mTLS
190
-
191
- ## 🔍 Мониторинг и логи
192
-
193
- Логи сохраняются в:
194
- - `./logs/server.log` - Логи сервера
195
- - `./logs/security.log` - Логи безопасности
196
-
197
- Для просмотра логов в реальном времени:
198
- ```bash
199
- tail -f logs/server.log
200
- tail -f logs/security.log
201
- ```
202
-
203
- ## 🚨 Устранение неполадок
204
-
205
- ### Проблема: Сертификаты не найдены
206
- ```bash
207
- # Проверьте наличие сертификатов
208
- ls -la certs/
209
- ls -la keys/
210
-
211
- # Перегенерируйте сертификаты
212
- python generate_certificates.py
213
- ```
214
-
215
- ### Проблема: Порт занят
216
- ```bash
217
- # Найдите процесс, использующий порт
218
- lsof -i :8000
219
- lsof -i :8443
220
-
221
- # Остановите процесс
222
- kill -9 <PID>
223
- ```
224
-
225
- ### Проблема: SSL ошибки
226
- ```bash
227
- # Проверьте сертификаты
228
- openssl x509 -in certs/server_cert.pem -text -noout
229
-
230
- # Проверьте приватный ключ
231
- openssl rsa -in keys/server_key.pem -check
232
- ```
233
-
234
- ## 📚 Дополнительная документация
235
-
236
- - [SECURITY_TESTING.md](SECURITY_TESTING.md) - Подробное руководство по тестированию безопасности
237
- - [API Documentation](../docs/api/) - Документация API
238
- - [Configuration Guide](../docs/configuration.md) - Руководство по конфигурации
239
-
240
- ## 🤝 Поддержка
241
-
242
- Если у вас возникли проблемы:
243
-
244
- 1. Проверьте логи в `./logs/`
245
- 2. Убедитесь, что все зависимости установлены
246
- 3. Проверьте, что сертификаты сгенерированы корректно
247
- 4. Обратитесь к документации по устранению неполадок
248
-
249
- ## 📄 Лицензия
250
-
251
- Этот проект распространяется под лицензией MIT. См. файл [LICENSE](../../LICENSE) для подробностей.
252
-
253
- ---
254
-
255
- **Автор**: Vasiliy Zdanovskiy
256
- **Email**: vasilyvz@gmail.com
257
- **Версия**: 1.0.0