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 build
Executables
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-bridge
Or use the compiled file directly:
node dist/bridge/http.js --host 127.0.0.1 --port 8787
Bridge 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-mcp
Split 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 prefix
Optional 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.json
Generated 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.js
Environment variables:
| Variable | Required | Description |
|---|---|---|
MY_MCP_TOKEN or OPENCLAW_TOKEN |
Yes | Bearer token for the upstream remote MCP |
MY_MCP_UPSTREAM_URL or OPENCLAW_MCP_URL |
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.json