@robinmordasiewicz/f5xc-terraform-mcp 3.6.0 β†’ 3.6.2

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 +104 -283
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,332 +1,153 @@
1
- # F5 Distributed Cloud Terraform MCP Server
1
+ # MCP Registry
2
2
 
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)
3
+ The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers.
5
4
 
6
- Token-optimized Model Context Protocol (MCP) server for F5 Distributed Cloud Terraform provider documentation, API specifications, and subscription management.
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)**
7
6
 
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.
7
+ ## Development Status
9
8
 
10
- ## Features
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!
11
10
 
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
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)).
18
12
 
19
- ## Installation
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)
20
18
 
21
- ### Global Installation
19
+ ## Contributing
22
20
 
23
- ```bash
24
- npm install -g @robinmordasiewicz/f5xc-terraform-mcp
25
- ```
21
+ We use multiple channels for collaboration - see [modelcontextprotocol.io/community/communication](https://modelcontextprotocol.io/community/communication).
26
22
 
27
- ### Usage with Claude Desktop
23
+ Often (but not always) ideas flow through this pipeline:
28
24
 
29
- Add to your `claude_desktop_config.json`:
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
30
29
 
31
- ```json
32
- {
33
- "mcpServers": {
34
- "f5xc-terraform": {
35
- "command": "npx",
36
- "args": ["-y", "@robinmordasiewicz/f5xc-terraform-mcp"]
37
- }
38
- }
39
- }
40
- ```
30
+ ### Quick start:
41
31
 
42
- ### Manual CLI Usage
32
+ #### Pre-requisites
43
33
 
44
- ```bash
45
- # Run the MCP server
46
- npx @robinmordasiewicz/f5xc-terraform-mcp
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**
47
38
 
48
- # Or install globally and run directly
49
- f5xc-terraform-mcp
50
- ```
39
+ #### Running the server
51
40
 
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
- });
41
+ ```bash
42
+ # Start full development environment
43
+ make dev-compose
91
44
  ```
92
45
 
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
- ```
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.
127
47
 
128
- ### Subscription Tool (`f5xc_terraform_subscription`)
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.
129
49
 
130
- Check subscription tier requirements.
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`.
131
51
 
132
- ```typescript
133
- // Get resource tier requirements
134
- await f5xc_terraform_subscription({
135
- operation: "resource",
136
- resource_name: "http_loadbalancer"
137
- });
52
+ The setup can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
138
53
 
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
- ```
54
+ <details>
55
+ <summary>Alternative: Running a pre-built Docker image</summary>
146
56
 
147
- ### Addon Service Tool (`f5xc_terraform_addon`)
57
+ Pre-built Docker images are automatically published to GitHub Container Registry:
148
58
 
149
- Manage F5XC addon services.
150
-
151
- ```typescript
152
- // List available addon services
153
- await f5xc_terraform_addon({
154
- operation: "list"
155
- });
156
-
157
- // Check service activation status
158
- await f5xc_terraform_addon({
159
- operation: "check",
160
- service_name: "wasm"
161
- });
162
-
163
- // Get activation workflow guidance
164
- await f5xc_terraform_addon({
165
- operation: "workflow",
166
- service_name: "security_app_protect"
167
- });
168
- ```
169
-
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
- ```
59
+ ```bash
60
+ # Run latest stable release
61
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest
232
62
 
233
- ## Response Format
63
+ # Run latest from main branch (continuous deployment)
64
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main
234
65
 
235
- All tools support both `markdown` (default) and `json` response formats:
66
+ # Run specific release version
67
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
236
68
 
237
- ```typescript
238
- await f5xc_terraform_get_summary({
239
- response_format: "json"
240
- });
69
+ # Run development build from main branch
70
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
241
71
  ```
242
72
 
243
- ## Token Optimization
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)
244
77
 
245
- This MCP server uses a token-optimized design:
78
+ </details>
246
79
 
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)
80
+ #### Publishing a server
251
81
 
252
- ## F5XC Provider Quick Start
82
+ To publish a server, we've built a simple CLI. You can use it with:
253
83
 
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
- }
84
+ ```bash
85
+ # Build the latest CLI
86
+ make publisher
270
87
 
271
- # Create a namespace
272
- resource "f5xc_namespace" "example" {
273
- name = "my-namespace"
274
- }
88
+ # Use it!
89
+ ./bin/mcp-publisher --help
275
90
  ```
276
91
 
277
- ## Resources Supported
278
-
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
283
-
284
- ## Subscription Tiers
285
-
286
- F5XC resources are organized by subscription tier:
287
-
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 |
92
+ See [the publisher guide](./docs/modelcontextprotocol-io/quickstart.mdx) for more details.
293
93
 
294
- Use the subscription tool to check which tier a resource or feature requires.
94
+ #### Other commands
295
95
 
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/)
96
+ ```bash
97
+ # Run lint, unit tests and integration tests
98
+ make check
99
+ ```
301
100
 
302
- ## Version Synchronization
101
+ There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).
303
102
 
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.
103
+ <!--
104
+ For Claude and other AI tools: Always prefer make targets over custom commands where possible.
105
+ -->
305
106
 
306
- ## Development
107
+ ## Architecture
307
108
 
308
- ```bash
309
- # Clone the repository
310
- git clone https://github.com/robinmordasiewicz/terraform-provider-f5xc.git
109
+ ### Project Structure
311
110
 
312
- # Navigate to MCP server directory
313
- cd mcp-server
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
+ ```
314
134
 
315
- # Install dependencies
316
- npm install
135
+ ### Authentication
317
136
 
318
- # Build the server
319
- npm run build
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
320
142
 
321
- # Run in development mode with hot reload
322
- npm run dev
323
- ```
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
324
146
 
325
- ## License
147
+ ## Community Projects
326
148
 
327
- This project is licensed under the [MIT License](LICENSE).
149
+ Check out [community projects](docs/community-projects.md) to explore notable registry-related work created by the community.
328
150
 
329
- ## Support
151
+ ## More documentation
330
152
 
331
- - [GitHub Issues](https://github.com/robinmordasiewicz/terraform-provider-f5xc/issues)
332
- - [F5 Community](https://community.f5.com/)
153
+ See the [documentation](./docs) for more details if your question has not been answered here!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-terraform-mcp",
3
- "version": "3.6.0",
3
+ "version": "3.6.2",
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",