Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Xiaobai Print MCPgenerate an OpenClaw skill wrapper from the local bridge"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
xiaobai-print
This repository now centers on the wrapper-skill flow:
Run a local HTTP bridge
Read the bridge tool list
Generate one or more OpenClaw skill directories
Let each skill call the bridge through a local
invoke.js
The repository still includes the stdio MCP server for Claude Desktop / Cursor, but the recommended OpenClaw path is:
OpenClaw skill -> scripts/invoke.js -> local HTTP bridge -> remote MCP
Build
npm install
npm run buildExecutables
xiaobai-print-mcp: stdio MCP serverxiaobai-print-bridge: local HTTP bridge for generated skillsgenerate-openclaw-skill: skill generator that reads the bridge tool list
Run The Local Bridge
Start the local HTTP bridge on 127.0.0.1:8787:
MY_MCP_UPSTREAM_URL="https://mcp.gongfudou.com/mcp/openclaw/sse" \
MY_MCP_TOKEN="your-token" \
xiaobai-print-bridgeOr use the compiled file directly:
node dist/bridge/http.js --host 127.0.0.1 --port 8787Bridge endpoints:
GET /healthGET /mcp/toolsPOST /mcp/tools/{toolName}
The bridge accepts Authorization: Bearer <token> per request. If the request omits Authorization, it falls back to MY_MCP_TOKEN / OPENCLAW_TOKEN.
Generate OpenClaw Skills
Generate a single skill from the local bridge:
generate-openclaw-skill \
--bridge-url http://127.0.0.1:8787 \
--out ./skill \
--skill-name my-mcpSplit tools into multiple skill directories by tool-name prefix:
generate-openclaw-skill \
--bridge-url http://127.0.0.1:8787 \
--out ./skills \
--skill-name my-mcp \
--split-by prefixOptional discovery auth:
generate-openclaw-skill \
--bridge-url http://127.0.0.1:8787 \
--out ./skill \
--token "$MY_MCP_TOKEN"Generated output for a single skill:
skill/
SKILL.md
scripts/
invoke.js
schema/
tools.jsonGenerated output for --split-by prefix:
skills/
schema/
tools.json
my-mcp-search/
SKILL.md
scripts/
invoke.js
schema/
tools.json
my-mcp-ticket/
...The generated wrapper uses:
MY_MCP_TOKENfor the bearer tokenMY_MCP_BASE_URLfor the local bridge URL
If MY_MCP_BASE_URL is not set, the wrapper falls back to the bridge URL used during generation.
OpenClaw Configuration
Recommended skill configuration:
{
"skills": {
"entries": {
"my-mcp": {
"enabled": true,
"apiKey": "your-token-here",
"env": {
"MY_MCP_BASE_URL": "http://127.0.0.1:8787"
}
}
}
}
}The generated SKILL.md declares:
metadata.openclaw.requires.env = ["MY_MCP_TOKEN"]metadata.openclaw.primaryEnv = "MY_MCP_TOKEN"
That lets OpenClaw inject skills.entries.<skill>.apiKey as MY_MCP_TOKEN.
MCP Server Mode
The original stdio MCP server is still available:
node dist/index.jsEnvironment variables:
Variable | Required | Description |
| Yes | Bearer token for the upstream remote MCP |
| No | Upstream remote MCP endpoint URL |
Examples
A checked-in generated example lives in examples/search-docs-skill/.
The bundled print skill now also follows the wrapper-based layout:
skills/xiaobai-print/
SKILL.md
scripts/
invoke.js
schema/
tools.jsonThis server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.