@robinmordasiewicz/f5xc-terraform-mcp 3.5.0 β†’ 3.5.1

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 (2) hide show
  1. package/README.md +283 -104
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,153 +1,332 @@
1
- # MCP Registry
1
+ # F5 Distributed Cloud Terraform MCP Server
2
2
 
3
- The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers.
3
+ [![npm version](https://img.shields.io/npm/v/@robinmordasiewicz/f5xc-terraform-mcp)](https://www.npmjs.com/package/@robinmordasiewicz/f5xc-terraform-mcp)
4
+ [![MIT License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE)
4
5
 
5
- [**πŸ“€ Publish my MCP server**](docs/modelcontextprotocol-io/quickstart.mdx) | [**⚑️ Live API docs**](https://registry.modelcontextprotocol.io/docs) | [**πŸ‘€ Ecosystem vision**](docs/design/ecosystem-vision.md) | πŸ“– **[Full documentation](./docs)**
6
+ Token-optimized Model Context Protocol (MCP) server for F5 Distributed Cloud Terraform provider documentation, API specifications, and subscription management.
6
7
 
7
- ## Development Status
8
+ This MCP server exposes tools for AI assistants to interact with the [F5 Distributed Cloud Terraform Provider](https://github.com/robinmordasiewicz/terraform-provider-f5xc), enabling intelligent infrastructure-as-code assistance.
8
9
 
9
- **2025-10-24 update**: The Registry API has entered an **API freeze (v0.1)** πŸŽ‰. For the next month or more, the API will remain stable with no breaking changes, allowing integrators to confidently implement support. This freeze applies to v0.1 while development continues on v0. We'll use this period to validate the API in real-world integrations and gather feedback to shape v1 for general availability. Thank you to everyone for your contributions and patienceβ€”your involvement has been key to getting us here!
10
+ ## Features
10
11
 
11
- **2025-09-08 update**: The registry has launched in preview πŸŽ‰ ([announcement blog post](https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/)). While the system is now more stable, this is still a preview release and breaking changes or data resets may occur. A general availability (GA) release will follow later. We'd love your feedback in [GitHub discussions](https://github.com/modelcontextprotocol/registry/discussions/new?category=ideas) or in the [#registry-dev Discord](https://discord.com/channels/1358869848138059966/1369487942862504016) ([joining details here](https://modelcontextprotocol.io/community/communication)).
12
+ - **270+ OpenAPI Specifications** - Complete F5XC API documentation for AI-assisted configuration
13
+ - **250+ Terraform Resources** - Full documentation for all provider resources and data sources
14
+ - **Token-Optimized Design** - 14 tools consolidated to 7 (~75% token reduction)
15
+ - **Subscription Tier Management** - Check feature availability across STANDARD/ADVANCED/PREMIUM tiers
16
+ - **Addon Service Workflows** - Manage F5XC service activations
17
+ - **Resource Metadata** - Deterministic AI configuration generation with validation rules, defaults, and one-of schemas
12
18
 
13
- Current key maintainers:
14
- - **Adam Jones** (Anthropic) [@domdomegg](https://github.com/domdomegg)
15
- - **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant)
16
- - **Toby Padilla** (GitHub) [@toby](https://github.com/toby)
17
- - **Radoslav (Rado) Dimitrov** (Stacklok) [@rdimitrov](https://github.com/rdimitrov)
19
+ ## Installation
18
20
 
19
- ## Contributing
21
+ ### Global Installation
20
22
 
21
- We use multiple channels for collaboration - see [modelcontextprotocol.io/community/communication](https://modelcontextprotocol.io/community/communication).
23
+ ```bash
24
+ npm install -g @robinmordasiewicz/f5xc-terraform-mcp
25
+ ```
22
26
 
23
- Often (but not always) ideas flow through this pipeline:
27
+ ### Usage with Claude Desktop
24
28
 
25
- - **[Discord](https://modelcontextprotocol.io/community/communication)** - Real-time community discussions
26
- - **[Discussions](https://github.com/modelcontextprotocol/registry/discussions)** - Propose and discuss product/technical requirements
27
- - **[Issues](https://github.com/modelcontextprotocol/registry/issues)** - Track well-scoped technical work
28
- - **[Pull Requests](https://github.com/modelcontextprotocol/registry/pulls)** - Contribute work towards issues
29
+ Add to your `claude_desktop_config.json`:
29
30
 
30
- ### Quick start:
31
+ ```json
32
+ {
33
+ "mcpServers": {
34
+ "f5xc-terraform": {
35
+ "command": "npx",
36
+ "args": ["-y", "@robinmordasiewicz/f5xc-terraform-mcp"]
37
+ }
38
+ }
39
+ }
40
+ ```
31
41
 
32
- #### Pre-requisites
42
+ ### Manual CLI Usage
33
43
 
34
- - **Docker**
35
- - **Go 1.24.x**
36
- - **ko** - Container image builder for Go ([installation instructions](https://ko.build/install/))
37
- - **golangci-lint v2.4.0**
44
+ ```bash
45
+ # Run the MCP server
46
+ npx @robinmordasiewicz/f5xc-terraform-mcp
38
47
 
39
- #### Running the server
48
+ # Or install globally and run directly
49
+ f5xc-terraform-mcp
50
+ ```
40
51
 
41
- ```bash
42
- # Start full development environment
43
- make dev-compose
52
+ ## Available Tools
53
+
54
+ | Tool | Description |
55
+ |------|-------------|
56
+ | `f5xc_terraform_discover` | Meta-tool for discovering available tools with optional schema details |
57
+ | `f5xc_terraform_docs` | Search, get, or list documentation (resources, data-sources, functions, guides) |
58
+ | `f5xc_terraform_api` | Query 270+ OpenAPI specs (search, get, find endpoints, schema definitions) |
59
+ | `f5xc_terraform_subscription` | Check subscription tier requirements for resources and properties |
60
+ | `f5xc_terraform_addon` | Manage addon services (list, check activation, workflow) |
61
+ | `f5xc_terraform_metadata` | Resource metadata for deterministic AI config generation |
62
+ | `f5xc_terraform_get_summary` | Get provider summary with documentation and API specs overview |
63
+
64
+ ## Tool Details
65
+
66
+ ### Documentation Tool (`f5xc_terraform_docs`)
67
+
68
+ Search and retrieve Terraform provider documentation.
69
+
70
+ ```typescript
71
+ // Search for resources
72
+ await f5xc_terraform_docs({
73
+ operation: "search",
74
+ query: "http_loadbalancer",
75
+ type: "resource",
76
+ limit: 10
77
+ });
78
+
79
+ // Get specific resource documentation
80
+ await f5xc_terraform_docs({
81
+ operation: "get",
82
+ name: "http_loadbalancer",
83
+ type: "resource"
84
+ });
85
+
86
+ // List all resources
87
+ await f5xc_terraform_docs({
88
+ operation: "list",
89
+ type: "resource"
90
+ });
44
91
  ```
45
92
 
46
- This starts the registry at [`localhost:8080`](http://localhost:8080) with PostgreSQL. The database uses ephemeral storage and is reset each time you restart the containers, ensuring a clean state for development and testing.
93
+ ### API Specification Tool (`f5xc_terraform_api`)
94
+
95
+ Query OpenAPI specifications for API details.
96
+
97
+ ```typescript
98
+ // Search API specs
99
+ await f5xc_terraform_api({
100
+ operation: "search",
101
+ query: "http_loadbalancer",
102
+ limit: 10
103
+ });
104
+
105
+ // Get full spec with endpoints
106
+ await f5xc_terraform_api({
107
+ operation: "get",
108
+ name: "http_loadbalancer",
109
+ include_paths: true,
110
+ include_definitions: false
111
+ });
112
+
113
+ // Find endpoints matching pattern
114
+ await f5xc_terraform_api({
115
+ operation: "find_endpoints",
116
+ pattern: "/namespaces",
117
+ method: "GET"
118
+ });
119
+
120
+ // Get schema definition
121
+ await f5xc_terraform_api({
122
+ operation: "get_definition",
123
+ spec_name: "http_loadbalancer",
124
+ definition_name: "HTTPLoadBalancerSpec"
125
+ });
126
+ ```
47
127
 
48
- **Note:** The registry uses [ko](https://ko.build) to build container images. The `make dev-compose` command automatically builds the registry image with ko and loads it into your local Docker daemon before starting the services.
128
+ ### Subscription Tool (`f5xc_terraform_subscription`)
49
129
 
50
- By default, the registry seeds from the production API with a filtered subset of servers (to keep startup fast). This ensures your local environment mirrors production behavior and all seed data passes validation. For offline development you can seed from a file without validation with `MCP_REGISTRY_SEED_FROM=data/seed.json MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION=false make dev-compose`.
130
+ Check subscription tier requirements.
51
131
 
52
- The setup can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
132
+ ```typescript
133
+ // Get resource tier requirements
134
+ await f5xc_terraform_subscription({
135
+ operation: "resource",
136
+ resource_name: "http_loadbalancer"
137
+ });
53
138
 
54
- <details>
55
- <summary>Alternative: Running a pre-built Docker image</summary>
139
+ // Check if property requires Advanced tier
140
+ await f5xc_terraform_subscription({
141
+ operation: "property",
142
+ resource_name: "http_loadbalancer",
143
+ property_path: "enable_malicious_user_detection"
144
+ });
145
+ ```
56
146
 
57
- Pre-built Docker images are automatically published to GitHub Container Registry:
147
+ ### Addon Service Tool (`f5xc_terraform_addon`)
58
148
 
59
- ```bash
60
- # Run latest stable release
61
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest
149
+ Manage F5XC addon services.
62
150
 
63
- # Run latest from main branch (continuous deployment)
64
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main
151
+ ```typescript
152
+ // List available addon services
153
+ await f5xc_terraform_addon({
154
+ operation: "list"
155
+ });
65
156
 
66
- # Run specific release version
67
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
157
+ // Check service activation status
158
+ await f5xc_terraform_addon({
159
+ operation: "check",
160
+ service_name: "wasm"
161
+ });
68
162
 
69
- # Run development build from main branch
70
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
163
+ // Get activation workflow guidance
164
+ await f5xc_terraform_addon({
165
+ operation: "workflow",
166
+ service_name: "security_app_protect"
167
+ });
71
168
  ```
72
169
 
73
- **Available tags:**
74
- - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc.
75
- - **Continuous**: `main` (latest main branch build)
76
- - **Development**: `main-<date>-<sha>` (specific commit builds)
170
+ ### Metadata Tool (`f5xc_terraform_metadata`)
171
+
172
+ Get resource metadata for deterministic AI configuration.
173
+
174
+ ```typescript
175
+ // Get one-of field options
176
+ await f5xc_terraform_metadata({
177
+ operation: "oneof",
178
+ resource: "http_loadbalancer",
179
+ attribute: "http_type"
180
+ });
181
+
182
+ // Get validation patterns
183
+ await f5xc_terraform_metadata({
184
+ operation: "validation",
185
+ pattern: "name"
186
+ });
187
+
188
+ // Get default values
189
+ await f5xc_terraform_metadata({
190
+ operation: "defaults",
191
+ resource: "namespace"
192
+ });
193
+
194
+ // Get enums
195
+ await f5xc_terraform_metadata({
196
+ operation: "enums",
197
+ resource: "http_loadbalancer"
198
+ });
199
+
200
+ // Check attribute properties
201
+ await f5xc_terraform_metadata({
202
+ operation: "attribute",
203
+ resource: "http_loadbalancer",
204
+ attribute: "name"
205
+ });
206
+
207
+ // Check requires_replace
208
+ await f5xc_terraform_metadata({
209
+ operation: "requires_replace",
210
+ resource: "http_loadbalancer",
211
+ attribute: "name"
212
+ });
213
+
214
+ // Get resource dependencies
215
+ await f5xc_terraform_metadata({
216
+ operation: "dependencies",
217
+ resource: "http_loadbalancer"
218
+ });
219
+
220
+ // Get troubleshooting info
221
+ await f5xc_terraform_metadata({
222
+ operation: "troubleshoot",
223
+ error_code: "NOT_FOUND"
224
+ });
225
+
226
+ // Get full resource summary
227
+ await f5xc_terraform_metadata({
228
+ operation: "summary",
229
+ resource: "namespace"
230
+ });
231
+ ```
77
232
 
78
- </details>
233
+ ## Response Format
79
234
 
80
- #### Publishing a server
235
+ All tools support both `markdown` (default) and `json` response formats:
81
236
 
82
- To publish a server, we've built a simple CLI. You can use it with:
237
+ ```typescript
238
+ await f5xc_terraform_get_summary({
239
+ response_format: "json"
240
+ });
241
+ ```
83
242
 
84
- ```bash
85
- # Build the latest CLI
86
- make publisher
243
+ ## Token Optimization
87
244
 
88
- # Use it!
89
- ./bin/mcp-publisher --help
90
- ```
245
+ This MCP server uses a token-optimized design:
91
246
 
92
- See [the publisher guide](./docs/modelcontextprotocol-io/quickstart.mdx) for more details.
247
+ - **14 original tools consolidated to 7** (~75% token reduction)
248
+ - **Discovery meta-tool** enables lazy schema loading
249
+ - **Shared parameter descriptions** reduce schema size
250
+ - **Response truncation** for large payloads (50,000 character limit)
93
251
 
94
- #### Other commands
252
+ ## F5XC Provider Quick Start
95
253
 
96
- ```bash
97
- # Run lint, unit tests and integration tests
98
- make check
254
+ For Terraform configuration:
255
+
256
+ ```hcl
257
+ terraform {
258
+ required_providers {
259
+ f5xc = {
260
+ source = "robinmordasiewicz/f5xc"
261
+ version = ">= 2.0.0"
262
+ }
263
+ }
264
+ }
265
+
266
+ provider "f5xc" {
267
+ api_url = "https://your-tenant.console.ves.volterra.io"
268
+ api_token = var.f5xc_api_token
269
+ }
270
+
271
+ # Create a namespace
272
+ resource "f5xc_namespace" "example" {
273
+ name = "my-namespace"
274
+ }
99
275
  ```
100
276
 
101
- There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).
277
+ ## Resources Supported
102
278
 
103
- <!--
104
- For Claude and other AI tools: Always prefer make targets over custom commands where possible.
105
- -->
279
+ - **250+ Terraform Resources** - Full CRUD for F5XC services
280
+ - **40+ Data Sources** - Read-only access to F5XC configurations
281
+ - **2 Provider Functions** - `blindfold` and `blindfold_file` for secret management
282
+ - **Multiple Guides** - Step-by-step tutorials for common use cases
106
283
 
107
- ## Architecture
284
+ ## Subscription Tiers
108
285
 
109
- ### Project Structure
286
+ F5XC resources are organized by subscription tier:
110
287
 
111
- ```
112
- β”œβ”€β”€ cmd/ # Application entry points
113
- β”‚ └── publisher/ # Server publishing tool
114
- β”œβ”€β”€ data/ # Seed data
115
- β”œβ”€β”€ deploy/ # Deployment configuration (Pulumi)
116
- β”œβ”€β”€ docs/ # Documentation
117
- β”œβ”€β”€ internal/ # Private application code
118
- β”‚ β”œβ”€β”€ api/ # HTTP handlers and routing
119
- β”‚ β”œβ”€β”€ auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
120
- β”‚ β”œβ”€β”€ config/ # Configuration management
121
- β”‚ β”œβ”€β”€ database/ # Data persistence (PostgreSQL)
122
- β”‚ β”œβ”€β”€ service/ # Business logic
123
- β”‚ β”œβ”€β”€ telemetry/ # Metrics and monitoring
124
- β”‚ └── validators/ # Input validation
125
- β”œβ”€β”€ pkg/ # Public packages
126
- β”‚ β”œβ”€β”€ api/ # API types and structures
127
- β”‚ β”‚ └── v0/ # Version 0 API types
128
- β”‚ └── model/ # Data models for server.json
129
- β”œβ”€β”€ scripts/ # Development and testing scripts
130
- β”œβ”€β”€ tests/ # Integration tests
131
- └── tools/ # CLI tools and utilities
132
- └── validate-*.sh # Schema validation tools
133
- ```
288
+ | Tier | Description |
289
+ |------|-------------|
290
+ | **STANDARD** | Core networking and security features |
291
+ | **ADVANCED** | Enhanced WAF, bot defense, and advanced security |
292
+ | **PREMIUM** | Enterprise features and dedicated support |
293
+
294
+ Use the subscription tool to check which tier a resource or feature requires.
295
+
296
+ ## Documentation
297
+
298
+ - [Terraform Provider Documentation](https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest/docs)
299
+ - [F5 Distributed Cloud Docs](https://docs.cloud.f5.com/)
300
+ - [MCP Protocol Documentation](https://modelcontextprotocol.io/)
134
301
 
135
- ### Authentication
302
+ ## Version Synchronization
136
303
 
137
- Publishing supports multiple authentication methods:
138
- - **GitHub OAuth** - For publishing by logging into GitHub
139
- - **GitHub OIDC** - For publishing from GitHub Actions
140
- - **DNS verification** - For proving ownership of a domain and its subdomains
141
- - **HTTP verification** - For proving ownership of a domain
304
+ This npm package version is automatically synchronized with GitHub releases. Both the Terraform provider and MCP server share the same version number for consistency.
142
305
 
143
- The registry validates namespace ownership when publishing. E.g. to publish...:
144
- - `io.github.domdomegg/my-cool-mcp` you must login to GitHub as `domdomegg`, or be in a GitHub Action on domdomegg's repos
145
- - `me.adamjones/my-cool-mcp` you must prove ownership of `adamjones.me` via DNS or HTTP challenge
306
+ ## Development
307
+
308
+ ```bash
309
+ # Clone the repository
310
+ git clone https://github.com/robinmordasiewicz/terraform-provider-f5xc.git
311
+
312
+ # Navigate to MCP server directory
313
+ cd mcp-server
314
+
315
+ # Install dependencies
316
+ npm install
317
+
318
+ # Build the server
319
+ npm run build
320
+
321
+ # Run in development mode with hot reload
322
+ npm run dev
323
+ ```
146
324
 
147
- ## Community Projects
325
+ ## License
148
326
 
149
- Check out [community projects](docs/community-projects.md) to explore notable registry-related work created by the community.
327
+ This project is licensed under the [MIT License](LICENSE).
150
328
 
151
- ## More documentation
329
+ ## Support
152
330
 
153
- See the [documentation](./docs) for more details if your question has not been answered here!
331
+ - [GitHub Issues](https://github.com/robinmordasiewicz/terraform-provider-f5xc/issues)
332
+ - [F5 Community](https://community.f5.com/)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-terraform-mcp",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "MCP server for F5 Distributed Cloud Terraform provider - documentation, 270+ OpenAPI specs, subscription info, and addon activation workflows for AI assistants",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",