@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.
Files changed (212) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/README.md +234 -0
  3. package/dist/auth/credential-manager.d.ts +116 -0
  4. package/dist/auth/credential-manager.d.ts.map +1 -0
  5. package/dist/auth/credential-manager.js +208 -0
  6. package/dist/auth/credential-manager.js.map +1 -0
  7. package/dist/auth/http-client.d.ts +81 -0
  8. package/dist/auth/http-client.d.ts.map +1 -0
  9. package/dist/auth/http-client.js +197 -0
  10. package/dist/auth/http-client.js.map +1 -0
  11. package/dist/auth/index.d.ts +8 -0
  12. package/dist/auth/index.d.ts.map +1 -0
  13. package/dist/auth/index.js +6 -0
  14. package/dist/auth/index.js.map +1 -0
  15. package/dist/generator/index.d.ts +7 -0
  16. package/dist/generator/index.d.ts.map +1 -0
  17. package/dist/generator/index.js +7 -0
  18. package/dist/generator/index.js.map +1 -0
  19. package/dist/generator/naming/acronyms.d.ts +81 -0
  20. package/dist/generator/naming/acronyms.d.ts.map +1 -0
  21. package/dist/generator/naming/acronyms.js +253 -0
  22. package/dist/generator/naming/acronyms.js.map +1 -0
  23. package/dist/generator/naming/index.d.ts +6 -0
  24. package/dist/generator/naming/index.d.ts.map +1 -0
  25. package/dist/generator/naming/index.js +6 -0
  26. package/dist/generator/naming/index.js.map +1 -0
  27. package/dist/generator/naming/volterra-mapping.d.ts +102 -0
  28. package/dist/generator/naming/volterra-mapping.d.ts.map +1 -0
  29. package/dist/generator/naming/volterra-mapping.js +259 -0
  30. package/dist/generator/naming/volterra-mapping.js.map +1 -0
  31. package/dist/generator/openapi-parser.d.ts +339 -0
  32. package/dist/generator/openapi-parser.d.ts.map +1 -0
  33. package/dist/generator/openapi-parser.js +463 -0
  34. package/dist/generator/openapi-parser.js.map +1 -0
  35. package/dist/generator/tool-generator.d.ts +74 -0
  36. package/dist/generator/tool-generator.d.ts.map +1 -0
  37. package/dist/generator/tool-generator.js +387 -0
  38. package/dist/generator/tool-generator.js.map +1 -0
  39. package/dist/generator/transformers/index.d.ts +7 -0
  40. package/dist/generator/transformers/index.d.ts.map +1 -0
  41. package/dist/generator/transformers/index.js +7 -0
  42. package/dist/generator/transformers/index.js.map +1 -0
  43. package/dist/generator/transformers/normalize-examples.d.ts +48 -0
  44. package/dist/generator/transformers/normalize-examples.d.ts.map +1 -0
  45. package/dist/generator/transformers/normalize-examples.js +66 -0
  46. package/dist/generator/transformers/normalize-examples.js.map +1 -0
  47. package/dist/index.d.ts +21 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +70 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/prompts/index.d.ts +6 -0
  52. package/dist/prompts/index.d.ts.map +1 -0
  53. package/dist/prompts/index.js +5 -0
  54. package/dist/prompts/index.js.map +1 -0
  55. package/dist/prompts/workflows.d.ts +59 -0
  56. package/dist/prompts/workflows.d.ts.map +1 -0
  57. package/dist/prompts/workflows.js +585 -0
  58. package/dist/prompts/workflows.js.map +1 -0
  59. package/dist/resources/handlers.d.ts +72 -0
  60. package/dist/resources/handlers.d.ts.map +1 -0
  61. package/dist/resources/handlers.js +279 -0
  62. package/dist/resources/handlers.js.map +1 -0
  63. package/dist/resources/index.d.ts +8 -0
  64. package/dist/resources/index.d.ts.map +1 -0
  65. package/dist/resources/index.js +6 -0
  66. package/dist/resources/index.js.map +1 -0
  67. package/dist/resources/templates.d.ts +86 -0
  68. package/dist/resources/templates.d.ts.map +1 -0
  69. package/dist/resources/templates.js +248 -0
  70. package/dist/resources/templates.js.map +1 -0
  71. package/dist/server.d.ts +78 -0
  72. package/dist/server.d.ts.map +1 -0
  73. package/dist/server.js +426 -0
  74. package/dist/server.js.map +1 -0
  75. package/dist/tools/discovery/consolidate.d.ts +97 -0
  76. package/dist/tools/discovery/consolidate.d.ts.map +1 -0
  77. package/dist/tools/discovery/consolidate.js +200 -0
  78. package/dist/tools/discovery/consolidate.js.map +1 -0
  79. package/dist/tools/discovery/describe.d.ts +132 -0
  80. package/dist/tools/discovery/describe.d.ts.map +1 -0
  81. package/dist/tools/discovery/describe.js +206 -0
  82. package/dist/tools/discovery/describe.js.map +1 -0
  83. package/dist/tools/discovery/execute.d.ts +98 -0
  84. package/dist/tools/discovery/execute.d.ts.map +1 -0
  85. package/dist/tools/discovery/execute.js +251 -0
  86. package/dist/tools/discovery/execute.js.map +1 -0
  87. package/dist/tools/discovery/index-loader.d.ts +28 -0
  88. package/dist/tools/discovery/index-loader.d.ts.map +1 -0
  89. package/dist/tools/discovery/index-loader.js +69 -0
  90. package/dist/tools/discovery/index-loader.js.map +1 -0
  91. package/dist/tools/discovery/index.d.ts +185 -0
  92. package/dist/tools/discovery/index.d.ts.map +1 -0
  93. package/dist/tools/discovery/index.js +177 -0
  94. package/dist/tools/discovery/index.js.map +1 -0
  95. package/dist/tools/discovery/search.d.ts +41 -0
  96. package/dist/tools/discovery/search.d.ts.map +1 -0
  97. package/dist/tools/discovery/search.js +155 -0
  98. package/dist/tools/discovery/search.js.map +1 -0
  99. package/dist/tools/discovery/types.d.ts +70 -0
  100. package/dist/tools/discovery/types.d.ts.map +1 -0
  101. package/dist/tools/discovery/types.js +9 -0
  102. package/dist/tools/discovery/types.js.map +1 -0
  103. package/dist/tools/generated/ai_intelligence/index.d.ts +8 -0
  104. package/dist/tools/generated/ai_intelligence/index.d.ts.map +1 -0
  105. package/dist/tools/generated/ai_intelligence/index.js +282 -0
  106. package/dist/tools/generated/ai_intelligence/index.js.map +1 -0
  107. package/dist/tools/generated/api_security/index.d.ts +8 -0
  108. package/dist/tools/generated/api_security/index.d.ts.map +1 -0
  109. package/dist/tools/generated/api_security/index.js +1852 -0
  110. package/dist/tools/generated/api_security/index.js.map +1 -0
  111. package/dist/tools/generated/applications/index.d.ts +8 -0
  112. package/dist/tools/generated/applications/index.d.ts.map +1 -0
  113. package/dist/tools/generated/applications/index.js +1589 -0
  114. package/dist/tools/generated/applications/index.js.map +1 -0
  115. package/dist/tools/generated/bigip/index.d.ts +8 -0
  116. package/dist/tools/generated/bigip/index.d.ts.map +1 -0
  117. package/dist/tools/generated/bigip/index.js +1173 -0
  118. package/dist/tools/generated/bigip/index.js.map +1 -0
  119. package/dist/tools/generated/billing/index.d.ts +8 -0
  120. package/dist/tools/generated/billing/index.d.ts.map +1 -0
  121. package/dist/tools/generated/billing/index.js +759 -0
  122. package/dist/tools/generated/billing/index.js.map +1 -0
  123. package/dist/tools/generated/cdn/index.d.ts +8 -0
  124. package/dist/tools/generated/cdn/index.d.ts.map +1 -0
  125. package/dist/tools/generated/cdn/index.js +841 -0
  126. package/dist/tools/generated/cdn/index.js.map +1 -0
  127. package/dist/tools/generated/config/index.d.ts +8 -0
  128. package/dist/tools/generated/config/index.d.ts.map +1 -0
  129. package/dist/tools/generated/config/index.js +316 -0
  130. package/dist/tools/generated/config/index.js.map +1 -0
  131. package/dist/tools/generated/identity/index.d.ts +8 -0
  132. package/dist/tools/generated/identity/index.d.ts.map +1 -0
  133. package/dist/tools/generated/identity/index.js +5371 -0
  134. package/dist/tools/generated/identity/index.js.map +1 -0
  135. package/dist/tools/generated/infrastructure/index.d.ts +8 -0
  136. package/dist/tools/generated/infrastructure/index.d.ts.map +1 -0
  137. package/dist/tools/generated/infrastructure/index.js +5342 -0
  138. package/dist/tools/generated/infrastructure/index.js.map +1 -0
  139. package/dist/tools/generated/infrastructure_protection/index.d.ts +8 -0
  140. package/dist/tools/generated/infrastructure_protection/index.d.ts.map +1 -0
  141. package/dist/tools/generated/infrastructure_protection/index.js +2919 -0
  142. package/dist/tools/generated/infrastructure_protection/index.js.map +1 -0
  143. package/dist/tools/generated/integrations/index.d.ts +8 -0
  144. package/dist/tools/generated/integrations/index.d.ts.map +1 -0
  145. package/dist/tools/generated/integrations/index.js +1995 -0
  146. package/dist/tools/generated/integrations/index.js.map +1 -0
  147. package/dist/tools/generated/load_balancer/index.d.ts +8 -0
  148. package/dist/tools/generated/load_balancer/index.d.ts.map +1 -0
  149. package/dist/tools/generated/load_balancer/index.js +2269 -0
  150. package/dist/tools/generated/load_balancer/index.js.map +1 -0
  151. package/dist/tools/generated/networking/index.d.ts +8 -0
  152. package/dist/tools/generated/networking/index.d.ts.map +1 -0
  153. package/dist/tools/generated/networking/index.js +11289 -0
  154. package/dist/tools/generated/networking/index.js.map +1 -0
  155. package/dist/tools/generated/nginx/index.d.ts +8 -0
  156. package/dist/tools/generated/nginx/index.d.ts.map +1 -0
  157. package/dist/tools/generated/nginx/index.js +680 -0
  158. package/dist/tools/generated/nginx/index.js.map +1 -0
  159. package/dist/tools/generated/observability/index.d.ts +8 -0
  160. package/dist/tools/generated/observability/index.d.ts.map +1 -0
  161. package/dist/tools/generated/observability/index.js +6140 -0
  162. package/dist/tools/generated/observability/index.js.map +1 -0
  163. package/dist/tools/generated/operations/index.d.ts +8 -0
  164. package/dist/tools/generated/operations/index.d.ts.map +1 -0
  165. package/dist/tools/generated/operations/index.js +1759 -0
  166. package/dist/tools/generated/operations/index.js.map +1 -0
  167. package/dist/tools/generated/security/index.d.ts +8 -0
  168. package/dist/tools/generated/security/index.d.ts.map +1 -0
  169. package/dist/tools/generated/security/index.js +9111 -0
  170. package/dist/tools/generated/security/index.js.map +1 -0
  171. package/dist/tools/generated/service_mesh/index.d.ts +8 -0
  172. package/dist/tools/generated/service_mesh/index.d.ts.map +1 -0
  173. package/dist/tools/generated/service_mesh/index.js +1628 -0
  174. package/dist/tools/generated/service_mesh/index.js.map +1 -0
  175. package/dist/tools/generated/shape_security/index.d.ts +8 -0
  176. package/dist/tools/generated/shape_security/index.d.ts.map +1 -0
  177. package/dist/tools/generated/shape_security/index.js +4121 -0
  178. package/dist/tools/generated/shape_security/index.js.map +1 -0
  179. package/dist/tools/generated/subscriptions/index.d.ts +8 -0
  180. package/dist/tools/generated/subscriptions/index.d.ts.map +1 -0
  181. package/dist/tools/generated/subscriptions/index.js +778 -0
  182. package/dist/tools/generated/subscriptions/index.js.map +1 -0
  183. package/dist/tools/generated/tenant_management/index.d.ts +8 -0
  184. package/dist/tools/generated/tenant_management/index.d.ts.map +1 -0
  185. package/dist/tools/generated/tenant_management/index.js +2292 -0
  186. package/dist/tools/generated/tenant_management/index.js.map +1 -0
  187. package/dist/tools/generated/vpn/index.d.ts +8 -0
  188. package/dist/tools/generated/vpn/index.d.ts.map +1 -0
  189. package/dist/tools/generated/vpn/index.js +1183 -0
  190. package/dist/tools/generated/vpn/index.js.map +1 -0
  191. package/dist/tools/index.d.ts +7 -0
  192. package/dist/tools/index.d.ts.map +1 -0
  193. package/dist/tools/index.js +6 -0
  194. package/dist/tools/index.js.map +1 -0
  195. package/dist/tools/registry.d.ts +27 -0
  196. package/dist/tools/registry.d.ts.map +1 -0
  197. package/dist/tools/registry.js +83 -0
  198. package/dist/tools/registry.js.map +1 -0
  199. package/dist/utils/error-handling.d.ts +109 -0
  200. package/dist/utils/error-handling.d.ts.map +1 -0
  201. package/dist/utils/error-handling.js +239 -0
  202. package/dist/utils/error-handling.js.map +1 -0
  203. package/dist/utils/index.d.ts +7 -0
  204. package/dist/utils/index.d.ts.map +1 -0
  205. package/dist/utils/index.js +6 -0
  206. package/dist/utils/index.js.map +1 -0
  207. package/dist/utils/logging.d.ts +75 -0
  208. package/dist/utils/logging.d.ts.map +1 -0
  209. package/dist/utils/logging.js +131 -0
  210. package/dist/utils/logging.js.map +1 -0
  211. package/manifest.json +143 -0
  212. 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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"}
@@ -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"}