mcp-proxy-adapter 2.1.2__py3-none-any.whl → 2.1.4__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 (50) hide show
  1. {examples → mcp_proxy_adapter/examples}/openapi_server.py +35 -7
  2. {mcp_proxy_adapter-2.1.2.dist-info → mcp_proxy_adapter-2.1.4.dist-info}/METADATA +98 -2
  3. mcp_proxy_adapter-2.1.4.dist-info/RECORD +28 -0
  4. mcp_proxy_adapter-2.1.4.dist-info/top_level.txt +1 -0
  5. docs/README.md +0 -172
  6. docs/README_ru.md +0 -172
  7. docs/architecture.md +0 -251
  8. docs/architecture_ru.md +0 -343
  9. docs/command_development.md +0 -250
  10. docs/command_development_ru.md +0 -593
  11. docs/deployment.md +0 -251
  12. docs/deployment_ru.md +0 -1298
  13. docs/examples.md +0 -254
  14. docs/examples_ru.md +0 -401
  15. docs/mcp_proxy_adapter.md +0 -251
  16. docs/mcp_proxy_adapter_ru.md +0 -405
  17. docs/quickstart.md +0 -251
  18. docs/quickstart_ru.md +0 -397
  19. docs/testing.md +0 -255
  20. docs/testing_ru.md +0 -469
  21. docs/validation_ru.md +0 -287
  22. examples/mcp_proxy_config.json +0 -175
  23. mcp_proxy_adapter-2.1.2.dist-info/RECORD +0 -61
  24. mcp_proxy_adapter-2.1.2.dist-info/top_level.txt +0 -5
  25. scripts/code_analyzer/code_analyzer.py +0 -328
  26. scripts/code_analyzer/register_commands.py +0 -446
  27. scripts/publish.py +0 -85
  28. tests/conftest.py +0 -12
  29. tests/test_adapter.py +0 -529
  30. tests/test_adapter_coverage.py +0 -274
  31. tests/test_basic_dispatcher.py +0 -169
  32. tests/test_command_registry.py +0 -328
  33. tests/test_examples.py +0 -32
  34. tests/test_mcp_proxy_adapter.py +0 -568
  35. tests/test_mcp_proxy_adapter_basic.py +0 -262
  36. tests/test_part1.py +0 -348
  37. tests/test_part2.py +0 -524
  38. tests/test_schema.py +0 -358
  39. tests/test_simple_adapter.py +0 -251
  40. {examples → mcp_proxy_adapter/examples}/analyze_config.py +0 -0
  41. {examples → mcp_proxy_adapter/examples}/basic_integration.py +0 -0
  42. {examples → mcp_proxy_adapter/examples}/docstring_and_schema_example.py +0 -0
  43. {examples → mcp_proxy_adapter/examples}/extension_example.py +0 -0
  44. {examples → mcp_proxy_adapter/examples}/help_best_practices.py +0 -0
  45. {examples → mcp_proxy_adapter/examples}/help_usage.py +0 -0
  46. {examples → mcp_proxy_adapter/examples}/mcp_proxy_client.py +0 -0
  47. {examples → mcp_proxy_adapter/examples}/project_structure_example.py +0 -0
  48. {examples → mcp_proxy_adapter/examples}/testing_example.py +0 -0
  49. {mcp_proxy_adapter-2.1.2.dist-info → mcp_proxy_adapter-2.1.4.dist-info}/WHEEL +0 -0
  50. {mcp_proxy_adapter-2.1.2.dist-info → mcp_proxy_adapter-2.1.4.dist-info}/licenses/LICENSE +0 -0
docs/mcp_proxy_adapter.md DELETED
@@ -1,251 +0,0 @@
1
- # MCP Proxy Adapter
2
-
3
- ## Overview
4
-
5
- MCP Proxy Adapter is a specialized adapter for integrating Command Registry with MCP Proxy (Model Control Protocol Proxy). It allows using commands from Command Registry as tools for artificial intelligence models, providing a unified JSON-RPC interface for interacting with commands.
6
-
7
- ## Key Features
8
-
9
- - **JSON-RPC interface** for executing commands from the registry
10
- - **Automatic configuration generation** for MCPProxy
11
- - **OpenAPI schema optimization** for working with AI models
12
- - **Enhanced error handling** with detailed logging
13
- - **Parameter type validation** to prevent runtime errors
14
- - **Integration with any FastAPI applications**
15
-
16
- ## Installation
17
-
18
- ```bash
19
- pip install mcp-proxy-adapter
20
- ```
21
-
22
- ## Quick Start
23
-
24
- ### Basic Integration
25
-
26
- ```python
27
- from fastapi import FastAPI
28
- from command_registry import CommandRegistry
29
- from mcp_proxy_adapter.adapter import MCPProxyAdapter
30
-
31
- # Create FastAPI application
32
- app = FastAPI()
33
-
34
- # Create command registry
35
- registry = CommandRegistry()
36
-
37
- # Register commands
38
- registry.register_command("search_by_text", search_function,
39
- description="Search by text query")
40
-
41
- # Create MCP Proxy adapter
42
- adapter = MCPProxyAdapter(registry)
43
-
44
- # Register endpoints in FastAPI application
45
- adapter.register_endpoints(app)
46
-
47
- # Save MCP Proxy configuration to file
48
- adapter.save_config_to_file("mcp_proxy_config.json")
49
- ```
50
-
51
- ### Working with External Loggers
52
-
53
- ```python
54
- import logging
55
- from mcp_proxy_adapter.adapter import configure_logger
56
-
57
- # Create application logger
58
- app_logger = logging.getLogger("my_application")
59
- app_logger.setLevel(logging.DEBUG)
60
-
61
- # Configure handler for logger
62
- handler = logging.StreamHandler()
63
- handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
64
- app_logger.addHandler(handler)
65
-
66
- # Integrate application logger with adapter
67
- adapter_logger = configure_logger(app_logger)
68
-
69
- # Now all messages from adapter will go through application logger
70
- ```
71
-
72
- ## Architecture
73
-
74
- ### Core Components
75
-
76
- MCP Proxy Adapter consists of the following components:
77
-
78
- 1. **MCPProxyAdapter** — main class providing integration with Command Registry and FastAPI
79
- 2. **JsonRpcRequest/JsonRpcResponse** — models for working with JSON-RPC requests and responses
80
- 3. **SchemaOptimizer** — OpenAPI schema optimizer for working with MCP Proxy
81
- 4. **MCPProxyConfig/MCPProxyTool** — models for forming MCP Proxy configuration
82
-
83
- ### Technical Implementation Details
84
-
85
- Based on code analysis, the following was discovered:
86
-
87
- 1. **Implementation duplication** — MCPProxyAdapter is present in two files:
88
- - `src/adapter.py` (394 lines) — main adapter implementation
89
- - `src/adapters/mcp_proxy_adapter.py` — specialized version
90
-
91
- 2. **OpenAPI Schemas** — a significant part of the codebase consists of OpenAPI schemas:
92
- - `src/openapi_schema/rest_schema.py` (506 lines)
93
- - `src/openapi_schema/rpc_schema.py` (414 lines)
94
-
95
- 3. **Method Call Chains**:
96
- - `__init__` calls `_generate_router` for FastAPI router setup
97
- - `save_config_to_file` uses `generate_mcp_proxy_config`
98
- - `get_openapi_schema` uses `_generate_basic_schema`
99
- - `execute_command` uses `_validate_param_types` for type checking
100
-
101
- ### Interaction Diagram
102
-
103
- ```
104
- ┌─────────────────┐ ┌────────────────────┐ ┌─────────────────┐
105
- │ │ │ │ │ │
106
- │ MCP Proxy │ │ MCPProxyAdapter │ │ CommandRegistry │
107
- │ │◄─────┤ │◄─────┤ │
108
- └─────────────────┘ └────────────────────┘ └─────────────────┘
109
- ▲ ▲ ▲
110
- │ │ │
111
- │ ┌────────┴───────┐ │
112
- │ │ │ │
113
- └────────────────┤ FastAPI App │──────────────────┘
114
- │ │
115
- └────────────────┘
116
- ```
117
-
118
- ## Adapter API
119
-
120
- ### Initialization
121
-
122
- ```python
123
- def __init__(
124
- self,
125
- registry: CommandRegistry,
126
- cmd_endpoint: str = "/cmd",
127
- include_schema: bool = True,
128
- optimize_schema: bool = True
129
- )
130
- ```
131
-
132
- * **registry** — CommandRegistry instance for integration
133
- * **cmd_endpoint** — path for command execution endpoint
134
- * **include_schema** — whether to include OpenAPI schema generation
135
- * **optimize_schema** — whether to optimize schema for MCP Proxy
136
-
137
- ### Main Methods
138
-
139
- * **register_endpoints(app: FastAPI)** — registers endpoints in FastAPI application
140
- * **generate_mcp_proxy_config()** — generates configuration for MCP Proxy
141
- * **save_config_to_file(filename: str)** — saves configuration to file
142
- * **_generate_router()** — internal method for generating FastAPI router
143
- * **_validate_param_types(command, params)** — checks parameter types before command execution
144
- * **_generate_basic_schema()** — creates basic OpenAPI schema when generator is absent
145
- * **_optimize_schema(schema)** — optimizes OpenAPI schema for MCP Proxy
146
-
147
- ## Implementation Features
148
-
149
- Code analysis revealed the following important implementation aspects:
150
-
151
- 1. **Parameter Validation** occurs in several stages:
152
- - First, command presence in registry is checked
153
- - Then, presence of all required parameters is verified
154
- - After that, types of all passed parameters are checked
155
-
156
- 2. **Error Handling** is implemented using an extensive try/except mechanism that:
157
- - Catches specific exceptions (TypeError, KeyError)
158
- - Handles general exceptions through Exception block
159
- - Formats all errors in JSON-RPC format with appropriate codes
160
-
161
- 3. **Schema Optimization** includes several steps:
162
- - Removing redundant information from OpenAPI schema
163
- - Adding JSON-RPC components
164
- - Preparing schema for use with MCP Proxy
165
-
166
- ## JSON-RPC Protocol
167
-
168
- ### Request Format
169
-
170
- ```json
171
- {
172
- "jsonrpc": "2.0",
173
- "method": "command_name",
174
- "params": {
175
- "param1": "value1",
176
- "param2": "value2"
177
- },
178
- "id": "request_id"
179
- }
180
- ```
181
-
182
- ### Successful Response Format
183
-
184
- ```json
185
- {
186
- "jsonrpc": "2.0",
187
- "result": {
188
- // Command execution result
189
- },
190
- "id": "request_id"
191
- }
192
- ```
193
-
194
- ### Error Response Format
195
-
196
- ```json
197
- {
198
- "jsonrpc": "2.0",
199
- "error": {
200
- "code": -32603,
201
- "message": "Error description"
202
- },
203
- "id": "request_id"
204
- }
205
- ```
206
-
207
- ## Error Handling
208
-
209
- The adapter handles and logs the following error types:
210
-
211
- 1. **Non-existent Command** (-32601) — calling a command not registered in the registry
212
- 2. **Missing Required Parameters** (-32602) — required command parameters not specified
213
- 3. **Parameter Type Errors** (-32602) — parameter type doesn't match expected type
214
- 4. **Command Execution Errors** (-32603) — exceptions occurring during execution
215
- 5. **Internal Server Errors** (-32603) — unexpected errors in adapter operation
216
-
217
- ## Usage Examples
218
-
219
- ### Integration with Existing FastAPI Application
220
-
221
- ```python
222
- from fastapi import FastAPI
223
- from command_registry import CommandRegistry
224
- from mcp_proxy_adapter.adapter import MCPProxyAdapter, configure_logger
225
-
226
- # Create main application
227
- app = FastAPI(title="My Application API")
228
-
229
- # Create command registry
230
- registry = CommandRegistry()
231
-
232
- # Register commands from different modules
233
- registry.scan_module("myapp.commands.search")
234
- registry.scan_module("myapp.commands.analytics")
235
-
236
- # Configure project logger and integrate it with adapter
237
- logger = logging.getLogger("myapp")
238
- adapter_logger = configure_logger(logger)
239
-
240
- # Create MCP Proxy adapter
241
- adapter = MCPProxyAdapter(registry)
242
-
243
- # Register endpoints in application
244
- adapter.register_endpoints(app)
245
-
246
- # Save configuration for MCP Proxy
247
- adapter.save_config_to_file("config/mcp_proxy_config.json")
248
- ```
249
-
250
- ### Parameter Type Validation
251
- ```
@@ -1,405 +0,0 @@
1
- # MCP Proxy Adapter
2
-
3
- ## Обзор
4
-
5
- MCP Proxy Adapter — это специализированный адаптер для интеграции Command Registry с MCP Proxy (Model Control Protocol Proxy). Он позволяет использовать команды из Command Registry как инструменты (tools) для моделей искусственного интеллекта, предоставляя унифицированный JSON-RPC интерфейс для взаимодействия с командами.
6
-
7
- ## Основные возможности
8
-
9
- - **JSON-RPC интерфейс** для выполнения команд из реестра
10
- - **Автоматическая генерация конфигурации** для MCPProxy
11
- - **Оптимизация OpenAPI схемы** для работы с моделями ИИ
12
- - **Расширенная обработка ошибок** с детальным логированием
13
- - **Валидация типов параметров** для предотвращения ошибок во время выполнения
14
- - **Интеграция с любыми FastAPI приложениями**
15
-
16
- ## Установка
17
-
18
- ```bash
19
- pip install mcp-proxy-adapter
20
- ```
21
-
22
- ## Быстрый старт
23
-
24
- ### Базовая интеграция
25
-
26
- ```python
27
- from fastapi import FastAPI
28
- from command_registry import CommandRegistry
29
- from mcp_proxy_adapter.adapter import MCPProxyAdapter
30
-
31
- # Создаем приложение FastAPI
32
- app = FastAPI()
33
-
34
- # Создаем реестр команд
35
- registry = CommandRegistry()
36
-
37
- # Регистрируем команды
38
- registry.register_command("search_by_text", search_function,
39
- description="Поиск по текстовому запросу")
40
-
41
- # Создаем MCP Proxy адаптер
42
- adapter = MCPProxyAdapter(registry)
43
-
44
- # Регистрируем эндпоинты в FastAPI приложении
45
- adapter.register_endpoints(app)
46
-
47
- # Сохраняем конфигурацию MCP Proxy в файл
48
- adapter.save_config_to_file("mcp_proxy_config.json")
49
- ```
50
-
51
- ### Работа с внешними логгерами
52
-
53
- ```python
54
- import logging
55
- from mcp_proxy_adapter.adapter import configure_logger
56
-
57
- # Создаем логгер приложения
58
- app_logger = logging.getLogger("my_application")
59
- app_logger.setLevel(logging.DEBUG)
60
-
61
- # Настраиваем обработчик для логгера
62
- handler = logging.StreamHandler()
63
- handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
64
- app_logger.addHandler(handler)
65
-
66
- # Интегрируем логгер приложения с адаптером
67
- adapter_logger = configure_logger(app_logger)
68
-
69
- # Теперь все сообщения от адаптера будут проходить через логгер приложения
70
- ```
71
-
72
- ## Архитектура
73
-
74
- ### Основные компоненты
75
-
76
- MCP Proxy Adapter состоит из следующих компонентов:
77
-
78
- 1. **MCPProxyAdapter** — основной класс, обеспечивающий интеграцию с Command Registry и FastAPI
79
- 2. **JsonRpcRequest/JsonRpcResponse** — модели для работы с JSON-RPC запросами и ответами
80
- 3. **SchemaOptimizer** — оптимизатор OpenAPI схемы для работы с MCP Proxy
81
- 4. **MCPProxyConfig/MCPProxyTool** — модели для формирования конфигурации MCP Proxy
82
-
83
- ### Технические детали реализации
84
-
85
- На основании анализа кода было обнаружено:
86
-
87
- 1. **Дублирование реализации** — MCPProxyAdapter представлен в двух файлах:
88
- - `src/adapter.py` (394 строки) — основная реализация адаптера
89
- - `src/adapters/mcp_proxy_adapter.py` — специализированная версия
90
-
91
- 2. **Схемы OpenAPI** — значительную часть кодовой базы составляют схемы OpenAPI:
92
- - `src/openapi_schema/rest_schema.py` (506 строк)
93
- - `src/openapi_schema/rpc_schema.py` (414 строк)
94
-
95
- 3. **Цепочки вызовов методов**:
96
- - `__init__` вызывает `_generate_router` для настройки FastAPI маршрутизатора
97
- - `save_config_to_file` использует `generate_mcp_proxy_config`
98
- - `get_openapi_schema` использует `_generate_basic_schema`
99
- - `execute_command` использует `_validate_param_types` для проверки типов
100
-
101
- ### Диаграмма взаимодействия
102
-
103
- ```
104
- ┌─────────────────┐ ┌────────────────────┐ ┌─────────────────┐
105
- │ │ │ │ │ │
106
- │ МСР Proxy │ │ MCPProxyAdapter │ │ CommandRegistry │
107
- │ │◄─────┤ │◄─────┤ │
108
- └─────────────────┘ └────────────────────┘ └─────────────────┘
109
- ▲ ▲ ▲
110
- │ │ │
111
- │ ┌────────┴───────┐ │
112
- │ │ │ │
113
- └────────────────┤ FastAPI App │──────────────────┘
114
- │ │
115
- └────────────────┘
116
- ```
117
-
118
- ## API адаптера
119
-
120
- ### Инициализация
121
-
122
- ```python
123
- def __init__(
124
- self,
125
- registry: CommandRegistry,
126
- cmd_endpoint: str = "/cmd",
127
- include_schema: bool = True,
128
- optimize_schema: bool = True
129
- )
130
- ```
131
-
132
- * **registry** — экземпляр CommandRegistry для интеграции
133
- * **cmd_endpoint** — путь для эндпоинта выполнения команд
134
- * **include_schema** — включить ли генерацию схемы OpenAPI
135
- * **optimize_schema** — оптимизировать ли схему для MCP Proxy
136
-
137
- ### Основные методы
138
-
139
- * **register_endpoints(app: FastAPI)** — регистрирует эндпоинты в приложении FastAPI
140
- * **generate_mcp_proxy_config()** — генерирует конфигурацию для MCP Proxy
141
- * **save_config_to_file(filename: str)** — сохраняет конфигурацию в файл
142
- * **_generate_router()** — внутренний метод для генерации маршрутизатора FastAPI
143
- * **_validate_param_types(command, params)** — проверяет типы параметров перед выполнением команды
144
- * **_generate_basic_schema()** — создает базовую схему OpenAPI при отсутствии генератора
145
- * **_optimize_schema(schema)** — оптимизирует схему OpenAPI для MCP Proxy
146
-
147
- ## Особенности реализации
148
-
149
- Анализ кода показал следующие важные аспекты реализации:
150
-
151
- 1. **Валидация параметров** происходит в несколько этапов:
152
- - Сначала проверяется наличие команды в реестре
153
- - Затем проверяется наличие всех обязательных параметров
154
- - После этого проверяются типы всех переданных параметров
155
-
156
- 2. **Обработка ошибок** реализована с помощью обширного механизма try/except, который:
157
- - Перехватывает специфические исключения (TypeError, KeyError)
158
- - Обрабатывает общие исключения через блок Exception
159
- - Форматирует все ошибки в формат JSON-RPC с соответствующими кодами
160
-
161
- 3. **Оптимизация схемы** включает несколько шагов:
162
- - Удаление избыточной информации из схемы OpenAPI
163
- - Добавление JSON-RPC компонентов
164
- - Подготовка схемы для использования с MCP Proxy
165
-
166
- ## JSON-RPC протокол
167
-
168
- ### Формат запроса
169
-
170
- ```json
171
- {
172
- "jsonrpc": "2.0",
173
- "method": "имя_команды",
174
- "params": {
175
- "параметр1": "значение1",
176
- "параметр2": "значение2"
177
- },
178
- "id": "идентификатор_запроса"
179
- }
180
- ```
181
-
182
- ### Формат успешного ответа
183
-
184
- ```json
185
- {
186
- "jsonrpc": "2.0",
187
- "result": {
188
- // Результат выполнения команды
189
- },
190
- "id": "идентификатор_запроса"
191
- }
192
- ```
193
-
194
- ### Формат ответа с ошибкой
195
-
196
- ```json
197
- {
198
- "jsonrpc": "2.0",
199
- "error": {
200
- "code": -32603,
201
- "message": "Описание ошибки"
202
- },
203
- "id": "идентификатор_запроса"
204
- }
205
- ```
206
-
207
- ## Обработка ошибок
208
-
209
- Адаптер обрабатывает и логирует следующие типы ошибок:
210
-
211
- 1. **Несуществующая команда** (-32601) — вызов команды, которая не зарегистрирована в реестре
212
- 2. **Отсутствие обязательных параметров** (-32602) — не указаны обязательные параметры команды
213
- 3. **Ошибки типов параметров** (-32602) — тип параметра не соответствует ожидаемому
214
- 4. **Ошибки при выполнении команды** (-32603) — исключения, возникающие в процессе выполнения
215
- 5. **Внутренние ошибки сервера** (-32603) — непредвиденные ошибки в работе адаптера
216
-
217
- ## Примеры использования
218
-
219
- ### Интеграция с существующим FastAPI приложением
220
-
221
- ```python
222
- from fastapi import FastAPI
223
- from command_registry import CommandRegistry
224
- from mcp_proxy_adapter.adapter import MCPProxyAdapter, configure_logger
225
-
226
- # Создаем основное приложение
227
- app = FastAPI(title="My Application API")
228
-
229
- # Создаем реестр команд
230
- registry = CommandRegistry()
231
-
232
- # Регистрируем команды из разных модулей
233
- registry.scan_module("myapp.commands.search")
234
- registry.scan_module("myapp.commands.analytics")
235
-
236
- # Настраиваем логгер проекта и интегрируем его с адаптером
237
- logger = logging.getLogger("myapp")
238
- adapter_logger = configure_logger(logger)
239
-
240
- # Создаем MCP Proxy адаптер
241
- adapter = MCPProxyAdapter(registry)
242
-
243
- # Регистрируем эндпоинты в приложении
244
- adapter.register_endpoints(app)
245
-
246
- # Сохраняем конфигурацию для MCP Proxy
247
- adapter.save_config_to_file("config/mcp_proxy_config.json")
248
- ```
249
-
250
- ### Валидация типов параметров
251
-
252
- MCP Proxy Adapter автоматически проверяет типы параметров перед выполнением команды:
253
-
254
- ```python
255
- # Определение команды с типизированными параметрами
256
- def search_documents(query: str, max_results: int = 10, filters: dict = None) -> list:
257
- """
258
- Поиск документов по запросу.
259
-
260
- Args:
261
- query: Поисковый запрос
262
- max_results: Максимальное количество результатов
263
- filters: Фильтры для уточнения поиска
264
-
265
- Returns:
266
- Список найденных документов
267
- """
268
- # Реализация поиска...
269
-
270
- # Пример JSON-RPC запроса с некорректным типом
271
- # {
272
- # "jsonrpc": "2.0",
273
- # "method": "search_documents",
274
- # "params": {
275
- # "query": "test query",
276
- # "max_results": "not_a_number" # Должно быть числом
277
- # },
278
- # "id": 1
279
- # }
280
- #
281
- # Ответ с ошибкой:
282
- # {
283
- # "jsonrpc": "2.0",
284
- # "error": {
285
- # "code": -32602,
286
- # "message": "Invalid parameter types: Параметр 'max_results' должен быть целым числом"
287
- # },
288
- # "id": 1
289
- # }
290
- ```
291
-
292
- ## Тестирование адаптера
293
-
294
- Для тестирования MCP Proxy Adapter рекомендуется использовать следующий подход:
295
-
296
- ```python
297
- import pytest
298
- from fastapi import FastAPI
299
- from fastapi.testclient import TestClient
300
- from command_registry import CommandRegistry
301
- from mcp_proxy_adapter.adapter import MCPProxyAdapter
302
-
303
- # Тестовая команда
304
- def test_command(value: int = 1) -> dict:
305
- """Тестовая команда."""
306
- return {"result": value * 2}
307
-
308
- @pytest.fixture
309
- def test_app():
310
- """Создает тестовое приложение с настроенным адаптером."""
311
- # Создаем реестр команд
312
- registry = CommandRegistry()
313
- registry.register_command("test", test_command)
314
-
315
- # Создаем адаптер
316
- adapter = MCPProxyAdapter(registry)
317
-
318
- # Создаем приложение FastAPI
319
- app = FastAPI()
320
- adapter.register_endpoints(app)
321
-
322
- # Возвращаем тестовый клиент
323
- return TestClient(app)
324
-
325
- def test_successful_command_execution(test_app):
326
- """Тест успешного выполнения команды."""
327
- response = test_app.post("/cmd", json={
328
- "jsonrpc": "2.0",
329
- "method": "test",
330
- "params": {"value": 5},
331
- "id": 1
332
- })
333
- assert response.status_code == 200
334
- data = response.json()
335
- assert data["result"] == {"result": 10}
336
- assert data["jsonrpc"] == "2.0"
337
- assert data["id"] == 1
338
- ```
339
-
340
- ## Интеграция с MCP Proxy
341
-
342
- ### Конфигурация MCP Proxy
343
-
344
- MCP Proxy Adapter автоматически генерирует конфигурацию для MCP Proxy:
345
-
346
- ```json
347
- {
348
- "version": "1.0",
349
- "tools": [
350
- {
351
- "name": "mcp_search_documents",
352
- "description": "Поиск документов по запросу",
353
- "parameters": {
354
- "type": "object",
355
- "properties": {
356
- "query": {
357
- "type": "string",
358
- "description": "Поисковый запрос"
359
- },
360
- "max_results": {
361
- "type": "integer",
362
- "description": "Максимальное количество результатов"
363
- },
364
- "filters": {
365
- "type": "object",
366
- "description": "Фильтры для уточнения поиска"
367
- }
368
- },
369
- "required": ["query"]
370
- }
371
- }
372
- ],
373
- "routes": [
374
- {
375
- "path": "/cmd",
376
- "type": "json_rpc",
377
- "method_field": "method",
378
- "params_field": "params"
379
- }
380
- ]
381
- }
382
- ```
383
-
384
- ### Запуск с MCP Proxy
385
-
386
- 1. Запустите ваше FastAPI приложение с MCPProxyAdapter
387
- 2. Запустите MCP Proxy с сгенерированной конфигурацией:
388
- ```bash
389
- mcp-proxy --config mcp_proxy_config.json
390
- ```
391
- 3. Настройте модель ИИ для работы с MCP Proxy
392
-
393
- ## Известные проблемы и ограничения
394
-
395
- Анализ кода показал следующие моменты, о которых следует знать:
396
-
397
- 1. **Дублирование реализации** — адаптер реализован в двух разных файлах, что может привести к несогласованности при обновлениях. Рекомендуется использовать версию из `mcp_proxy_adapter.adapter`.
398
-
399
- 2. **Большой размер схем** — схемы OpenAPI довольно объемные (более 400 строк), что может повлиять на производительность при обработке большого количества команд.
400
-
401
- 3. **Ограничения обнаружения типов** — валидация типов работает только с базовыми типами Python и может иметь ограничения при работе со сложными пользовательскими типами.
402
-
403
- ## Заключение
404
-
405
- MCP Proxy Adapter — это мощный инструмент для интеграции Command Registry с моделями искусственного интеллекта через MCP Proxy. Он предоставляет унифицированный JSON-RPC интерфейс, автоматически генерирует конфигурацию для MCP Proxy и обеспечивает надежную обработку ошибок и валидацию параметров.