@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,131 @@
1
+ /**
2
+ * Logging utilities for F5XC API MCP Server
3
+ *
4
+ * Uses stderr for logging to avoid interfering with STDIO transport.
5
+ * Provides structured logging with levels and context.
6
+ */
7
+ /**
8
+ * Log levels
9
+ */
10
+ export var LogLevel;
11
+ (function (LogLevel) {
12
+ LogLevel["DEBUG"] = "debug";
13
+ LogLevel["INFO"] = "info";
14
+ LogLevel["WARN"] = "warn";
15
+ LogLevel["ERROR"] = "error";
16
+ })(LogLevel || (LogLevel = {}));
17
+ /**
18
+ * Log level priority for filtering
19
+ */
20
+ const LOG_LEVEL_PRIORITY = {
21
+ [LogLevel.DEBUG]: 0,
22
+ [LogLevel.INFO]: 1,
23
+ [LogLevel.WARN]: 2,
24
+ [LogLevel.ERROR]: 3,
25
+ };
26
+ /**
27
+ * Default logger configuration
28
+ */
29
+ const DEFAULT_CONFIG = {
30
+ level: LogLevel.INFO,
31
+ timestamps: true,
32
+ json: false,
33
+ };
34
+ /**
35
+ * Logger class for structured logging to stderr
36
+ */
37
+ class Logger {
38
+ config;
39
+ constructor(config = {}) {
40
+ this.config = { ...DEFAULT_CONFIG, ...config };
41
+ // Check for environment variable overrides
42
+ const envLevel = process.env["LOG_LEVEL"]?.toLowerCase();
43
+ if (envLevel && Object.values(LogLevel).includes(envLevel)) {
44
+ this.config.level = envLevel;
45
+ }
46
+ if (process.env["LOG_JSON"] === "true") {
47
+ this.config.json = true;
48
+ }
49
+ }
50
+ /**
51
+ * Check if a log level should be output
52
+ */
53
+ shouldLog(level) {
54
+ return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.config.level];
55
+ }
56
+ /**
57
+ * Format and output a log entry
58
+ */
59
+ log(entry) {
60
+ if (!this.shouldLog(entry.level)) {
61
+ return;
62
+ }
63
+ if (this.config.timestamps) {
64
+ entry.timestamp = new Date().toISOString();
65
+ }
66
+ if (this.config.json) {
67
+ // Structured JSON output
68
+ process.stderr.write(JSON.stringify(entry) + "\n");
69
+ }
70
+ else {
71
+ // Human-readable output
72
+ const parts = [];
73
+ if (entry.timestamp) {
74
+ parts.push(`[${entry.timestamp}]`);
75
+ }
76
+ parts.push(`[${entry.level.toUpperCase()}]`);
77
+ parts.push(entry.message);
78
+ if (entry.context && Object.keys(entry.context).length > 0) {
79
+ parts.push(JSON.stringify(entry.context));
80
+ }
81
+ process.stderr.write(parts.join(" ") + "\n");
82
+ }
83
+ }
84
+ /**
85
+ * Log a debug message
86
+ */
87
+ debug(message, context) {
88
+ this.log({ level: LogLevel.DEBUG, message, context });
89
+ }
90
+ /**
91
+ * Log an info message
92
+ */
93
+ info(message, context) {
94
+ this.log({ level: LogLevel.INFO, message, context });
95
+ }
96
+ /**
97
+ * Log a warning message
98
+ */
99
+ warn(message, context) {
100
+ this.log({ level: LogLevel.WARN, message, context });
101
+ }
102
+ /**
103
+ * Log an error message
104
+ */
105
+ error(message, context) {
106
+ this.log({ level: LogLevel.ERROR, message, context });
107
+ }
108
+ /**
109
+ * Set the minimum log level
110
+ */
111
+ setLevel(level) {
112
+ this.config.level = level;
113
+ }
114
+ /**
115
+ * Get current configuration
116
+ */
117
+ getConfig() {
118
+ return Object.freeze({ ...this.config });
119
+ }
120
+ }
121
+ /**
122
+ * Singleton logger instance
123
+ */
124
+ export const logger = new Logger();
125
+ /**
126
+ * Create a child logger with additional context
127
+ */
128
+ export function createLogger(config) {
129
+ return new Logger(config);
130
+ }
131
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"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"}
package/manifest.json ADDED
@@ -0,0 +1,143 @@
1
+ {
2
+ "manifest_version": "0.3",
3
+ "name": "f5xc-api-mcp",
4
+ "display_name": "F5 Distributed Cloud API",
5
+ "version": "1.0.0",
6
+ "description": "MCP server for F5 Distributed Cloud API - AI-powered infrastructure management with 1500+ tools across 22 domains",
7
+ "long_description": "Enables AI assistants to manage F5 Distributed Cloud resources including HTTP load balancers, origin pools, WAF policies, DNS zones, and multi-cloud sites. Works in dual mode: documentation mode (no auth) or execution mode (with auth). Every response includes equivalent f5xcctl CLI commands and Terraform HCL examples.",
8
+ "author": {
9
+ "name": "Robin Mordasiewicz"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/robinmordasiewicz/f5xc-api-mcp.git"
14
+ },
15
+ "homepage": "https://github.com/robinmordasiewicz/f5xc-api-mcp",
16
+ "documentation": "https://robinmordasiewicz.github.io/f5xc-api-mcp",
17
+ "support": "https://github.com/robinmordasiewicz/f5xc-api-mcp/issues",
18
+ "keywords": [
19
+ "mcp",
20
+ "f5",
21
+ "f5xc",
22
+ "distributed-cloud",
23
+ "api",
24
+ "infrastructure",
25
+ "load-balancer",
26
+ "waf",
27
+ "dns",
28
+ "terraform",
29
+ "ai"
30
+ ],
31
+ "license": "MIT",
32
+ "compatibility": {
33
+ "claude_desktop": ">=1.0.0",
34
+ "platforms": ["darwin", "win32", "linux"],
35
+ "runtimes": {
36
+ "node": ">=18.0.0"
37
+ }
38
+ },
39
+ "server": {
40
+ "type": "node",
41
+ "entry_point": "dist/index.js",
42
+ "mcp_config": {
43
+ "command": "node",
44
+ "args": ["${__dirname}/dist/index.js"],
45
+ "env": {
46
+ "F5XC_API_URL": "${user_config.f5xc_api_url}",
47
+ "F5XC_API_TOKEN": "${user_config.f5xc_api_token}",
48
+ "F5XC_P12_FILE": "${user_config.f5xc_p12_file}",
49
+ "F5XC_P12_PASSWORD": "${user_config.f5xc_p12_password}",
50
+ "LOG_LEVEL": "${user_config.log_level}"
51
+ }
52
+ }
53
+ },
54
+ "user_config": {
55
+ "f5xc_api_url": {
56
+ "type": "string",
57
+ "title": "F5XC Tenant URL",
58
+ "description": "F5 Distributed Cloud tenant URL (e.g., https://your-tenant.console.ves.volterra.io)",
59
+ "required": false
60
+ },
61
+ "f5xc_api_token": {
62
+ "type": "string",
63
+ "title": "API Token",
64
+ "description": "API token for authentication (optional - runs in documentation mode without)",
65
+ "sensitive": true,
66
+ "required": false
67
+ },
68
+ "f5xc_p12_file": {
69
+ "type": "file",
70
+ "title": "P12 Certificate File",
71
+ "description": "Path to P12 certificate for mTLS authentication (alternative to API token)",
72
+ "required": false
73
+ },
74
+ "f5xc_p12_password": {
75
+ "type": "string",
76
+ "title": "P12 Password",
77
+ "description": "Password for P12 certificate",
78
+ "sensitive": true,
79
+ "required": false
80
+ },
81
+ "log_level": {
82
+ "type": "string",
83
+ "title": "Log Level",
84
+ "description": "Logging verbosity (debug, info, warn, error)",
85
+ "default": "info",
86
+ "required": false
87
+ }
88
+ },
89
+ "tools": [
90
+ {
91
+ "name": "f5xc-api-server-info",
92
+ "description": "Get server information and authentication status"
93
+ },
94
+ {
95
+ "name": "f5xc-api-search-tools",
96
+ "description": "Search for F5XC API tools using natural language"
97
+ },
98
+ {
99
+ "name": "f5xc-api-describe-tool",
100
+ "description": "Get detailed information about a specific tool"
101
+ },
102
+ {
103
+ "name": "f5xc-api-execute-tool",
104
+ "description": "Execute an F5XC API tool"
105
+ },
106
+ {
107
+ "name": "f5xc-api-search-resources",
108
+ "description": "Search for F5XC resources"
109
+ },
110
+ {
111
+ "name": "f5xc-api-execute-resource",
112
+ "description": "Execute CRUD operation on a resource"
113
+ }
114
+ ],
115
+ "tools_generated": true,
116
+ "prompts": [
117
+ {
118
+ "name": "deploy-http-loadbalancer",
119
+ "description": "Guided workflow for deploying HTTP Load Balancer with origin pool",
120
+ "arguments": ["namespace", "name"],
121
+ "text": "Deploy an HTTP Load Balancer named ${arguments.name} in namespace ${arguments.namespace}"
122
+ },
123
+ {
124
+ "name": "configure-waf",
125
+ "description": "Guided workflow for configuring Web Application Firewall",
126
+ "arguments": ["namespace"],
127
+ "text": "Configure WAF protection in namespace ${arguments.namespace}"
128
+ },
129
+ {
130
+ "name": "create-multicloud-site",
131
+ "description": "Guided workflow for deploying F5XC site in AWS/Azure/GCP",
132
+ "arguments": ["provider", "region"],
133
+ "text": "Create a multi-cloud site on ${arguments.provider} in ${arguments.region}"
134
+ },
135
+ {
136
+ "name": "generate-terraform",
137
+ "description": "Export F5XC resources as Terraform configuration",
138
+ "arguments": ["resource_type", "namespace"],
139
+ "text": "Generate Terraform for ${arguments.resource_type} resources in ${arguments.namespace}"
140
+ }
141
+ ],
142
+ "prompts_generated": false
143
+ }
package/package.json ADDED
@@ -0,0 +1,95 @@
1
+ {
2
+ "name": "@robinmordasiewicz/f5xc-api-mcp",
3
+ "version": "3.0.0",
4
+ "description": "F5 Distributed Cloud API MCP Server - Exposes F5XC APIs to AI assistants via Model Context Protocol",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "bin": {
15
+ "f5xc-api-mcp": "./dist/index.js"
16
+ },
17
+ "publishConfig": {
18
+ "access": "public",
19
+ "registry": "https://registry.npmjs.org/"
20
+ },
21
+ "scripts": {
22
+ "build": "tsc",
23
+ "start": "node dist/index.js",
24
+ "dev": "tsx src/index.ts",
25
+ "test": "vitest run",
26
+ "test:watch": "vitest",
27
+ "test:coverage": "vitest run --coverage",
28
+ "lint": "eslint src/**/*.ts",
29
+ "lint:fix": "eslint src/**/*.ts --fix",
30
+ "format": "prettier --write 'src/**/*.ts'",
31
+ "format:check": "prettier --check 'src/**/*.ts'",
32
+ "typecheck": "tsc --noEmit",
33
+ "sync-specs": "tsx scripts/sync-specs.ts",
34
+ "generate": "tsx scripts/generate.ts",
35
+ "generate-docs": "tsx scripts/generate-docs.ts",
36
+ "prepare": "npm run build",
37
+ "bundle": "mcpb pack",
38
+ "bundle:validate": "mcpb validate"
39
+ },
40
+ "keywords": [
41
+ "f5",
42
+ "xc",
43
+ "f5xc",
44
+ "distributed-cloud",
45
+ "mcp",
46
+ "model-context-protocol",
47
+ "api",
48
+ "load-balancer",
49
+ "waf",
50
+ "dns",
51
+ "ai-tools"
52
+ ],
53
+ "author": "Robin Mordasiewicz",
54
+ "license": "MIT",
55
+ "repository": {
56
+ "type": "git",
57
+ "url": "https://github.com/robinmordasiewicz/f5xc-api-mcp.git"
58
+ },
59
+ "homepage": "https://robinmordasiewicz.github.io/f5xc-api-mcp",
60
+ "bugs": {
61
+ "url": "https://github.com/robinmordasiewicz/f5xc-api-mcp/issues"
62
+ },
63
+ "engines": {
64
+ "node": ">=20.0.0"
65
+ },
66
+ "files": [
67
+ "dist",
68
+ "manifest.json",
69
+ "README.md",
70
+ "LICENSE",
71
+ "CHANGELOG.md"
72
+ ],
73
+ "devDependencies": {
74
+ "@anthropic-ai/mcpb": "^2.1.0",
75
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
76
+ "@typescript-eslint/parser": "^8.0.0",
77
+ "@vitest/coverage-v8": "^4.0.16",
78
+ "eslint": "^9.0.0",
79
+ "eslint-config-prettier": "^10.0.0",
80
+ "globals": "^16.5.0",
81
+ "prettier": "^3.0.0",
82
+ "tsx": "^4.0.0",
83
+ "typescript": "^5.0.0",
84
+ "vitest": "^4.0.16"
85
+ },
86
+ "dependencies": {
87
+ "@modelcontextprotocol/sdk": "^1.0.0",
88
+ "@types/node": "^25.0.0",
89
+ "axios": "^1.7.0",
90
+ "https-proxy-agent": "^7.0.0",
91
+ "jszip": "^3.10.0",
92
+ "yaml": "^2.4.0",
93
+ "zod": "^4.0.0"
94
+ }
95
+ }