Agent skill

Pixiu MCP Gateway

by apache in apache/dubbo-go-pixiu

Creates and validates dubbo-go-pixiu MCP gateway conf.yaml. An agent skill from apache/dubbo-go-pixiu.

Apache-2.0Auto-check passedBackend & APIs

Install Pixiu MCP Gateway

skills CLI
$ npx skills add apache/dubbo-go-pixiu --skill pixiu-mcp-gateway -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install apache/dubbo-go-pixiu pixiu-mcp-gateway --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/apache/dubbo-go-pixiu.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pixiu-mcp-gateway .claude/skills/pixiu-mcp-gateway && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pixiu-mcp-gateway
GitHub stars
568
Token cost
~3.1k tokens
SKILL.md length
672 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

Creates and validates dubbo-go-pixiu MCP gateway conf.yaml. An agent skill from apache/dubbo-go-pixiu.

  • Works in 5 steps: Check required Inputs first → When field shape or behavior is… → Choose static or registry path by… → …
  • MCP server filters
  • SKILL.md covers Purpose, When to use, Inputs and Workflow, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Pixiu MCP Gateway is an agent skill from apache/dubbo-go-pixiu. Creates and validates dubbo-go-pixiu MCP gateway conf.yaml. Use for MCP server filters, tools/list, tools/call, Mcp-Session-Id, MCP auth, Nacos MCP registry, or exposing backend HTTP APIs as MCP tools. Do not use for LLM model proxying.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering MCP servers and REST APIs. It works with Model Context Protocol, Apache Kafka and gRPC. The repository describes itself as: Based on the proxy gateway service of dubbo-go, it solves the problem that the external protocol calls the internal Dubbo cluster. At present, it supports HTTP and… The licence is Apache-2.0.

When your agent uses it

  • MCP server filters
  • Nacos MCP registry
  • Exposing backend HTTP APIs as MCP tools
  • LLM model proxying

Example prompts

  • “Use the pixiu-mcp-gateway skill to create and validates dubbo-go-pixiu MCP gateway conf.yaml. An agent skill from apache/dubbo-go-pixiu”
  • “/pixiu-mcp-gateway”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Check required Inputs first
  2. When field shape or behavior is uncertain, read current source before generating YAML
  3. Choose static or registry path by tool_mode: static writes tools into the MCP filter; registry uses the MCP server adapter.
  4. Generate listener, route, and filters: route the MCP endpoint to the route cluster, and put the auth filter before the MCP server when…
  5. Generate tool backend: write static tool backend clusters under static_resources.clusters[]; map args with path, query, or body.

What it can do on your machine

Read from SKILL.md and the folder at commit ba01888. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pixiu MCP Gateway loads about 3.1k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 672 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from apache/dubbo-go-pixiu at commit ba01888, republished under its Apache-2.0 licence (© apache). 672 words, ~3,137 tokens.

Download SKILL.mdSave it as .claude/skills/pixiu-mcp-gateway/SKILL.md (or your agent's skills folder).
name
pixiu-mcp-gateway
description
Creates and validates dubbo-go-pixiu MCP gateway conf.yaml. Use for MCP server filters, tools/list, tools/call, Mcp-Session-Id, MCP auth, Nacos MCP registry, or exposing backend HTTP APIs as MCP tools. Do not use for LLM model proxying.

pixiu-mcp-gateway

Purpose

Generate a complete or embeddable MCP gateway conf.yaml that exposes backend HTTP APIs as MCP tools.

When to use

  • Use when:

    • Exposing backend HTTP APIs as MCP tools through the Pixiu MCP gateway, in static or Nacos dynamic mode, or configuring resources/templates/prompts, OAuth/JWT protection, or Streamable HTTP/SSE.
  • Do not use for:

    • LLM model proxying or implementing a new MCP-related filter.

Inputs

<HARD-GATE>
Do not generate YAML, write code, create files, or take any implementation action until the user has provided all required inputs. This is a first principle.

If any required input is missing, this turn must only ask for the missing fields in the current input group; do not generate examples, defaults, YAML, code, or final output.

Even if configuration information seems inferable, obvious, or implied by context, you must still ask the user to confirm it. Do not proceed until the user confirms it. </HARD-GATE>

  • Choose tool source (required):

    • Required:
      • tool_mode: static or registry
  • listener (required):

    • Defaults:
      • address.socket_address.address: 0.0.0.0
      • address.socket_address.port: 8888
  • route_config (required):

    • Defaults:
      • routes[].match.prefix: /mcp
      • routes[].route.cluster: mcp-route (route cluster name)
  • dgp.filter.mcp.mcpserver (required):

    • Defaults:
      • config.endpoint: /mcp
      • config.server_info.name: Pixiu MCP Server
      • config.server_info.version: 1.0.0
      • config.server_info.description: MCP Server powered by Apache Dubbo-go-pixiu
      • config.server_info.instructions: Use the provided tools to interact with backend services.
  • Static tools (required when tool_mode: static):

    • Required:
      • tools[].name
      • tools[].request.path
      • Endpoint under static_resources.clusters[] for each backend cluster referenced by a tool:
        • clusters[].endpoints[].socket_address.address
        • clusters[].endpoints[].socket_address.port
    • Optional:
      • tools[].description
      • tools[].args[]
    • Defaults (tools[].cluster and clusters[].name reference the same name; changing one requires changing the other):
      • tools[].cluster: mcp-backend
      • clusters[].name: mcp-backend
      • tools[].request.method: GET
      • tools[].request.timeout: 30s
      • tools[].args[].type: string
  • Registry tools (required when tool_mode: registry):

    • Required:
      • registries.nacos.address
    • Optional:
      • registries.nacos.group
      • registries.nacos.namespace
      • registries.nacos.username
      • registries.nacos.password
    • Defaults:
      • adapters[].id: mcp-nacos
      • adapters[].name: dgp.adapter.mcpserver
      • registries.nacos.protocol: nacos
      • registries.nacos.timeout: 5s
      • registries.nacos.group: DEFAULT_GROUP
  • resources[] (optional):

    • Required:
      • resources[].name
      • resources[].uri
      • resources[].source.type
    • Conditionally required by resources[].source.type:
      • resources[].source.content for inline
      • resources[].source.path for file
      • resources[].source.url for url
      • resources[].source.template for template
    • Optional:
      • resources[].description
      • resources[].mime_type
  • resource_templates[] (optional):

    • Required:
      • resource_templates[].name
      • resource_templates[].uri_template
    • Optional:
      • resource_templates[].title
      • resource_templates[].description
      • resource_templates[].mime_type
      • resource_templates[].parameters[]
      • resource_templates[].annotations
  • prompts[] (optional):

    • Required:
      • prompts[].name
      • prompts[].messages[].role
      • prompts[].messages[].content
    • Optional:
      • prompts[].title
      • prompts[].description
      • prompts[].arguments[]
  • dgp.filter.http.auth.mcp (optional):

    • Required:
      • resource_metadata.resource
      • resource_metadata.authorization_servers[]
      • providers[].name
      • providers[].issuer
      • providers[].jwks
    • Defaults:
      • resource_metadata.path: /.well-known/oauth-protected-resource
      • providers[].audience: defaults to resource_metadata.resource
      • rules[].cluster: defaults to route_config.routes[].route.cluster
Show full SKILL.md (331 more words)Show less

Workflow

  1. Check required Inputs first:
    1. Read existing config and already provided user information first; do not ask again for information already present or stated.
    2. Ask one Inputs group at a time. Each time, output only that group's required fields, with a short explanation after each field.
    3. If the current group's required fields are incomplete, ask only for the missing fields and do not move to the next group.
    4. After the current group's required fields are complete, ask whether to fill that group's optional fields; if yes, list those optional fields with short explanations.
    5. After optional fields are skipped or completed, apply that group's defaults and output default-value information; defaults must not override existing config or user input.
  2. When field shape or behavior is uncertain, read current source before generating YAML:
    • pkg/common/constant/key.go.
    • pkg/model/mcpserver.go.
    • pkg/filter/mcp/mcpserver/plugin.go, filter.go, handlers.go, and transport/.
    • Read pkg/filter/auth/mcp/config.go and filter.go when auth is required.
    • Read pkg/adapter/mcpserver/registrycenter.go and pkg/adapter/mcpserver/registry/nacos/ when Nacos is required.
  3. Choose static or registry path by tool_mode: static writes tools into the MCP filter; registry uses the MCP server adapter.
  4. Generate listener, route, and filters: route the MCP endpoint to the route cluster, and put the auth filter before the MCP server when needed.
  5. Generate tool backend: write static tool backend clusters under static_resources.clusters[]; map args with path, query, or body.

Output format

  • Show the relevant YAML fragments.

Validation

  • Verify dgp.filter.http.auth.mcp rules[].cluster matches the MCP route cluster, such as mcp-route, not a tool backend cluster.
  • Verify MCP filter-chain order: dgp.filter.http.auth.mcp -> dgp.filter.mcp.mcpserver -> dgp.filter.http.httpproxy; ignore missing filters within this order chain.
  • Verify every static tool cluster has a same-name cluster declaration under static_resources.clusters[].
  • Verify dgp.filter.mcp.mcpserver.config.endpoint exactly matches the path in the client call URL.
  • When resources[] is configured, verify the user has been told about the current resources/read runtime limitation: it returns placeholder content and does not read real data from source; do not claim clients can read actual content from source.content/path/url/template.

Examples

Static mode (conf.yaml):

yaml
static_resources:
  listeners:
    - name: net/http
      protocol_type: HTTP
      address:
        socket_address:
          address: 0.0.0.0
          port: 8888
      filter_chains:
        filters:
          - name: dgp.filter.httpconnectionmanager
            config:
              route_config:
                routes:
                  - match:
                      prefix: /mcp
                    route:
                      cluster: mcp-route
              http_filters:
                - name: dgp.filter.http.auth.mcp
                  config:
                    resource_metadata:
                      path: /.well-known/oauth-protected-resource
                      resource: http://localhost:8888/mcp
                      authorization_servers:
                        - http://localhost:9000
                    providers:
                      - name: local
                        issuer: http://localhost:9000
                        jwks: http://localhost:9000/.well-known/jwks.json
                        audience: http://localhost:8888/mcp
                    rules:
                      - cluster: mcp-route
                - name: dgp.filter.mcp.mcpserver
                  config:
                    endpoint: /mcp
                    server_info:
                      name: demo-mcp
                      version: "1.0.0"
                      description: Demo MCP server for user APIs
                      instructions: Use the exposed tools to query and create users.
                    tools:
                      - name: search_users
                        description: Search users by status
                        cluster: users
                        request:
                          method: GET
                          path: /users
                          timeout: 5s
                        args:
                          - name: status
                            type: string
                            in: query
                            description: User status filter
                            required: false
                            default: active
                            enum:
                              - active
                              - disabled
                    resources:
                      - name: service-status
                        uri: pixiu://service/status
                        description: Current service status
                        mime_type: application/json
                        source:
                          type: inline
                          content: '{"status":"ok"}'
                    resource_templates:
                      - name: user-profile
                        uri_template: pixiu://users/{id}
                        title: User profile
                        description: User profile by ID
                        mime_type: application/json
                        parameters:
                          - name: id
                            type: string
                            description: User ID
                            required: true
                        annotations:
                          audience:
                            - assistant
                          priority: 0.7
                    prompts:
                      - name: summarize_user
                        title: Summarize user
                        description: Summarize a user profile
                        arguments:
                          - name: id
                            description: User ID
                            required: true
                        messages:
                          - role: user
                            content: "Summarize user {{id}}."
                - name: dgp.filter.http.httpproxy
  clusters:
    - name: mcp-route
      endpoints:
        - socket_address:
            address: 127.0.0.1
            port: 8080
    - name: users
      endpoints:
        - socket_address:
            address: 127.0.0.1
            port: 8080

Registry mode example (conf.yaml):

yaml
static_resources:
  listeners:
    - name: net/http
      protocol_type: HTTP
      address:
        socket_address:
          address: 0.0.0.0
          port: 8888
      filter_chains:
        filters:
          - name: dgp.filter.httpconnectionmanager
            config:
              route_config:
                routes:
                  - match:
                      prefix: /mcp
                    route:
                      cluster: mcp-route
              http_filters:
                - name: dgp.filter.mcp.mcpserver
                  config:
                    endpoint: /mcp
                    server_info:
                      name: demo-mcp
                      version: "1.0.0"
                      description: Demo MCP server with Nacos-managed tools
                      instructions: Tool definitions are loaded from Nacos.
                - name: dgp.filter.http.httpproxy
  clusters:
    - name: mcp-route
      endpoints:
        - socket_address:
            address: 127.0.0.1
            port: 8080
  adapters:
    - id: mcp-nacos
      name: dgp.adapter.mcpserver
      config:
        registries:
          nacos:
            protocol: nacos
            address: "127.0.0.1:8848"
            timeout: "5s"
            group: DEFAULT_GROUP

© apache, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/pixiu-mcp-gateway of apache/dubbo-go-pixiu.

Open the folder on GitHubat commit ba01888

Compare with similar skills

Pixiu MCP Gateway next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pixiu MCP Gateway compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pixiu MCP Gateway this skillapache/dubbo-go-pixiu568—~3.1kAutomated safety check: PassApache-2.0
Retrieving Developer Knowledgegoogle/skills21k—~2kAutomated safety check: PassApache-2.0
Model Download Useropen-edge-platform/edge-ai-libraries169—~3.8kAutomated safety check: PassApache-2.0
PolyvisionLeoYeAI/openclaw-master-skills2.2k—~4.1kAutomated safety check: PassMIT
Notion MCPLeoYeAI/openclaw-master-skills2.2k—~4.7kAutomated safety check: PassMIT
OpenAPI to MCP Servermcp-use/mcp-use11k—~5.2kAutomated safety check: PassApache-2.0

Similar skills

  • Official

    Searches, retrieves, and synthesizes official Google developer documentation across Google Cloud, AI/Gemini, Android, Chrome, Web, Flutter, Go, Firebase, and other Google developer platforms.

    21k GitHub stars~2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Model Download User

    open-edge-platform/edge-ai-libraries

    Download and convert AI models using the Model Download microservice.

    169 GitHub stars~3.8k tokensUpdated today
    Backend & APIsAuto-check passed
  • Polyvision

    LeoYeAI/openclaw-master-skills

    Analyze Polymarket prediction market wallets — get copy trading scores (1-10), P&L, win rate, risk metrics (Sharpe ratio, Sortino ratio, max drawdown), red flags, position sizing, market category…

    2.2k GitHub stars~4.1k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed
  • Notion MCP

    LeoYeAI/openclaw-master-skills

    Notion MCP integration with managed authentication. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed
  • OpenAPI to MCP Server

    mcp-use/mcp-use

    Turns an OpenAPI or Swagger spec into an MCP server with the mcp-use TypeScript SDK, mapping each operation to a tool, wiring auth, testing and deploying.

    11k GitHub stars~5.2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Databuddy

    databuddy-analytics/Databuddy

    Integrate Databuddy analytics using the SDK, REST API, or MCP.

    1.2k GitHub stars~2.1k tokensUpdated today
    Backend & APIsAuto-check passed

More from apache/dubbo-go-pixiu

  • Pixiu HTTP To Dubbo

    apache/dubbo-go-pixiu

    Creates and debugs dubbo-go-pixiu HTTP-to-Dubbo route YAML. An agent skill from apache/dubbo-go-pixiu.

    568 GitHub stars~2.4k tokensUpdated 5 days ago
    Auto-check passed
  • Pixiu LLM Gateway

    apache/dubbo-go-pixiu

    Creates and validates dubbo-go-pixiu LLM gateway conf.yaml. An agent skill from apache/dubbo-go-pixiu.

    568 GitHub stars~2.5k tokensUpdated 5 days ago
    Auto-check passed
  • Pixiu Filter Author

    apache/dubbo-go-pixiu

    Creates and debugs dubbo-go-pixiu HTTP/Network filters. An agent skill from apache/dubbo-go-pixiu.

    568 GitHub stars~1.1k tokensUpdated 5 days ago
    Auto-check passed

Questions about Pixiu MCP Gateway

What does Pixiu MCP Gateway do?

Creates and validates dubbo-go-pixiu MCP gateway conf.yaml. An agent skill from apache/dubbo-go-pixiu. Pixiu MCP Gateway is an agent skill from apache/dubbo-go-pixiu.yaml.

When should I use Pixiu MCP Gateway?

Pixiu MCP Gateway fits situations like: MCP server filters; nacos MCP registry; exposing backend HTTP APIs as MCP tools; LLM model proxying.

How do I install Pixiu MCP Gateway in Claude Code?

Run `npx skills add apache/dubbo-go-pixiu --skill pixiu-mcp-gateway -a claude-code`. Or copy the skill folder (.agents/skills/pixiu-mcp-gateway in apache/dubbo-go-pixiu) into .claude/skills/pixiu-mcp-gateway in your project. Claude Code loads it when a task matches its description.

How do I install Pixiu MCP Gateway in Codex?

Run `npx skills add apache/dubbo-go-pixiu --skill pixiu-mcp-gateway -a codex`. Or copy the skill folder (.agents/skills/pixiu-mcp-gateway in apache/dubbo-go-pixiu) into .agents/skills/pixiu-mcp-gateway in your project. Codex loads it when a task matches its description.

Can I use Pixiu MCP Gateway in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add apache/dubbo-go-pixiu --skill pixiu-mcp-gateway -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pixiu-mcp-gateway, .gemini/skills/pixiu-mcp-gateway, .github/skills/pixiu-mcp-gateway and .opencode/skills/pixiu-mcp-gateway in your project.

What does Pixiu MCP Gateway need to run?

SKILL.md names no scripts, command-line tools or credentials: Pixiu MCP Gateway is instructions for the agent only.

Does Pixiu MCP Gateway access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Pixiu MCP Gateway safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pixiu MCP Gateway use?

Pixiu MCP Gateway is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pixiu MCP Gateway use?

About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Pixiu MCP Gateway?

Skills that share tags, products or a category with Pixiu MCP Gateway: Retrieving Developer Knowledge (google/skills, 21k stars), Model Download User (open-edge-platform/edge-ai-libraries, 169 stars), Polyvision (LeoYeAI/openclaw-master-skills, 2.2k stars) and Notion MCP (LeoYeAI/openclaw-master-skills, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pixiu MCP Gateway?

apache (a GitHub organization) maintains it in apache/dubbo-go-pixiu, which has 568 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 3, 2026.

Source: apache/dubbo-go-pixiu on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.