Skip to content

feat: add direct MCP Cloudflare Access endpoints - #45

Merged
xnoto merged 4 commits into
mainfrom
feat/per-backend-mcp-access
Sep 13, 2026
Merged

xnoto merged 4 commits into
mainfrom
feat/per-backend-mcp-access

Conversation

@xnoto

@xnoto xnoto commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds Cloudflare Access applications for 14 direct ToolHive MCP endpoints using the existing shared MCP service token. The aggregate Access application remains temporarily, although its route is removed by the paired GitOps change, to prevent an unauthenticated exposure window before route reconciliation is verified.

Fixes #
N/A — owner-approved direct MCP endpoint rollout.

Type of change

  • Infrastructure (OpenTofu root or module)
  • Refactor / cleanup

Validation

  • Required pull-request checks pass — pending.
  • Generated or centrally distributed files were regenerated by their owning automation, not hand-edited — no generated files changed.

Impact and rollout

Producer: this root owns Cloudflare Access applications. Consumer: the paired kustomize-cluster route change creates the workload DNS and tunnel routes.

Required order: merge and complete the environment-gated Cloudflare apply first; only then merge the paired GitOps route PR. Verify each direct endpoint rejects unauthenticated access and accepts an authenticated non-mutating tools/list request. After Argo removes the aggregate route, remove the now-unrouted aggregate Access application in a scoped follow-up.

Rollback: revert the GitOps routes first, then revert this root and complete its environment-gated apply.

Safety and secrets

  • Contains no plaintext secrets, decrypted SOPS values, state files, kubeconfigs, tokens, or private endpoints
  • No local OpenTofu init/plan/apply/destroy/import/state operations were run or claimed — plans come from pull-request checks
  • Breaking or irreversible effects are described above with rollback notes

AI-assisted change; review the full routing and Access policy diff.

Owner waiver: the owner explicitly instructed proceeding after the delegated adversarial reviewer could not consume repository content. The infrastructure reviewer’s High rollout-order finding was addressed before this PR.

@xnoto
xnoto requested a review from a team as a code owner September 13, 2026 02:35
@github-actions

github-actions Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

OpenTofu Test

OpenTofu test passed.

View the workflow run.

View run output
Terraform validate.......................................................Passed
Terraform validate with tflint...........................................Passed
Checkov..................................................................Passed
Terraform fmt............................................................Passed
Terraform docs...........................................................Passed
Detect hardcoded secrets.................................................Passed
check for case conflicts.................................................Passed
check for merge conflicts................................................Passed
check for broken symlinks............................(no files to check)Skipped
check vcs permalinks.....................................................Passed
detect destroyed symlinks................................................Passed
detect private key.......................................................Passed
fix end of files.........................................................Passed
mixed line ending........................................................Passed
trim trailing whitespace.................................................Passed
don't commit to branch..................................................Skipped
check for added large files..............................................Passed

@github-actions

Copy link
Copy Markdown
Contributor

OpenTofu Plan

OpenTofu plan passed.

View the workflow run.

View run output
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["context7"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-context7.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP context7"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["gcp"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-gcp.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP gcp"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["grafana"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-grafana.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP grafana"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["kubernetes"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-kubernetes.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP kubernetes"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-apify"] will be destroyed
  # (because key ["makeitwork-apify"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "346d0475fa182f8d3fde3d03a14bb85b7e01102656a0f5b385a98512e7a73e90" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-apify.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-apify.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "39384473-f146-485c-a8ff-06a6dcfb7f15" -> null
      - name                       = "MCP makeitwork-apify" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-apify.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-argocd"] will be destroyed
  # (because key ["makeitwork-argocd"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "513fbc0aee544c1fddb780118a7498e528efb63b3581ba4db1c1f984432d4243" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-argocd.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-argocd.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "33a6e346-5f5c-4c6e-8e79-aa495ef54f31" -> null
      - name                       = "MCP makeitwork-argocd" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-argocd.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-aws-docs"] will be destroyed
  # (because key ["makeitwork-aws-docs"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "9f1511b9ef5ea5c05cf664b2f29d64aef6772fe522e3d7f453d8deeaf9509756" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-aws-docs.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-aws-docs.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "dc8434c7-07cc-4ee8-bdfc-04f7e1ca5f1d" -> null
      - name                       = "MCP makeitwork-aws-docs" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-aws-docs.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-cloudflare"] will be destroyed
  # (because key ["makeitwork-cloudflare"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "26d77d83e86a84f7fc8211065877edcfbf08f592f56cb496dbaf1975d9ab9f96" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-cloudflare.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-cloudflare.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "7c58e390-63e9-49cd-b277-8736db883785" -> null
      - name                       = "MCP makeitwork-cloudflare" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-cloudflare.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-context7"] will be destroyed
  # (because key ["makeitwork-context7"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "86b52e4c24704b1fb17469e6fe5c38d5fba89dacc770208ee6680d467d634d92" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-context7.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-context7.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "ff91f373-8fd3-437d-a08e-e8032324622a" -> null
      - name                       = "MCP makeitwork-context7" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-context7.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-github"] will be destroyed
  # (because key ["makeitwork-github"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "5706b7b25746fe4fe75cdd5d15ed30354f46468edca989a8b0cd1c8ef50d8b74" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-github.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-github.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "8c31ec0e-14e1-4fe8-9d52-2670a8ca9892" -> null
      - name                       = "MCP makeitwork-github" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-github.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-github-xnoto"] will be destroyed
  # (because key ["makeitwork-github-xnoto"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "b42b0614b77061b0172488ef9f745aa4ca0d522779ae079e25a5556a5d111760" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-github-xnoto.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-github-xnoto.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "7fe3c55d-0b34-44b4-85b0-d60ce4f2cdfb" -> null
      - name                       = "MCP makeitwork-github-xnoto" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-github-xnoto.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-grafana"] will be destroyed
  # (because key ["makeitwork-grafana"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "44c82bb868d6ea3dbf9c098548e05fa44e4bf7a76993887fa03bb1d80f116e2d" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-grafana.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-grafana.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "deacbbb9-d859-400e-b55e-e1bb0f747237" -> null
      - name                       = "MCP makeitwork-grafana" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-grafana.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-kubernetes"] will be destroyed
  # (because key ["makeitwork-kubernetes"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "9bf0e9f1b0be8b6c020e47094e47d1391719b350cbd82ba7ea2f5938fa3b0af6" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-kubernetes.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-kubernetes.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "367933fb-1777-42f3-a4bd-0938417baf97" -> null
      - name                       = "MCP makeitwork-kubernetes" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-kubernetes.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-parallel-search"] will be destroyed
  # (because key ["makeitwork-parallel-search"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "3916ba1d6558cf917e1066960e82e9bd240196add814addd2916112ffd0fa814" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-parallel-search.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-parallel-search.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "007597d5-ef38-4802-acaf-6b40ba67d6e9" -> null
      - name                       = "MCP makeitwork-parallel-search" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-parallel-search.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["makeitwork-terraform-docs"] will be destroyed
  # (because key ["makeitwork-terraform-docs"] is not in for_each map)
  - resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      - account_id                 = (sensitive value) -> null
      - allowed_idps               = [
          - "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ] -> null
      - app_launcher_visible       = true -> null
      - aud                        = "b798584f2ae0b3ec827e0dafcad2ae44f3b59cd0df2b2276c04452264e12d77f" -> null
      - destinations               = [
          - {
              - type = "public" -> null
              - uri  = "mcp-makeitwork-terraform-docs.makeitwork.cloud" -> null
            },
        ] -> null
      - domain                     = "mcp-makeitwork-terraform-docs.makeitwork.cloud" -> null
      - http_only_cookie_attribute = true -> null
      - id                         = "c4b5061b-0573-4330-8b1a-0e6b472baa05" -> null
      - name                       = "MCP makeitwork-terraform-docs" -> null
      - policies                   = [
          - {
              - decision   = "non_identity" -> null
              - include    = [
                  - {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        } -> null
                    },
                ] -> null
              - name       = "mcp-gateway-clients" -> null
              - precedence = 1 -> null
            },
          - {
              - decision   = "allow" -> null
              - include    = [
                  - {
                      - group = {
                          - id = "e0d9e873-31d7-4536-9234-3dad8a99d84d" -> null
                        } -> null
                    },
                ] -> null
              - name       = "makeitworkcloud-admins" -> null
              - precedence = 2 -> null
            },
        ] -> null
      - self_hosted_domains        = [
          - "mcp-makeitwork-terraform-docs.makeitwork.cloud",
        ] -> null
      - session_duration           = "24h" -> null
      - type                       = "self_hosted" -> null
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["parallel-search"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-parallel-search.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP parallel-search"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["playwright"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-playwright.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP playwright"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["slidespeak"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-slidespeak.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP slidespeak"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["terraform-docs"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-terraform-docs.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP terraform-docs"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

  # cloudflare_zero_trust_access_application.mcp_gateway_backend["twilio-docs"] will be created
  + resource "cloudflare_zero_trust_access_application" "mcp_gateway_backend" {
      + account_id                 = (sensitive value)
      + allowed_idps               = [
          + "e584ea47-1251-4939-95f4-4daf4a58cd31",
        ]
      + app_launcher_visible       = true
      + aud                        = (known after apply)
      + destinations               = (known after apply)
      + domain                     = "mcp-twilio-docs.makeitwork.cloud"
      + http_only_cookie_attribute = true
      + id                         = (known after apply)
      + name                       = "MCP twilio-docs"
      + policies                   = [
          + {
              + decision   = "non_identity"
              + include    = [
                  + {
[REDACTED: potentially sensitive plan output]
[REDACTED: potentially sensitive plan output]
                        }
                    },
                ]
              + name       = "mcp-gateway-clients"
              + precedence = 1
            },
          + {
              + decision   = "allow"
              + include    = [
                  + {
                      + group = {
                          + id = "e0d9e873-31d7-4536-9234-3dad8a99d84d"
                        }
                    },
                ]
              + name       = "makeitworkcloud-admins"
              + precedence = 2
            },
        ]
      + self_hosted_domains        = (known after apply)
      + session_duration           = "24h"
      + type                       = "self_hosted"
    }

Plan: 14 to add, 0 to change, 11 to destroy.

@xnoto
xnoto merged commit 214f90e into main Sep 13, 2026
3 checks passed
@xnoto
xnoto deleted the feat/per-backend-mcp-access branch September 13, 2026 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant