@robinmordasiewicz/f5xc-api-mcp 3.0.0
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.
- package/CHANGELOG.md +74 -0
- package/README.md +234 -0
- package/dist/auth/credential-manager.d.ts +116 -0
- package/dist/auth/credential-manager.d.ts.map +1 -0
- package/dist/auth/credential-manager.js +208 -0
- package/dist/auth/credential-manager.js.map +1 -0
- package/dist/auth/http-client.d.ts +81 -0
- package/dist/auth/http-client.d.ts.map +1 -0
- package/dist/auth/http-client.js +197 -0
- package/dist/auth/http-client.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +6 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/generator/index.d.ts +7 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +7 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/naming/acronyms.d.ts +81 -0
- package/dist/generator/naming/acronyms.d.ts.map +1 -0
- package/dist/generator/naming/acronyms.js +253 -0
- package/dist/generator/naming/acronyms.js.map +1 -0
- package/dist/generator/naming/index.d.ts +6 -0
- package/dist/generator/naming/index.d.ts.map +1 -0
- package/dist/generator/naming/index.js +6 -0
- package/dist/generator/naming/index.js.map +1 -0
- package/dist/generator/naming/volterra-mapping.d.ts +102 -0
- package/dist/generator/naming/volterra-mapping.d.ts.map +1 -0
- package/dist/generator/naming/volterra-mapping.js +259 -0
- package/dist/generator/naming/volterra-mapping.js.map +1 -0
- package/dist/generator/openapi-parser.d.ts +339 -0
- package/dist/generator/openapi-parser.d.ts.map +1 -0
- package/dist/generator/openapi-parser.js +463 -0
- package/dist/generator/openapi-parser.js.map +1 -0
- package/dist/generator/tool-generator.d.ts +74 -0
- package/dist/generator/tool-generator.d.ts.map +1 -0
- package/dist/generator/tool-generator.js +387 -0
- package/dist/generator/tool-generator.js.map +1 -0
- package/dist/generator/transformers/index.d.ts +7 -0
- package/dist/generator/transformers/index.d.ts.map +1 -0
- package/dist/generator/transformers/index.js +7 -0
- package/dist/generator/transformers/index.js.map +1 -0
- package/dist/generator/transformers/normalize-examples.d.ts +48 -0
- package/dist/generator/transformers/normalize-examples.d.ts.map +1 -0
- package/dist/generator/transformers/normalize-examples.js +66 -0
- package/dist/generator/transformers/normalize-examples.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +5 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/workflows.d.ts +59 -0
- package/dist/prompts/workflows.d.ts.map +1 -0
- package/dist/prompts/workflows.js +585 -0
- package/dist/prompts/workflows.js.map +1 -0
- package/dist/resources/handlers.d.ts +72 -0
- package/dist/resources/handlers.d.ts.map +1 -0
- package/dist/resources/handlers.js +279 -0
- package/dist/resources/handlers.js.map +1 -0
- package/dist/resources/index.d.ts +8 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +6 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/templates.d.ts +86 -0
- package/dist/resources/templates.d.ts.map +1 -0
- package/dist/resources/templates.js +248 -0
- package/dist/resources/templates.js.map +1 -0
- package/dist/server.d.ts +78 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +426 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/discovery/consolidate.d.ts +97 -0
- package/dist/tools/discovery/consolidate.d.ts.map +1 -0
- package/dist/tools/discovery/consolidate.js +200 -0
- package/dist/tools/discovery/consolidate.js.map +1 -0
- package/dist/tools/discovery/describe.d.ts +132 -0
- package/dist/tools/discovery/describe.d.ts.map +1 -0
- package/dist/tools/discovery/describe.js +206 -0
- package/dist/tools/discovery/describe.js.map +1 -0
- package/dist/tools/discovery/execute.d.ts +98 -0
- package/dist/tools/discovery/execute.d.ts.map +1 -0
- package/dist/tools/discovery/execute.js +251 -0
- package/dist/tools/discovery/execute.js.map +1 -0
- package/dist/tools/discovery/index-loader.d.ts +28 -0
- package/dist/tools/discovery/index-loader.d.ts.map +1 -0
- package/dist/tools/discovery/index-loader.js +69 -0
- package/dist/tools/discovery/index-loader.js.map +1 -0
- package/dist/tools/discovery/index.d.ts +185 -0
- package/dist/tools/discovery/index.d.ts.map +1 -0
- package/dist/tools/discovery/index.js +177 -0
- package/dist/tools/discovery/index.js.map +1 -0
- package/dist/tools/discovery/search.d.ts +41 -0
- package/dist/tools/discovery/search.d.ts.map +1 -0
- package/dist/tools/discovery/search.js +155 -0
- package/dist/tools/discovery/search.js.map +1 -0
- package/dist/tools/discovery/types.d.ts +70 -0
- package/dist/tools/discovery/types.d.ts.map +1 -0
- package/dist/tools/discovery/types.js +9 -0
- package/dist/tools/discovery/types.js.map +1 -0
- package/dist/tools/generated/ai_intelligence/index.d.ts +8 -0
- package/dist/tools/generated/ai_intelligence/index.d.ts.map +1 -0
- package/dist/tools/generated/ai_intelligence/index.js +282 -0
- package/dist/tools/generated/ai_intelligence/index.js.map +1 -0
- package/dist/tools/generated/api_security/index.d.ts +8 -0
- package/dist/tools/generated/api_security/index.d.ts.map +1 -0
- package/dist/tools/generated/api_security/index.js +1852 -0
- package/dist/tools/generated/api_security/index.js.map +1 -0
- package/dist/tools/generated/applications/index.d.ts +8 -0
- package/dist/tools/generated/applications/index.d.ts.map +1 -0
- package/dist/tools/generated/applications/index.js +1589 -0
- package/dist/tools/generated/applications/index.js.map +1 -0
- package/dist/tools/generated/bigip/index.d.ts +8 -0
- package/dist/tools/generated/bigip/index.d.ts.map +1 -0
- package/dist/tools/generated/bigip/index.js +1173 -0
- package/dist/tools/generated/bigip/index.js.map +1 -0
- package/dist/tools/generated/billing/index.d.ts +8 -0
- package/dist/tools/generated/billing/index.d.ts.map +1 -0
- package/dist/tools/generated/billing/index.js +759 -0
- package/dist/tools/generated/billing/index.js.map +1 -0
- package/dist/tools/generated/cdn/index.d.ts +8 -0
- package/dist/tools/generated/cdn/index.d.ts.map +1 -0
- package/dist/tools/generated/cdn/index.js +841 -0
- package/dist/tools/generated/cdn/index.js.map +1 -0
- package/dist/tools/generated/config/index.d.ts +8 -0
- package/dist/tools/generated/config/index.d.ts.map +1 -0
- package/dist/tools/generated/config/index.js +316 -0
- package/dist/tools/generated/config/index.js.map +1 -0
- package/dist/tools/generated/identity/index.d.ts +8 -0
- package/dist/tools/generated/identity/index.d.ts.map +1 -0
- package/dist/tools/generated/identity/index.js +5371 -0
- package/dist/tools/generated/identity/index.js.map +1 -0
- package/dist/tools/generated/infrastructure/index.d.ts +8 -0
- package/dist/tools/generated/infrastructure/index.d.ts.map +1 -0
- package/dist/tools/generated/infrastructure/index.js +5342 -0
- package/dist/tools/generated/infrastructure/index.js.map +1 -0
- package/dist/tools/generated/infrastructure_protection/index.d.ts +8 -0
- package/dist/tools/generated/infrastructure_protection/index.d.ts.map +1 -0
- package/dist/tools/generated/infrastructure_protection/index.js +2919 -0
- package/dist/tools/generated/infrastructure_protection/index.js.map +1 -0
- package/dist/tools/generated/integrations/index.d.ts +8 -0
- package/dist/tools/generated/integrations/index.d.ts.map +1 -0
- package/dist/tools/generated/integrations/index.js +1995 -0
- package/dist/tools/generated/integrations/index.js.map +1 -0
- package/dist/tools/generated/load_balancer/index.d.ts +8 -0
- package/dist/tools/generated/load_balancer/index.d.ts.map +1 -0
- package/dist/tools/generated/load_balancer/index.js +2269 -0
- package/dist/tools/generated/load_balancer/index.js.map +1 -0
- package/dist/tools/generated/networking/index.d.ts +8 -0
- package/dist/tools/generated/networking/index.d.ts.map +1 -0
- package/dist/tools/generated/networking/index.js +11289 -0
- package/dist/tools/generated/networking/index.js.map +1 -0
- package/dist/tools/generated/nginx/index.d.ts +8 -0
- package/dist/tools/generated/nginx/index.d.ts.map +1 -0
- package/dist/tools/generated/nginx/index.js +680 -0
- package/dist/tools/generated/nginx/index.js.map +1 -0
- package/dist/tools/generated/observability/index.d.ts +8 -0
- package/dist/tools/generated/observability/index.d.ts.map +1 -0
- package/dist/tools/generated/observability/index.js +6140 -0
- package/dist/tools/generated/observability/index.js.map +1 -0
- package/dist/tools/generated/operations/index.d.ts +8 -0
- package/dist/tools/generated/operations/index.d.ts.map +1 -0
- package/dist/tools/generated/operations/index.js +1759 -0
- package/dist/tools/generated/operations/index.js.map +1 -0
- package/dist/tools/generated/security/index.d.ts +8 -0
- package/dist/tools/generated/security/index.d.ts.map +1 -0
- package/dist/tools/generated/security/index.js +9111 -0
- package/dist/tools/generated/security/index.js.map +1 -0
- package/dist/tools/generated/service_mesh/index.d.ts +8 -0
- package/dist/tools/generated/service_mesh/index.d.ts.map +1 -0
- package/dist/tools/generated/service_mesh/index.js +1628 -0
- package/dist/tools/generated/service_mesh/index.js.map +1 -0
- package/dist/tools/generated/shape_security/index.d.ts +8 -0
- package/dist/tools/generated/shape_security/index.d.ts.map +1 -0
- package/dist/tools/generated/shape_security/index.js +4121 -0
- package/dist/tools/generated/shape_security/index.js.map +1 -0
- package/dist/tools/generated/subscriptions/index.d.ts +8 -0
- package/dist/tools/generated/subscriptions/index.d.ts.map +1 -0
- package/dist/tools/generated/subscriptions/index.js +778 -0
- package/dist/tools/generated/subscriptions/index.js.map +1 -0
- package/dist/tools/generated/tenant_management/index.d.ts +8 -0
- package/dist/tools/generated/tenant_management/index.d.ts.map +1 -0
- package/dist/tools/generated/tenant_management/index.js +2292 -0
- package/dist/tools/generated/tenant_management/index.js.map +1 -0
- package/dist/tools/generated/vpn/index.d.ts +8 -0
- package/dist/tools/generated/vpn/index.d.ts.map +1 -0
- package/dist/tools/generated/vpn/index.js +1183 -0
- package/dist/tools/generated/vpn/index.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +27 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +83 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/utils/error-handling.d.ts +109 -0
- package/dist/utils/error-handling.d.ts.map +1 -0
- package/dist/utils/error-handling.js +239 -0
- package/dist/utils/error-handling.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logging.d.ts +75 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +131 -0
- package/dist/utils/logging.js.map +1 -0
- package/manifest.json +143 -0
- package/package.json +95 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Resource URI Templates
|
|
3
|
+
*
|
|
4
|
+
* Defines URI templates for F5XC configuration resources.
|
|
5
|
+
* URI scheme: f5xc://{tenant}/{namespace}/{resource-type}/{name}
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Resource URI schemes
|
|
9
|
+
*/
|
|
10
|
+
export const RESOURCE_SCHEMES = {
|
|
11
|
+
/** Base scheme for all F5XC resources */
|
|
12
|
+
BASE: "f5xc://",
|
|
13
|
+
/** System namespace for global resources */
|
|
14
|
+
SYSTEM: "system",
|
|
15
|
+
/** Shared namespace for cross-tenant resources */
|
|
16
|
+
SHARED: "shared",
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* All supported resource types
|
|
20
|
+
*/
|
|
21
|
+
export const RESOURCE_TYPES = {
|
|
22
|
+
// Core Resources (NO_TIER)
|
|
23
|
+
namespace: {
|
|
24
|
+
type: "namespace",
|
|
25
|
+
name: "Namespace",
|
|
26
|
+
description: "Logical grouping of resources",
|
|
27
|
+
apiPath: "/api/web/namespaces",
|
|
28
|
+
namespaceScoped: false,
|
|
29
|
+
tier: "NO_TIER",
|
|
30
|
+
},
|
|
31
|
+
certificate: {
|
|
32
|
+
type: "certificate",
|
|
33
|
+
name: "Certificate",
|
|
34
|
+
description: "TLS/SSL certificate",
|
|
35
|
+
apiPath: "/api/config/namespaces/{namespace}/certificates",
|
|
36
|
+
namespaceScoped: true,
|
|
37
|
+
tier: "NO_TIER",
|
|
38
|
+
},
|
|
39
|
+
secret: {
|
|
40
|
+
type: "secret",
|
|
41
|
+
name: "Secret",
|
|
42
|
+
description: "Sensitive data storage",
|
|
43
|
+
apiPath: "/api/config/namespaces/{namespace}/secrets",
|
|
44
|
+
namespaceScoped: true,
|
|
45
|
+
tier: "NO_TIER",
|
|
46
|
+
},
|
|
47
|
+
cloud_credentials: {
|
|
48
|
+
type: "cloud_credentials",
|
|
49
|
+
name: "Cloud Credentials",
|
|
50
|
+
description: "Cloud provider authentication",
|
|
51
|
+
apiPath: "/api/config/namespaces/{namespace}/cloud_credentials",
|
|
52
|
+
namespaceScoped: true,
|
|
53
|
+
tier: "NO_TIER",
|
|
54
|
+
},
|
|
55
|
+
// Standard Resources
|
|
56
|
+
http_loadbalancer: {
|
|
57
|
+
type: "http_loadbalancer",
|
|
58
|
+
name: "HTTP Load Balancer",
|
|
59
|
+
description: "Layer 7 HTTP/HTTPS load balancer",
|
|
60
|
+
apiPath: "/api/config/namespaces/{namespace}/http_loadbalancers",
|
|
61
|
+
namespaceScoped: true,
|
|
62
|
+
tier: "STANDARD",
|
|
63
|
+
relatedResources: ["origin_pool", "healthcheck", "app_firewall"],
|
|
64
|
+
},
|
|
65
|
+
tcp_loadbalancer: {
|
|
66
|
+
type: "tcp_loadbalancer",
|
|
67
|
+
name: "TCP Load Balancer",
|
|
68
|
+
description: "Layer 4 TCP load balancer",
|
|
69
|
+
apiPath: "/api/config/namespaces/{namespace}/tcp_loadbalancers",
|
|
70
|
+
namespaceScoped: true,
|
|
71
|
+
tier: "STANDARD",
|
|
72
|
+
relatedResources: ["origin_pool", "healthcheck"],
|
|
73
|
+
},
|
|
74
|
+
origin_pool: {
|
|
75
|
+
type: "origin_pool",
|
|
76
|
+
name: "Origin Pool",
|
|
77
|
+
description: "Backend server pool for load balancing",
|
|
78
|
+
apiPath: "/api/config/namespaces/{namespace}/origin_pools",
|
|
79
|
+
namespaceScoped: true,
|
|
80
|
+
tier: "STANDARD",
|
|
81
|
+
relatedResources: ["healthcheck"],
|
|
82
|
+
},
|
|
83
|
+
healthcheck: {
|
|
84
|
+
type: "healthcheck",
|
|
85
|
+
name: "Health Check",
|
|
86
|
+
description: "Health monitoring for origin servers",
|
|
87
|
+
apiPath: "/api/config/namespaces/{namespace}/healthchecks",
|
|
88
|
+
namespaceScoped: true,
|
|
89
|
+
tier: "STANDARD",
|
|
90
|
+
},
|
|
91
|
+
dns_zone: {
|
|
92
|
+
type: "dns_zone",
|
|
93
|
+
name: "DNS Zone",
|
|
94
|
+
description: "DNS zone management",
|
|
95
|
+
apiPath: "/api/config/namespaces/{namespace}/dns_zones",
|
|
96
|
+
namespaceScoped: true,
|
|
97
|
+
tier: "STANDARD",
|
|
98
|
+
},
|
|
99
|
+
dns_load_balancer: {
|
|
100
|
+
type: "dns_load_balancer",
|
|
101
|
+
name: "DNS Load Balancer",
|
|
102
|
+
description: "Global DNS-based load balancing",
|
|
103
|
+
apiPath: "/api/config/namespaces/{namespace}/dns_load_balancers",
|
|
104
|
+
namespaceScoped: true,
|
|
105
|
+
tier: "STANDARD",
|
|
106
|
+
relatedResources: ["dns_zone"],
|
|
107
|
+
},
|
|
108
|
+
// Site Resources
|
|
109
|
+
aws_vpc_site: {
|
|
110
|
+
type: "aws_vpc_site",
|
|
111
|
+
name: "AWS VPC Site",
|
|
112
|
+
description: "F5XC site deployed in AWS VPC",
|
|
113
|
+
apiPath: "/api/config/namespaces/{namespace}/aws_vpc_sites",
|
|
114
|
+
namespaceScoped: true,
|
|
115
|
+
tier: "STANDARD",
|
|
116
|
+
relatedResources: ["cloud_credentials"],
|
|
117
|
+
},
|
|
118
|
+
azure_vnet_site: {
|
|
119
|
+
type: "azure_vnet_site",
|
|
120
|
+
name: "Azure VNet Site",
|
|
121
|
+
description: "F5XC site deployed in Azure VNet",
|
|
122
|
+
apiPath: "/api/config/namespaces/{namespace}/azure_vnet_sites",
|
|
123
|
+
namespaceScoped: true,
|
|
124
|
+
tier: "STANDARD",
|
|
125
|
+
relatedResources: ["cloud_credentials"],
|
|
126
|
+
},
|
|
127
|
+
gcp_vpc_site: {
|
|
128
|
+
type: "gcp_vpc_site",
|
|
129
|
+
name: "GCP VPC Site",
|
|
130
|
+
description: "F5XC site deployed in GCP VPC",
|
|
131
|
+
apiPath: "/api/config/namespaces/{namespace}/gcp_vpc_sites",
|
|
132
|
+
namespaceScoped: true,
|
|
133
|
+
tier: "STANDARD",
|
|
134
|
+
relatedResources: ["cloud_credentials"],
|
|
135
|
+
},
|
|
136
|
+
// Advanced Resources (WAAP)
|
|
137
|
+
app_firewall: {
|
|
138
|
+
type: "app_firewall",
|
|
139
|
+
name: "Application Firewall",
|
|
140
|
+
description: "Web Application Firewall (WAF) policy",
|
|
141
|
+
apiPath: "/api/config/namespaces/{namespace}/app_firewalls",
|
|
142
|
+
namespaceScoped: true,
|
|
143
|
+
tier: "ADVANCED",
|
|
144
|
+
},
|
|
145
|
+
service_policy: {
|
|
146
|
+
type: "service_policy",
|
|
147
|
+
name: "Service Policy",
|
|
148
|
+
description: "Service-level security policy",
|
|
149
|
+
apiPath: "/api/config/namespaces/{namespace}/service_policys",
|
|
150
|
+
namespaceScoped: true,
|
|
151
|
+
tier: "ADVANCED",
|
|
152
|
+
},
|
|
153
|
+
rate_limiter: {
|
|
154
|
+
type: "rate_limiter",
|
|
155
|
+
name: "Rate Limiter",
|
|
156
|
+
description: "Request rate limiting policy",
|
|
157
|
+
apiPath: "/api/config/namespaces/{namespace}/rate_limiters",
|
|
158
|
+
namespaceScoped: true,
|
|
159
|
+
tier: "ADVANCED",
|
|
160
|
+
},
|
|
161
|
+
bot_defense: {
|
|
162
|
+
type: "bot_defense",
|
|
163
|
+
name: "Bot Defense",
|
|
164
|
+
description: "Bot detection and mitigation",
|
|
165
|
+
apiPath: "/api/config/namespaces/{namespace}/bot_defenses",
|
|
166
|
+
namespaceScoped: true,
|
|
167
|
+
tier: "ADVANCED",
|
|
168
|
+
},
|
|
169
|
+
api_definition: {
|
|
170
|
+
type: "api_definition",
|
|
171
|
+
name: "API Definition",
|
|
172
|
+
description: "OpenAPI specification for API protection",
|
|
173
|
+
apiPath: "/api/config/namespaces/{namespace}/api_definitions",
|
|
174
|
+
namespaceScoped: true,
|
|
175
|
+
tier: "ADVANCED",
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Build resource URI from components
|
|
180
|
+
*
|
|
181
|
+
* @param tenant - Tenant name
|
|
182
|
+
* @param namespace - Namespace (or 'system'/'shared')
|
|
183
|
+
* @param resourceType - Resource type identifier
|
|
184
|
+
* @param name - Resource name
|
|
185
|
+
* @returns Formatted resource URI
|
|
186
|
+
*/
|
|
187
|
+
export function buildResourceUri(tenant, namespace, resourceType, name) {
|
|
188
|
+
return `${RESOURCE_SCHEMES.BASE}${tenant}/${namespace}/${resourceType}/${name}`;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Parse resource URI into components
|
|
192
|
+
*
|
|
193
|
+
* @param uri - Resource URI to parse
|
|
194
|
+
* @returns Parsed components or null if invalid
|
|
195
|
+
*/
|
|
196
|
+
export function parseResourceUri(uri) {
|
|
197
|
+
if (!uri.startsWith(RESOURCE_SCHEMES.BASE)) {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
const path = uri.slice(RESOURCE_SCHEMES.BASE.length);
|
|
201
|
+
const parts = path.split("/");
|
|
202
|
+
if (parts.length !== 4) {
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
const [tenant, namespace, resourceType, name] = parts;
|
|
206
|
+
if (!tenant || !namespace || !resourceType || !name) {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
return { tenant, namespace, resourceType, name };
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get resource type definition
|
|
213
|
+
*
|
|
214
|
+
* @param type - Resource type identifier
|
|
215
|
+
* @returns Resource type definition or undefined
|
|
216
|
+
*/
|
|
217
|
+
export function getResourceType(type) {
|
|
218
|
+
return RESOURCE_TYPES[type];
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get all resource types for a tier
|
|
222
|
+
*
|
|
223
|
+
* @param tier - Subscription tier
|
|
224
|
+
* @returns Array of resource types
|
|
225
|
+
*/
|
|
226
|
+
export function getResourceTypesByTier(tier) {
|
|
227
|
+
return Object.values(RESOURCE_TYPES).filter((rt) => rt.tier === tier);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Build API path for a resource
|
|
231
|
+
*
|
|
232
|
+
* @param resourceType - Resource type identifier
|
|
233
|
+
* @param namespace - Namespace name
|
|
234
|
+
* @param name - Resource name (optional)
|
|
235
|
+
* @returns API path
|
|
236
|
+
*/
|
|
237
|
+
export function buildApiPath(resourceType, namespace, name) {
|
|
238
|
+
const rt = RESOURCE_TYPES[resourceType];
|
|
239
|
+
if (!rt) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
let path = rt.apiPath.replace("{namespace}", namespace);
|
|
243
|
+
if (name) {
|
|
244
|
+
path += `/${name}`;
|
|
245
|
+
}
|
|
246
|
+
return path;
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/resources/templates.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* F5 Distributed Cloud API MCP Server
|
|
3
|
+
*
|
|
4
|
+
* This module initializes and configures the MCP server with STDIO transport.
|
|
5
|
+
* Supports dual-mode operation: documentation mode (unauthenticated) and
|
|
6
|
+
* execution mode (authenticated with F5XC credentials).
|
|
7
|
+
*/
|
|
8
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
|
+
import { CredentialManager } from "./auth/credential-manager.js";
|
|
10
|
+
/**
|
|
11
|
+
* Server configuration options
|
|
12
|
+
*/
|
|
13
|
+
export interface ServerConfig {
|
|
14
|
+
/** Server name for MCP identification */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Server version */
|
|
17
|
+
version: string;
|
|
18
|
+
/** Credential manager for auth handling */
|
|
19
|
+
credentialManager: CredentialManager;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* F5XC API MCP Server
|
|
23
|
+
*
|
|
24
|
+
* Provides tools, resources, and prompts for interacting with F5 Distributed Cloud APIs.
|
|
25
|
+
* Works in two modes:
|
|
26
|
+
* - Documentation mode: Returns API documentation, schemas, f5xcctl equivalents, Terraform examples
|
|
27
|
+
* - Execution mode: Directly executes API calls when authenticated
|
|
28
|
+
*/
|
|
29
|
+
export declare class F5XCApiServer {
|
|
30
|
+
private server;
|
|
31
|
+
private credentialManager;
|
|
32
|
+
private httpClient;
|
|
33
|
+
private resourceHandler;
|
|
34
|
+
private transport;
|
|
35
|
+
constructor(config: ServerConfig);
|
|
36
|
+
/**
|
|
37
|
+
* Register all MCP capabilities (tools, resources, prompts)
|
|
38
|
+
*/
|
|
39
|
+
private registerCapabilities;
|
|
40
|
+
/**
|
|
41
|
+
* Register MCP tools for F5XC API operations
|
|
42
|
+
*
|
|
43
|
+
* Uses the dynamic discovery pattern for token efficiency:
|
|
44
|
+
* - 3 meta-tools instead of 1,400+ individual tools
|
|
45
|
+
* - Reduces upfront token consumption from ~535K to ~500 tokens
|
|
46
|
+
* - Full tool schemas loaded on-demand via describe_tool
|
|
47
|
+
*/
|
|
48
|
+
private registerTools;
|
|
49
|
+
/**
|
|
50
|
+
* Register MCP resources for F5XC configuration objects
|
|
51
|
+
*/
|
|
52
|
+
private registerResources;
|
|
53
|
+
/**
|
|
54
|
+
* Register MCP prompts for common workflows
|
|
55
|
+
*/
|
|
56
|
+
private registerPrompts;
|
|
57
|
+
/**
|
|
58
|
+
* Start the MCP server with STDIO transport
|
|
59
|
+
*/
|
|
60
|
+
start(): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Stop the MCP server
|
|
63
|
+
*/
|
|
64
|
+
stop(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Get the underlying MCP server instance
|
|
67
|
+
*/
|
|
68
|
+
getMcpServer(): McpServer;
|
|
69
|
+
/**
|
|
70
|
+
* Get the credential manager
|
|
71
|
+
*/
|
|
72
|
+
getCredentialManager(): CredentialManager;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create and configure the F5XC API MCP Server
|
|
76
|
+
*/
|
|
77
|
+
export declare function createServer(): F5XCApiServer;
|
|
78
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,iBAAiB,EAAY,MAAM,8BAA8B,CAAC;AAoB3E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAqC;gBAE1C,MAAM,EAAE,YAAY;IAmBhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAgUrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmDvB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,oBAAoB,IAAI,iBAAiB;CAG1C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAQ5C"}
|