mcp-proxy-adapter 6.1.1__py3-none-any.whl → 6.2.1__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.
- mcp_proxy_adapter/__main__.py +27 -7
- mcp_proxy_adapter/api/app.py +18 -7
- mcp_proxy_adapter/commands/ssl_setup_command.py +234 -351
- mcp_proxy_adapter/core/app_factory.py +87 -3
- mcp_proxy_adapter/core/app_runner.py +272 -0
- mcp_proxy_adapter/core/certificate_utils.py +291 -73
- mcp_proxy_adapter/core/client.py +574 -0
- mcp_proxy_adapter/core/client_manager.py +284 -0
- mcp_proxy_adapter/core/server_adapter.py +17 -80
- mcp_proxy_adapter/core/server_engine.py +5 -99
- mcp_proxy_adapter/core/ssl_utils.py +13 -12
- mcp_proxy_adapter/core/transport_manager.py +5 -5
- mcp_proxy_adapter/examples/__init__.py +16 -0
- mcp_proxy_adapter/examples/basic_framework/__init__.py +7 -0
- mcp_proxy_adapter/examples/basic_framework/commands/__init__.py +4 -0
- mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py +4 -0
- mcp_proxy_adapter/examples/basic_framework/main.py +21 -40
- mcp_proxy_adapter/examples/commands/__init__.py +5 -1
- mcp_proxy_adapter/examples/create_certificates_simple.py +260 -75
- mcp_proxy_adapter/examples/debug_request_state.py +4 -36
- mcp_proxy_adapter/examples/debug_role_chain.py +2 -49
- mcp_proxy_adapter/examples/demo_client.py +0 -66
- mcp_proxy_adapter/examples/full_application/__init__.py +11 -0
- mcp_proxy_adapter/examples/full_application/commands/__init__.py +7 -0
- mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py +0 -19
- mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py +0 -16
- mcp_proxy_adapter/examples/full_application/hooks/__init__.py +7 -0
- mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py +0 -22
- mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py +0 -24
- mcp_proxy_adapter/examples/full_application/main.py +65 -44
- mcp_proxy_adapter/examples/full_application/proxy_endpoints.py +154 -0
- mcp_proxy_adapter/examples/generate_all_certificates.py +0 -67
- mcp_proxy_adapter/examples/generate_certificates.py +0 -15
- mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +369 -0
- mcp_proxy_adapter/examples/generate_test_configs.py +204 -0
- mcp_proxy_adapter/examples/proxy_registration_example.py +3 -70
- mcp_proxy_adapter/examples/run_example.py +1 -23
- mcp_proxy_adapter/examples/run_security_tests.py +2 -60
- mcp_proxy_adapter/examples/run_security_tests_fixed.py +0 -53
- mcp_proxy_adapter/examples/security_test_client.py +18 -123
- mcp_proxy_adapter/examples/setup_test_environment.py +179 -0
- mcp_proxy_adapter/examples/test_config.py +148 -0
- mcp_proxy_adapter/examples/test_config_generator.py +1 -25
- mcp_proxy_adapter/examples/test_examples.py +4 -67
- mcp_proxy_adapter/examples/universal_client.py +154 -162
- mcp_proxy_adapter/main.py +51 -161
- mcp_proxy_adapter/version.py +1 -1
- mcp_proxy_adapter-6.2.1.dist-info/METADATA +676 -0
- mcp_proxy_adapter-6.2.1.dist-info/RECORD +119 -0
- mcp_proxy_adapter/docs/EN/TROUBLESHOOTING.md +0 -285
- mcp_proxy_adapter/docs/RU/TROUBLESHOOTING.md +0 -285
- mcp_proxy_adapter/examples/README.md +0 -257
- mcp_proxy_adapter/examples/README_EN.md +0 -258
- mcp_proxy_adapter/examples/SECURITY_TESTING.md +0 -455
- mcp_proxy_adapter/examples/basic_framework/configs/http_auth.json +0 -37
- mcp_proxy_adapter/examples/basic_framework/configs/http_simple.json +0 -23
- mcp_proxy_adapter/examples/basic_framework/configs/https_auth.json +0 -43
- mcp_proxy_adapter/examples/basic_framework/configs/https_no_protocol_middleware.json +0 -36
- mcp_proxy_adapter/examples/basic_framework/configs/https_simple.json +0 -29
- mcp_proxy_adapter/examples/basic_framework/configs/mtls_no_protocol_middleware.json +0 -34
- mcp_proxy_adapter/examples/basic_framework/configs/mtls_no_roles.json +0 -39
- mcp_proxy_adapter/examples/basic_framework/configs/mtls_simple.json +0 -35
- mcp_proxy_adapter/examples/basic_framework/configs/mtls_with_roles.json +0 -45
- mcp_proxy_adapter/examples/basic_framework/roles.json +0 -21
- mcp_proxy_adapter/examples/cert_config.json +0 -9
- mcp_proxy_adapter/examples/certs/admin.crt +0 -32
- mcp_proxy_adapter/examples/certs/admin.key +0 -52
- mcp_proxy_adapter/examples/certs/admin_cert.pem +0 -21
- mcp_proxy_adapter/examples/certs/admin_key.pem +0 -28
- mcp_proxy_adapter/examples/certs/ca_cert.pem +0 -23
- mcp_proxy_adapter/examples/certs/ca_cert.srl +0 -1
- mcp_proxy_adapter/examples/certs/ca_key.pem +0 -28
- mcp_proxy_adapter/examples/certs/cert_config.json +0 -9
- mcp_proxy_adapter/examples/certs/client.crt +0 -32
- mcp_proxy_adapter/examples/certs/client.key +0 -52
- mcp_proxy_adapter/examples/certs/client_admin.crt +0 -32
- mcp_proxy_adapter/examples/certs/client_admin.key +0 -52
- mcp_proxy_adapter/examples/certs/client_user.crt +0 -32
- mcp_proxy_adapter/examples/certs/client_user.key +0 -52
- mcp_proxy_adapter/examples/certs/guest_cert.pem +0 -21
- mcp_proxy_adapter/examples/certs/guest_key.pem +0 -28
- mcp_proxy_adapter/examples/certs/mcp_proxy_adapter_ca_ca.crt +0 -23
- mcp_proxy_adapter/examples/certs/proxy_cert.pem +0 -21
- mcp_proxy_adapter/examples/certs/proxy_key.pem +0 -28
- mcp_proxy_adapter/examples/certs/readonly.crt +0 -32
- mcp_proxy_adapter/examples/certs/readonly.key +0 -52
- mcp_proxy_adapter/examples/certs/readonly_cert.pem +0 -21
- mcp_proxy_adapter/examples/certs/readonly_key.pem +0 -28
- mcp_proxy_adapter/examples/certs/server.crt +0 -32
- mcp_proxy_adapter/examples/certs/server.key +0 -52
- mcp_proxy_adapter/examples/certs/server_cert.pem +0 -32
- mcp_proxy_adapter/examples/certs/server_key.pem +0 -52
- mcp_proxy_adapter/examples/certs/test_ca_ca.crt +0 -20
- mcp_proxy_adapter/examples/certs/user.crt +0 -32
- mcp_proxy_adapter/examples/certs/user.key +0 -52
- mcp_proxy_adapter/examples/certs/user_cert.pem +0 -21
- mcp_proxy_adapter/examples/certs/user_key.pem +0 -28
- mcp_proxy_adapter/examples/client_configs/api_key_client.json +0 -13
- mcp_proxy_adapter/examples/client_configs/basic_auth_client.json +0 -13
- mcp_proxy_adapter/examples/client_configs/certificate_client.json +0 -22
- mcp_proxy_adapter/examples/client_configs/jwt_client.json +0 -15
- mcp_proxy_adapter/examples/client_configs/no_auth_client.json +0 -9
- mcp_proxy_adapter/examples/full_application/configs/http_auth.json +0 -37
- mcp_proxy_adapter/examples/full_application/configs/http_simple.json +0 -23
- mcp_proxy_adapter/examples/full_application/configs/https_auth.json +0 -39
- mcp_proxy_adapter/examples/full_application/configs/https_simple.json +0 -25
- mcp_proxy_adapter/examples/full_application/configs/mtls_no_roles.json +0 -39
- mcp_proxy_adapter/examples/full_application/configs/mtls_with_roles.json +0 -45
- mcp_proxy_adapter/examples/full_application/roles.json +0 -21
- mcp_proxy_adapter/examples/keys/ca_key.pem +0 -28
- mcp_proxy_adapter/examples/keys/mcp_proxy_adapter_ca_ca.key +0 -28
- mcp_proxy_adapter/examples/keys/test_ca_ca.key +0 -28
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log +0 -220
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.1 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.2 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.3 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.4 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter.log.5 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log +0 -220
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.1 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.2 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.3 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.4 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_access.log.5 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log +0 -2
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.1 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.2 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.3 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.4 +0 -1
- mcp_proxy_adapter/examples/logs/mcp_proxy_adapter_error.log.5 +0 -1
- mcp_proxy_adapter/examples/roles.json +0 -38
- mcp_proxy_adapter/examples/server_configs/config_basic_http.json +0 -204
- mcp_proxy_adapter/examples/server_configs/config_http_token.json +0 -238
- mcp_proxy_adapter/examples/server_configs/config_https.json +0 -215
- mcp_proxy_adapter/examples/server_configs/config_https_token.json +0 -231
- mcp_proxy_adapter/examples/server_configs/config_mtls.json +0 -215
- mcp_proxy_adapter/examples/server_configs/config_proxy_registration.json +0 -250
- mcp_proxy_adapter/examples/server_configs/config_simple.json +0 -46
- mcp_proxy_adapter/examples/server_configs/roles.json +0 -38
- mcp_proxy_adapter/utils/config_generator.py +0 -727
- mcp_proxy_adapter-6.1.1.dist-info/METADATA +0 -205
- mcp_proxy_adapter-6.1.1.dist-info/RECORD +0 -197
- mcp_proxy_adapter-6.1.1.dist-info/entry_points.txt +0 -2
- mcp_proxy_adapter-6.1.1.dist-info/licenses/LICENSE +0 -21
- {mcp_proxy_adapter-6.1.1.dist-info → mcp_proxy_adapter-6.2.1.dist-info}/WHEEL +0 -0
- {mcp_proxy_adapter-6.1.1.dist-info → mcp_proxy_adapter-6.2.1.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
|