Skip to content

Commit 2fff9f4

Browse files
committed
refactor: Seperate mcp servers and integrations types
1 parent c13f281 commit 2fff9f4

4 files changed

Lines changed: 247 additions & 269 deletions

File tree

portkey_ai/api_resources/apis/mcp_integrations.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from portkey_ai.api_resources.base_client import APIClient, AsyncAPIClient
44
from urllib.parse import urlencode
55
from portkey_ai.api_resources.apis.api_resource import APIResource, AsyncAPIResource
6-
from portkey_ai.api_resources.types.mcp_type import (
6+
from portkey_ai.api_resources.types.mcp_integration_type import (
77
McpIntegrationCreateResponse,
88
McpIntegrationRetrieveResponse,
99
McpIntegrationListResponse,

portkey_ai/api_resources/apis/mcp_servers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from portkey_ai.api_resources.base_client import APIClient, AsyncAPIClient
44
from urllib.parse import urlencode
55
from portkey_ai.api_resources.apis.api_resource import APIResource, AsyncAPIResource
6-
from portkey_ai.api_resources.types.mcp_type import (
6+
from portkey_ai.api_resources.types.mcp_servers_type import (
77
McpServerCreateResponse,
88
McpServerRetrieveResponse,
99
McpServerListResponse,
Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
import json
2+
from typing import Any, Dict, List, Optional
3+
import httpx
4+
from pydantic import BaseModel, PrivateAttr
5+
from portkey_ai.api_resources.types.utils import parse_headers
6+
7+
8+
class McpIntegrationCreateResponse(BaseModel, extra="allow"):
9+
"""Response type for MCP integration creation."""
10+
11+
id: Optional[str] = None
12+
name: Optional[str] = None
13+
description: Optional[str] = None
14+
url: Optional[str] = None
15+
auth_type: Optional[str] = None
16+
transport: Optional[str] = None
17+
workspace_id: Optional[str] = None
18+
organisation_id: Optional[str] = None
19+
created_at: Optional[str] = None
20+
updated_at: Optional[str] = None
21+
object: Optional[str] = None
22+
_headers: Optional[httpx.Headers] = PrivateAttr()
23+
24+
def get_headers(self) -> Optional[Dict[str, str]]:
25+
return parse_headers(self._headers)
26+
27+
def __str__(self):
28+
return json.dumps(self.dict(), indent=4)
29+
30+
def __getitem__(self, key):
31+
return getattr(self, key, None)
32+
33+
def get(self, key: str, default: Optional[Any] = None):
34+
return getattr(self, key, None) or default
35+
36+
37+
class McpIntegrationRetrieveResponse(BaseModel, extra="allow"):
38+
"""Response type for MCP integration retrieval."""
39+
40+
id: Optional[str] = None
41+
name: Optional[str] = None
42+
description: Optional[str] = None
43+
url: Optional[str] = None
44+
auth_type: Optional[str] = None
45+
transport: Optional[str] = None
46+
workspace_id: Optional[str] = None
47+
organisation_id: Optional[str] = None
48+
configurations: Optional[Dict[str, Any]] = None
49+
created_at: Optional[str] = None
50+
updated_at: Optional[str] = None
51+
object: Optional[str] = None
52+
_headers: Optional[httpx.Headers] = PrivateAttr()
53+
54+
def get_headers(self) -> Optional[Dict[str, str]]:
55+
return parse_headers(self._headers)
56+
57+
def __str__(self):
58+
return json.dumps(self.dict(), indent=4)
59+
60+
def __getitem__(self, key):
61+
return getattr(self, key, None)
62+
63+
def get(self, key: str, default: Optional[Any] = None):
64+
return getattr(self, key, None) or default
65+
66+
67+
class McpIntegrationListResponse(BaseModel, extra="allow"):
68+
"""Response type for MCP integration list."""
69+
70+
data: Optional[List[Dict[str, Any]]] = None
71+
total: Optional[int] = None
72+
object: Optional[str] = None
73+
_headers: Optional[httpx.Headers] = PrivateAttr()
74+
75+
def get_headers(self) -> Optional[Dict[str, str]]:
76+
return parse_headers(self._headers)
77+
78+
def __str__(self):
79+
return json.dumps(self.dict(), indent=4)
80+
81+
def __getitem__(self, key):
82+
return getattr(self, key, None)
83+
84+
def get(self, key: str, default: Optional[Any] = None):
85+
return getattr(self, key, None) or default
86+
87+
88+
class McpIntegrationUpdateResponse(BaseModel, extra="allow"):
89+
"""Response type for MCP integration update."""
90+
91+
id: Optional[str] = None
92+
name: Optional[str] = None
93+
description: Optional[str] = None
94+
url: Optional[str] = None
95+
auth_type: Optional[str] = None
96+
transport: Optional[str] = None
97+
updated_at: Optional[str] = None
98+
object: Optional[str] = None
99+
_headers: Optional[httpx.Headers] = PrivateAttr()
100+
101+
def get_headers(self) -> Optional[Dict[str, str]]:
102+
return parse_headers(self._headers)
103+
104+
def __str__(self):
105+
return json.dumps(self.dict(), indent=4)
106+
107+
def __getitem__(self, key):
108+
return getattr(self, key, None)
109+
110+
def get(self, key: str, default: Optional[Any] = None):
111+
return getattr(self, key, None) or default
112+
113+
114+
class McpIntegrationDeleteResponse(BaseModel, extra="allow"):
115+
"""Response type for MCP integration deletion."""
116+
117+
success: Optional[bool] = None
118+
message: Optional[str] = None
119+
object: Optional[str] = None
120+
_headers: Optional[httpx.Headers] = PrivateAttr()
121+
122+
def get_headers(self) -> Optional[Dict[str, str]]:
123+
return parse_headers(self._headers)
124+
125+
def __str__(self):
126+
return json.dumps(self.dict(), indent=4)
127+
128+
def __getitem__(self, key):
129+
return getattr(self, key, None)
130+
131+
def get(self, key: str, default: Optional[Any] = None):
132+
return getattr(self, key, None) or default
133+
134+
135+
class McpIntegrationSyncResponse(BaseModel, extra="allow"):
136+
"""Response type for MCP integration sync."""
137+
138+
success: Optional[bool] = None
139+
message: Optional[str] = None
140+
details: Optional[Dict[str, Any]] = None
141+
object: Optional[str] = None
142+
_headers: Optional[httpx.Headers] = PrivateAttr()
143+
144+
def get_headers(self) -> Optional[Dict[str, str]]:
145+
return parse_headers(self._headers)
146+
147+
def __str__(self):
148+
return json.dumps(self.dict(), indent=4)
149+
150+
def __getitem__(self, key):
151+
return getattr(self, key, None)
152+
153+
def get(self, key: str, default: Optional[Any] = None):
154+
return getattr(self, key, None) or default
155+
156+
157+
class McpIntegrationTestResponse(BaseModel, extra="allow"):
158+
"""Response type for MCP integration test."""
159+
160+
success: Optional[bool] = None
161+
message: Optional[str] = None
162+
details: Optional[Dict[str, Any]] = None
163+
object: Optional[str] = None
164+
_headers: Optional[httpx.Headers] = PrivateAttr()
165+
166+
def get_headers(self) -> Optional[Dict[str, str]]:
167+
return parse_headers(self._headers)
168+
169+
def __str__(self):
170+
return json.dumps(self.dict(), indent=4)
171+
172+
def __getitem__(self, key):
173+
return getattr(self, key, None)
174+
175+
def get(self, key: str, default: Optional[Any] = None):
176+
return getattr(self, key, None) or default
177+
178+
179+
class McpIntegrationWorkspacesResponse(BaseModel, extra="allow"):
180+
"""Response type for MCP integration workspaces."""
181+
182+
workspaces: Optional[List[Dict[str, Any]]] = None
183+
global_workspace_access: Optional[Dict[str, Any]] = None
184+
object: Optional[str] = None
185+
_headers: Optional[httpx.Headers] = PrivateAttr()
186+
187+
def get_headers(self) -> Optional[Dict[str, str]]:
188+
return parse_headers(self._headers)
189+
190+
def __str__(self):
191+
return json.dumps(self.dict(), indent=4)
192+
193+
def __getitem__(self, key):
194+
return getattr(self, key, None)
195+
196+
def get(self, key: str, default: Optional[Any] = None):
197+
return getattr(self, key, None) or default
198+
199+
200+
class McpIntegrationCapabilitiesResponse(BaseModel, extra="allow"):
201+
"""Response type for MCP integration capabilities."""
202+
203+
data: Optional[List[Dict[str, Any]]] = None
204+
object: Optional[str] = None
205+
_headers: Optional[httpx.Headers] = PrivateAttr()
206+
207+
def get_headers(self) -> Optional[Dict[str, str]]:
208+
return parse_headers(self._headers)
209+
210+
def __str__(self):
211+
return json.dumps(self.dict(), indent=4)
212+
213+
def __getitem__(self, key):
214+
return getattr(self, key, None)
215+
216+
def get(self, key: str, default: Optional[Any] = None):
217+
return getattr(self, key, None) or default
218+
219+
220+
class McpIntegrationMetadataResponse(BaseModel, extra="allow"):
221+
"""Response type for MCP integration metadata."""
222+
223+
server_name: Optional[str] = None
224+
server_version: Optional[str] = None
225+
protocol_version: Optional[str] = None
226+
title: Optional[str] = None
227+
description: Optional[str] = None
228+
website_url: Optional[str] = None
229+
icons: Optional[Dict[str, Any]] = None
230+
capability_flags: Optional[Dict[str, Any]] = None
231+
instructions: Optional[str] = None
232+
object: Optional[str] = None
233+
_headers: Optional[httpx.Headers] = PrivateAttr()
234+
235+
def get_headers(self) -> Optional[Dict[str, str]]:
236+
return parse_headers(self._headers)
237+
238+
def __str__(self):
239+
return json.dumps(self.dict(), indent=4)
240+
241+
def __getitem__(self, key):
242+
return getattr(self, key, None)
243+
244+
def get(self, key: str, default: Optional[Any] = None):
245+
return getattr(self, key, None) or default

0 commit comments

Comments
 (0)