awslabs.iam-mcp-server 1.0.1__py3-none-any.whl → 1.0.3__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.
- awslabs/iam_mcp_server/__init__.py +1 -1
- awslabs/iam_mcp_server/context.py +5 -0
- awslabs/iam_mcp_server/models.py +93 -0
- awslabs/iam_mcp_server/server.py +844 -17
- {awslabs_iam_mcp_server-1.0.1.dist-info → awslabs_iam_mcp_server-1.0.3.dist-info}/METADATA +223 -8
- awslabs_iam_mcp_server-1.0.3.dist-info/RECORD +13 -0
- awslabs_iam_mcp_server-1.0.1.dist-info/RECORD +0 -13
- {awslabs_iam_mcp_server-1.0.1.dist-info → awslabs_iam_mcp_server-1.0.3.dist-info}/WHEEL +0 -0
- {awslabs_iam_mcp_server-1.0.1.dist-info → awslabs_iam_mcp_server-1.0.3.dist-info}/entry_points.txt +0 -0
- {awslabs_iam_mcp_server-1.0.1.dist-info → awslabs_iam_mcp_server-1.0.3.dist-info}/licenses/LICENSE +0 -0
- {awslabs_iam_mcp_server-1.0.1.dist-info → awslabs_iam_mcp_server-1.0.3.dist-info}/licenses/NOTICE +0 -0
awslabs/iam_mcp_server/models.py
CHANGED
|
@@ -70,6 +70,16 @@ class IamPolicy(BaseModel):
|
|
|
70
70
|
update_date: str = Field(..., description='The date and time when the policy was last updated')
|
|
71
71
|
|
|
72
72
|
|
|
73
|
+
class IamGroup(BaseModel):
|
|
74
|
+
"""IAM Group model."""
|
|
75
|
+
|
|
76
|
+
group_name: str = Field(..., description='The name of the IAM group')
|
|
77
|
+
group_id: str = Field(..., description='The unique identifier for the group')
|
|
78
|
+
arn: str = Field(..., description='The Amazon Resource Name (ARN) of the group')
|
|
79
|
+
path: str = Field(..., description='The path to the group')
|
|
80
|
+
create_date: str = Field(..., description='The date and time when the group was created')
|
|
81
|
+
|
|
82
|
+
|
|
73
83
|
class AccessKey(BaseModel):
|
|
74
84
|
"""IAM Access Key model."""
|
|
75
85
|
|
|
@@ -195,3 +205,86 @@ class PolicySimulationResponse(BaseModel):
|
|
|
195
205
|
is_truncated: bool = Field(False, description='Whether the response is truncated')
|
|
196
206
|
marker: Optional[str] = Field(None, description='Marker for pagination')
|
|
197
207
|
policy_source_arn: str = Field(..., description='ARN of the principal that was simulated')
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class GroupDetailsResponse(BaseModel):
|
|
211
|
+
"""Response model for detailed group information."""
|
|
212
|
+
|
|
213
|
+
group: IamGroup = Field(..., description='Group details')
|
|
214
|
+
users: List[str] = Field(default_factory=list, description='List of user names in the group')
|
|
215
|
+
attached_policies: List[AttachedPolicy] = Field(
|
|
216
|
+
default_factory=list, description='List of attached managed policies'
|
|
217
|
+
)
|
|
218
|
+
inline_policies: List[str] = Field(
|
|
219
|
+
default_factory=list, description='List of inline policy names'
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
class GroupsListResponse(BaseModel):
|
|
224
|
+
"""Response model for listing groups."""
|
|
225
|
+
|
|
226
|
+
groups: List[IamGroup] = Field(..., description='List of IAM groups')
|
|
227
|
+
is_truncated: bool = Field(False, description='Whether the response is truncated')
|
|
228
|
+
marker: Optional[str] = Field(None, description='Marker for pagination')
|
|
229
|
+
count: int = Field(..., description='Number of groups returned')
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
class CreateGroupResponse(BaseModel):
|
|
233
|
+
"""Response model for creating a group."""
|
|
234
|
+
|
|
235
|
+
group: IamGroup = Field(..., description='Created group details')
|
|
236
|
+
message: str = Field(..., description='Success message')
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class GroupMembershipResponse(BaseModel):
|
|
240
|
+
"""Response model for group membership operations."""
|
|
241
|
+
|
|
242
|
+
message: str = Field(..., description='Operation result message')
|
|
243
|
+
group_name: str = Field(..., description='The name of the group')
|
|
244
|
+
user_name: str = Field(..., description='The name of the user')
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
class GroupPolicyAttachmentResponse(BaseModel):
|
|
248
|
+
"""Response model for group policy attachment operations."""
|
|
249
|
+
|
|
250
|
+
message: str = Field(..., description='Operation result message')
|
|
251
|
+
group_name: str = Field(..., description='The name of the group')
|
|
252
|
+
policy_arn: str = Field(..., description='The ARN of the policy')
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
class InlinePolicy(BaseModel):
|
|
256
|
+
"""Inline Policy model."""
|
|
257
|
+
|
|
258
|
+
policy_name: str = Field(..., description='The name of the inline policy')
|
|
259
|
+
policy_document: str = Field(..., description='The policy document in JSON format')
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
class InlinePolicyResponse(BaseModel):
|
|
263
|
+
"""Response model for inline policy operations."""
|
|
264
|
+
|
|
265
|
+
policy_name: str = Field(..., description='The name of the policy')
|
|
266
|
+
policy_document: str = Field(..., description='The policy document in JSON format')
|
|
267
|
+
user_name: Optional[str] = Field(None, description='The name of the user (for user policies)')
|
|
268
|
+
role_name: Optional[str] = Field(None, description='The name of the role (for role policies)')
|
|
269
|
+
message: str = Field(..., description='Operation result message')
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class InlinePolicyListResponse(BaseModel):
|
|
273
|
+
"""Response model for listing inline policies."""
|
|
274
|
+
|
|
275
|
+
policy_names: List[str] = Field(..., description='List of inline policy names')
|
|
276
|
+
user_name: Optional[str] = Field(None, description='The name of the user (for user policies)')
|
|
277
|
+
role_name: Optional[str] = Field(None, description='The name of the role (for role policies)')
|
|
278
|
+
count: int = Field(..., description='Number of policies returned')
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
class ManagedPolicyResponse(BaseModel):
|
|
282
|
+
"""Response model for managed policy document operations."""
|
|
283
|
+
|
|
284
|
+
policy_arn: str = Field(..., description='The ARN of the managed policy')
|
|
285
|
+
policy_name: str = Field(..., description='The name of the policy')
|
|
286
|
+
version_id: str = Field(..., description='The version ID of the policy')
|
|
287
|
+
policy_document: str = Field(..., description='The policy document in JSON format')
|
|
288
|
+
is_default_version: bool = Field(..., description='Whether this is the default version')
|
|
289
|
+
create_date: str = Field(..., description='The date and time when this version was created')
|
|
290
|
+
message: str = Field(..., description='Operation result message')
|