@aashari/mcp-server-aws-sso
Version:
Node.js/TypeScript MCP server for AWS Single Sign-On (SSO). Enables AI systems (LLMs) with tools to initiate SSO login (device auth flow), list accounts/roles, and securely execute AWS CLI commands using temporary credentials. Streamlines AI interaction w
96 lines (95 loc) • 2.26 kB
TypeScript
/**
* AWS SSO service types
* Defines the interfaces used for AWS SSO authentication and credential management
*/
/**
* AWS SSO Credentials
* Contains the temporary AWS credentials retrieved after SSO authentication
*/
export interface AwsSsoCredentials {
accessKeyId: string;
secretAccessKey: string;
sessionToken: string;
expiration: number;
region?: string;
}
/**
* AWS SSO Auth Result
* Result of a successful AWS SSO authentication
*/
export interface AwsSsoAuthResult {
accessToken: string;
expiresAt: number;
region?: string;
startUrl?: string;
}
/**
* AWS SSO Configuration
* Settings used to configure AWS SSO login
*/
export interface AwsSsoConfig {
region: string;
startUrl?: string;
profileName?: string;
}
/**
* AWS SSO Account
* Represents an AWS account accessible via SSO
*/
export interface AwsSsoAccount {
accountId: string;
accountName: string;
emailAddress?: string;
}
/**
* AWS SSO Account Role
* Role within an AWS account that can be assumed via SSO
*/
export interface AwsSsoAccountRole {
accountId: string;
roleName: string;
roleArn?: string;
}
/**
* AWS SSO Account with Roles
* Account with its assigned roles
*/
export interface AwsSsoAccountWithRoles {
account: AwsSsoAccount;
roles: AwsSsoAccountRole[];
timestamp: number;
}
/**
* AWS SSO Device Authorization Details
* Details returned from the SSO OIDC device authorization flow
*/
export interface AwsSsoDeviceAuth {
deviceCode: string;
userCode: string;
verificationUri: string;
verificationUriComplete?: string;
expiresIn: number;
interval: number;
clientId: string;
clientSecret: string;
}
/**
* AWS SSO Cache Entry
* Structure for storing SSO data in cache file
*/
export interface AwsSsoCache {
ssoToken?: AwsSsoAuthResult;
credentials?: Record<string, AwsSsoCredentialsCacheEntry>;
lastAuth?: number;
accountRoles?: AwsSsoAccountWithRoles[];
accountsTimestamp?: number;
}
/**
* AWS SSO Credentials Cache Entry
* Structure for storing credentials in cache file
*/
export interface AwsSsoCredentialsCacheEntry extends AwsSsoCredentials {
timestamp: number;
accountId: string;
roleName: string;
}