# Higress: An Envoy-Based AI Gateway That Also Hosts MCP Servers

> Higress is a cloud-native API gateway built on Istio and Envoy, extended through Wasm plugins. It targets teams routing LLM traffic and hosting MCP servers, and it installs either as a single Docker container or through Helm.

**higress-group/higress** — 🤖 AI Gateway | AI Native API Gateway

- Repository: https://github.com/higress-group/higress
- Website: https://higress.ai
- Stars: 9,474 · Forks: 1,319
- Language: Go
- License: Apache-2.0
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/higress-group-higress

## What Higress Is For, and Who Ends Up Running It

Higress is a cloud-native API gateway built on Istio and Envoy. The README describes it as extendable with Wasm plugins written in Go, Rust or JS, and it ships with what the README calls dozens of ready-to-use general-purpose plugins plus a console. The project originated at Alibaba, according to the README, to address long-connection disruption during gateway reloads and to improve gRPC and Dubbo load balancing. It is now presented as a vendor-neutral CNCF project, and the README links to an ADOPTERS.md file in the community repository for public adopters.

The audience splits into two groups that do not always overlap. The first is platform teams already running Istio who want gateway behaviour without adopting a second control plane. The second is teams building AI features who need a place to terminate model provider traffic and to expose tools to agents. Higress tries to serve both with the same binary, which is the source of both its appeal and its complexity. If you only need the second group's use case, you are still installing an Envoy-based gateway with the Istio machinery underneath it.

## The Mechanism: Envoy Data Plane, Istio Control Plane, Wasm for Everything Else

The repository layout makes the architecture legible. There are top-level directories for envoy/, istio/, pkg/, plugins/, registry/, api/ and helm/. The go.mod file requires github.com/envoyproxy/go-control-plane/envoy v1.37.0 and an istio.io/api dependency, which is consistent with the README's claim that Higress is based on Istio and Envoy. The module path in go.mod is github.com/alibaba/higress/v2, a leftover from the project's origin.

Extension happens through Wasm. The plugins/ directory contains wasm-go, and the AI proxy plugin lives at plugins/wasm-go/extensions/ai-proxy/provider, where the README says the supported model providers are listed. That directory structure tells you something practical: adding a model provider is a matter of adding an entry to a provider list inside a Wasm plugin, not of patching the gateway core. The same plugin mechanism hosts MCP servers, which the README describes as giving agents a way to call tools and services with unified authentication, rate limiting and audit logging.

The control plane story is less visible from the README. There is an istio/ directory and a hgctl/ CLI directory, and the Makefile is a copy from the istio/common-files repository with a warning at the top saying not to edit it directly. That is a real signal about maintenance: parts of the build system are inherited from Istio and updated through an upstream common-files process rather than edited in place.

## Installing Higress with Docker and Reaching the Console

The README gives a Docker quick start aimed at individual developers who want a local instance for learning or for simple sites. It creates a working directory, mounts it into the container at /data, and publishes three ports. The README states that configuration files are written into the working directory.

```bash
mkdir higress; cd higress
docker run -d --rm --name higress-ai -v ${PWD}:/data \
        -p 8001:8001 -p 8080:8080 -p 8443:8443  \
        higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest
```

The README defines the ports explicitly: 8001 is the UI console entry, 8080 is the gateway HTTP entry, and 8443 is the gateway HTTPS entry. After the container starts, open port 8001 to reach the console. Traffic you want the gateway to handle goes to 8080 or 8443.

The image is pulled from a regional registry, and that is the first place a new user can get stuck. The README notes that if pulling from higress-registry.cn-hangzhou.cr.aliyuncs.com times out, you can substitute a mirror: higress-registry.us-west-1.cr.aliyuncs.com for North America or higress-registry.ap-southeast-7.cr.aliyuncs.com for Southeast Asia. Substitute the host in the docker run command; nothing else changes.

For Kubernetes, the README points to the official Quick Start documentation and gives the Helm form with a registry override:

```bash
helm install higress -n higress-system higress.io/higress --set global.hub=higress-registry.us-west-1.cr.aliyuncs.com --create-namespace
```

The global.hub value applies to both Higress component images and built-in Wasm plugin images, per the README, so setting it once covers the plugin side too. The repository also includes a get_helm.sh script at the top level.

## Hosting MCP Servers and Converting OpenAPI Specs

The MCP story is the part of Higress that is hardest to get elsewhere. The README says Higress hosts MCP Servers through its plugin mechanism and lists the benefits it claims: unified authentication and authorization, fine-grained rate limiting, audit logs for tool calls, observability, simplified deployment through the plugin mechanism, and dynamic updates without disruption or connection drops. Those last two matter because the project's stated origin was long-connection disruption during reloads.

There is a companion tool, openapi-to-mcpserver, hosted in the higress-group organization, which the README describes as converting OpenAPI specifications into remote MCP servers for hosting. The repository also carries a samples/mcp/ directory alongside samples/gateway-api/, samples/hello-world/, samples/loadbalance/, samples/nacos-discovery/, samples/quickstart.yaml and samples/wasmplugin/. The samples directory is the most reliable place to look for a working configuration, since the README's MCP section is mostly links out to documentation.

One thing the README does not do is show a complete MCP server configuration inline. It points to a hosted demo at mcp.higress.ai and to the MCP QuickStart documentation. If you are evaluating the MCP hosting feature, the README alone will not get you to a running server; you will be reading the docs site and the samples directory.

## Where Higress Is the Wrong Choice

The Docker quick start uses an all-in-one image tagged latest. That is convenient and it is also a moving target: the tag is not pinned, so a container you start today is not the container you start next month. For anything beyond local learning, pin a version. The release history shows v2.2.4 on 2026-08-13, v2.2.3 on 2026-06-25 and v2.2.2 on 2026-05-26, so versioned tags exist, but the README's own example does not use one.

Registry locality is a second constraint. The project publishes images through regional endpoints, and the default is the Hangzhou registry. If your infrastructure has egress restrictions or you run in a region without a nearby mirror, you are either mirroring the images yourself or accepting latency and possible timeouts on every pull. The README addresses this by telling operators they may mirror images to a registry they control and set global.hub accordingly, which is a real operational task, not a one-line change.

The third case is simpler: if you do not run Kubernetes and you do not need MCP hosting, the Istio and Envoy foundation is a lot of machinery for routing HTTP. A standalone reverse proxy with a plugin system would cost you less to operate. Higress's value concentrates in the two areas where it does something the alternatives do not, LLM provider proxying and MCP hosting, plus the Istio integration if you are already there.

## Higress Against Kong and APISIX

People compare Higress with Kong and with APISIX, and the comparison is fair because all three are API gateways with plugin systems. The difference is in the foundation and the extension model.

Kong and APISIX both build their own data planes and their own plugin runtimes, with Kong's plugins historically in Lua and APISIX's in Lua as well. Higress does not build a data plane. It configures Envoy, and its control plane carries Istio lineage, which is visible in the istio/ and envoy/ directories and in the go-control-plane and istio.io/api dependencies. Extensions are Wasm modules written in Go, Rust or JS, not Lua.

The practical consequence is that Higress inherits Envoy's traffic handling and Istio's configuration model, which is an advantage if your team already knows those, and a learning cost if it does not. The AI-specific difference is that Higress ships an ai-proxy Wasm plugin with a provider list and hosts MCP servers through the same plugin mechanism. Kong and APISIX have AI-related plugins too, but the MCP hosting path with an OpenAPI conversion tool is a Higress-specific arrangement described in this repository. If your gateway decision is driven by MCP hosting, that is the axis to compare on, not raw request throughput.

## Maintenance, Release Cadence and the Apache-2.0 Licence

The repository is not archived, and the last push was on 2026-09-11. Releases arrive at a moderate pace: v2.2.4 on 2026-08-13, v2.2.3 on 2026-06-25, v2.2.2 on 2026-05-26. The spacing between those three is roughly seven weeks and nine weeks, so the cadence is real but not weekly. The repository carries a VERSION file, a DEP_VERSION file, a release-notes/ directory and a changes/ directory, and the top level includes RELEASE.md, which suggests the release process is documented in-repo rather than only on the website.

Upgrade cost depends on how you installed it. The Docker path with --rm and a mounted /data directory means configuration lives in your working directory, so an upgrade is a container replacement plus whatever migration the release notes call for. The Helm path is a helm upgrade against the higress-system namespace, with global.hub as the value most likely to need attention if you have mirrored images. The README does not document rollback for either path.

Licensing is Apache-2.0, stated in the README badge and present as a LICENSE file at the top level, with a .licenserc.yaml for header checks. Apache-2.0 is permissive and includes an explicit patent grant, which matters for a gateway that sits in front of model provider traffic. That is a description of the licence, not legal advice; if you redistribute Higress inside a product, read the licence text and the NOTICE handling yourself.

## Conclusion

Adopt Higress if you already run Kubernetes and need one gateway for both LLM provider traffic and MCP tool calls, or if you want to evaluate it first as a single Docker container on port 8001. Do not adopt it if you need a mature multi-cloud control plane with a long independent release history, or if you cannot pull from the project's regional registries. Verify first that your target region's registry endpoint is reachable and that the Wasm plugin you depend on exists in plugins/wasm-go/extensions before you plan a migration.

## FAQ

### What API gateways are available?

Higress is one option, a cloud-native API gateway based on Istio and Envoy and extended with Wasm plugins in Go, Rust or JS. The README's comparison ground is against other gateways with plugin systems, and the project's own differentiator is AI gateway capability plus MCP server hosting.

### higress vs kong

Kong builds its own data plane and plugin runtime, while Higress configures Envoy and carries Istio lineage, with extensions written as Wasm modules. Higress additionally ships an ai-proxy Wasm plugin and hosts MCP servers through the same plugin mechanism, which is the axis where the two differ most for AI workloads.

### higress vs apisix

APISIX uses its own data plane and Lua-based plugin system, whereas Higress is built on Istio and Envoy and extends through Wasm plugins in Go, Rust or JS. If your team already operates Envoy and Istio, Higress reuses that knowledge; if not, APISIX's model is a smaller set of concepts to learn.

## Sources

- [higress-group/higress on GitHub](https://github.com/higress-group/higress)
- [License: Apache-2.0](https://github.com/higress-group/higress/blob/main/LICENSE)
- [Project website](https://higress.ai)
- [README](https://github.com/higress-group/higress/blob/main/README.md)
- [Releases](https://github.com/higress-group/higress/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/higress-group-higress
