Alibaba Cloud Token Plan Proxy for Claude Code
Enables Claude Code to use Alibaba Cloud Token Plan models via a local proxy that maps Anthropic-style model names to Alibaba IDs and provides missing endpoints like model discovery.
README
Claude Code ↔ Alibaba Cloud Token Plan proxy
Proxy local y liviano que completa la interfaz Anthropic de Alibaba Cloud para Claude Code:
Versión actual: 0.1.0. Consulta los cambios en
CHANGELOG.md.
- sirve
GET /v1/models, que el endpoint Anthropic-compatible de Alibaba no implementa; - traduce alias descubribles por Claude Code a los IDs reales de Alibaba;
- reenvía
POST /v1/messagesy su streaming SSE sin almacenarlo ni reconstruirlo; - conserva headers
anthropic-*, campos beta, tool calls, thinking y errores del upstream; - no tiene dependencias de runtime: usa únicamente Node.js.
Claude Code ── Anthropic Messages ──> proxy local ──> Alibaba Token Plan
/v1/models (local) alias → ID /v1/messages
Endpoint Anthropic
La base URL Anthropic que debes configurar en Claude Code es:
http://127.0.0.1:8787
El proxy expone:
- Messages:
POST http://127.0.0.1:8787/v1/messages - Model discovery:
GET http://127.0.0.1:8787/v1/models - Token counting opcional:
POST http://127.0.0.1:8787/v1/messages/count_tokens
No agregues /v1 a ANTHROPIC_BASE_URL: Claude Code lo añade al construir
cada request.
Modelos
Claude Code solo acepta por descubrimiento IDs que comiencen con claude o
anthropic. Por eso el proxy publica alias y los mapea así:
| Selector de Claude Code | ID enviado a Alibaba |
|---|---|
claude-qwen3.8-max-preview |
qwen3.8-max-preview |
claude-glm-5.2 |
glm-5.2 |
claude-qwen3.7-max |
qwen3.7-max |
claude-deepseek-v4-pro |
deepseek-v4-pro |
claude-qwen3.7-plus |
qwen3.7-plus |
claude-qwen3.6-flash |
qwen3.6-flash |
Los seis IDs reales también se aceptan en llamadas directas, aunque Claude Code no los agrega al selector porque no pasan su filtro de nombres.
[!IMPORTANT] La lista oficial del Token Plan consultada el 23 de julio de 2026 no incluye
qwen3.8-max-preview; sí incluye los otros cinco IDs de la tabla. El proxy lo expone porque es un requisito de este proyecto y no lo sustituye silenciosamente. Si tu cuenta todavía no lo tiene habilitado, Alibaba devolverá su error original.
Fuentes de protocolo: contrato de gateways de Claude Code, Messages compatible de Alibaba y allowlist del Token Plan.
Requisitos
- Node.js 22.13 o posterior. Las dependencias multimedia se instalan automáticamente en el primer inicio de la interfaz.
- Claude Code 2.1.129 o posterior para model discovery.
- Una API key dedicada del Alibaba Cloud Token Plan.
Interfaz gráfica para Windows
Haz doble clic en el lanzador silencioso:
ClaudeAlibabaProxy.vbs
No abre ni mantiene una consola de CMD o PowerShell. El archivo
ClaudeAlibabaProxy.bat queda disponible como alternativa compatible y
también delega al lanzador silencioso antes de cerrarse.
El lanzador abre una interfaz nativa de Windows desde la que puedes:
- ingresar la API key y el endpoint de Alibaba;
- elegir host, puerto y modelo predeterminado;
- generar el token local del proxy;
- iniciar y detener el servidor sin una consola abierta;
- abrir una guía paso a paso en pestañas separadas para español e inglés;
- cambiar toda la interfaz entre español e inglés desde el selector discreto Idioma / Language;
- instalar
%USERPROFILE%\.claude\settings.json, conservando sus opciones y creando un backup del archivo anterior; - instalar
.claude\settings.local.jsonpara activar Alibaba solo en este repositorio y conservar tu subscripción de Claude Code en el resto; - guardar opcionalmente la configuración en
.env; - generar y editar imágenes con Wan 2.7;
- estimar y enviar tareas HappyHorse;
- consultar, esperar y descargar tareas de video;
- registrar el servidor MCP multimedia en Claude Code;
- abrir, copiar y restaurar respaldos de
settings.json; - minimizarse al área de notificación de Windows sin detener el proxy;
- mantener el proxy activo al pulsar la X o
Alt+F4: un doble clic en el icono restaura la ventana, y Salir queda bloqueado hasta pulsar Detener.
El lanzador busca Node 22.13+ en el PATH, en las ubicaciones habituales de
Windows y en el runtime local incluido con Codex. El build JavaScript
precompilado está en dist/, por lo que no necesita ejecutar pnpm al abrir
la interfaz. Si faltan las dependencias de media-mcp, el primer inicio las
instala con pnpm, corepack o npm, según lo disponible.
La API key solo se persiste si pulsas Guardar .env y confirmas la advertencia. El archivo queda excluido de Git, pero contiene las credenciales en texto plano.
Al pulsar Instalar settings.json, la interfaz muestra y confirma la ruta,
crea la carpeta .claude si hace falta y escribe directamente un único objeto
JSON válido. Si el archivo ya existe, conserva permisos, hooks y demás opciones
y crea un backup fechado antes de reemplazarlo. El JSON final también queda en
el portapapeles.
Si el JSON existente es inválido, el launcher lo rechaza y no lo reemplaza. Las acciones Copiar JSON e Instalar settings.json son independientes: la primera usa el portapapeles y la segunda escribe, relee y verifica el archivo real.
Credenciales en paralelo
Claude Code no mezcla la subscripción de Claude.ai y un gateway custom en la
misma sesión. Cuando ANTHROPIC_BASE_URL apunta al proxy local, esa sesión usa
Alibaba Token Plan.
El modo recomendado es instalar Alibaba con alcance local del repositorio:
.claude\settings.local.json. Así tu login/subscripción de Claude Code queda
en %USERPROFILE%\.claude y sigue funcionando en los demás repositorios. Usa el
alcance Global solo si quieres que Alibaba reemplace el backend en todas tus
sesiones.
Imagen y video mediante MCP
Wan y HappyHorse no aparecen en /model. Claude Code los descubre como
herramientas del servidor local alibaba-media:
Claude Code
+-- /v1/messages -> proxy de texto
+-- MCP alibaba-media
+-- wan_generate_image
+-- wan_edit_image
+-- wan_estimate_cost
+-- diez herramientas happyhorse_*
Wan utiliza la misma key sk-sp- de Token Plan y el endpoint multimedia
dedicado:
https://token-plan.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
HappyHorse utiliza una key Model Studio de Singapur y el endpoint público
compartido https://dashscope-intl.aliyuncs.com; no requiere Workspace ID.
Configura permisos Custom solo para happyhorse-1.1-t2v,
happyhorse-1.1-i2v, happyhorse-1.1-r2v y
happyhorse-1.0-video-edit. OSS es opcional y la GUI solo lo muestra para
editar un video local. HappyHorse puede facturarse fuera del Token Plan.
El código multimedia vive en media-mcp. El launcher lo registra
con alcance user, por lo que queda disponible en todos tus proyectos de
Claude Code después de reiniciarlo.
Referencias: integración multimedia de Token Plan, API Wan 2.7, modelos HappyHorse y MCP en Claude Code.
El artefacto recomendado en Windows es ClaudeAlibabaProxy.vbs, que inicia la
GUI sin una consola visible. ClaudeAlibabaProxy.bat se conserva como entrada
compatible. No se incluye un .exe sin firma porque sería únicamente otro
envoltorio del mismo PowerShell, añadiría advertencias de SmartScreen y no
eliminaría el requisito de Node.js. Un .exe firmado puede añadirse más
adelante si existe un certificado de firma de código y una necesidad real de
distribución administrada.
Inicio rápido en Windows
Si prefieres usar la terminal:
Instala dependencias y compila:
corepack enable
pnpm install
pnpm build
Inicia el proxy. La key queda únicamente en el proceso local y nunca se envía a Claude Code:
$env:ALIBABA_API_KEY = "sk-sp-tu-key"
$env:PROXY_AUTH_TOKEN = "elige-un-secreto-local"
pnpm start
El servicio escucha por defecto en http://127.0.0.1:8787.
También puedes copiar y editar examples/start.ps1. El
archivo .env se usa automáticamente con Docker Compose; Node no lo carga por
sí solo.
Configurar Claude Code
Para usar Alibaba solo en este repositorio, guarda este bloque en
.claude\settings.local.json dentro del repo. Para usar Alibaba globalmente,
combínalo con %USERPROFILE%\.claude\settings.json existente (debe quedar un
solo objeto JSON):
{
"model": "claude-qwen3.8-max-preview",
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:8787",
"ANTHROPIC_AUTH_TOKEN": "elige-un-secreto-local",
"CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1",
"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1",
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"
}
}
El valor de ANTHROPIC_AUTH_TOKEN debe coincidir con
PROXY_AUTH_TOKEN. Hay una copia lista para editar en
examples/claude-settings.json.
Para volver a tu subscripción, abre Claude Code fuera de un repositorio que tenga
.claude\settings.local.json de Alibaba o elimina esas variables del alcance
activo.
Reinicia Claude Code y ejecuta:
/model
Los seis modelos aparecerán con la etiqueta From gateway. Para comprobar el arranque con detalle:
claude --debug
Busca líneas [gatewayDiscovery]. No configures
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1: esa variable también desactiva
model discovery.
Probar sin Claude Code
Descubrimiento:
curl.exe http://127.0.0.1:8787/v1/models `
-H "Authorization: Bearer elige-un-secreto-local"
Messages con streaming:
curl.exe --no-buffer http://127.0.0.1:8787/v1/messages `
-H "Authorization: Bearer elige-un-secreto-local" `
-H "Content-Type: application/json" `
-H "anthropic-version: 2023-06-01" `
-d '{\"model\":\"claude-qwen3.7-plus\",\"max_tokens\":256,\"stream\":true,\"messages\":[{\"role\":\"user\",\"content\":\"Hola\"}]}'
Variables de entorno
| Variable | Obligatoria | Default | Uso |
|---|---|---|---|
ALIBABA_API_KEY |
sí | — | Key dedicada del Token Plan |
ALIBABA_BASE_URL |
no | endpoint Token Plan de Singapur | Base Anthropic-compatible, sin /v1 final |
HOST |
no | 127.0.0.1 |
Interfaz de escucha |
PORT |
no | 8787 |
Puerto local |
PROXY_AUTH_TOKEN |
no | sin auth local | Credencial que presenta Claude Code |
MAX_BODY_BYTES |
no | 33554432 |
Límite del JSON de entrada |
MODEL_MAP |
no | tabla anterior | Overrides JSON alias → ID upstream |
DASHSCOPE_API_KEY |
solo HappyHorse | — | Key Model Studio de Singapur |
ALIBABA_WORKSPACE_ID |
no | vacío | Si se define manualmente, usa el endpoint dedicado en vez del público |
OSS_ENDPOINT y OSS_BUCKET |
solo edición de video local | — | Almacenamiento temporal de la entrada |
OSS_ACCESS_KEY_ID y OSS_ACCESS_KEY_SECRET |
solo edición de video local | — | Credenciales OSS limitadas |
Ejemplo de override deliberado:
$env:MODEL_MAP = '{"claude-qwen3.8-max-preview":"otro-id-habilitado"}'
Solo se aceptan como keys los seis alias documentados, para detectar typos al arrancar.
Endpoints
| Método | Ruta | Comportamiento |
|---|---|---|
HEAD |
/ |
Probe de conectividad de Claude Code |
GET |
/health |
Health check público |
GET |
/v1/models |
Catálogo local para Claude Code |
GET |
/v1/models/:id |
Metadata de un alias |
POST |
/v1/messages |
Proxy con traducción de modelo |
POST |
/v1/messages/count_tokens |
Pass-through opcional; Alibaba puede responder 404 |
El proxy reenvía los errores HTTP y el body de Alibaba sin envolverlos, para no romper los retries automáticos de Claude Code. En streaming, cada chunk se escribe al cliente en cuanto llega y respeta backpressure.
Docker
Copy-Item .env.example .env
# Edita .env y reemplaza las dos credenciales.
docker compose up --build
Compose publica el puerto solo en 127.0.0.1. Si lo expones en otra interfaz,
mantén PROXY_AUTH_TOKEN configurado y agrega TLS mediante un reverse proxy.
Desarrollo
pnpm typecheck
pnpm test
pnpm test:launcher
pnpm build
Los tests cubren discovery y auth, traducción de modelos y headers, streaming, rechazo de IDs desconocidos, contratos MCP, persistencia HappyHorse, idempotencia, validación de archivos, estimación y generación Wan simulada.
La separación es intencional:
src/models.ts: catálogo y resolución de alias;src/proxy.ts: Anthropic Messages hacia Alibaba;src/http.ts: transporte, errores y streaming;src/app.ts: rutas y extensión medianteProxyRoute.
Wan 2.7 y HappyHorse no se mezclan con /v1/messages: el subpaquete
media-mcp conserva sus contratos y procesos separados. La GUI es la capa que
los presenta como una sola aplicación.
Límites y seguridad
- El proxy de texto no guarda prompts. El MCP guarda metadatos de tareas, no el prompt completo por defecto.
- La key de Alibaba siempre reemplaza cualquier credential recibida del cliente.
PROXY_AUTH_TOKENes opcional para localhost, pero recomendado.- El Token Plan autoriza uso interactivo con herramientas de programación y agentes; no despliegues este proyecto como backend general ni compartas la key asignada a tu asiento.
MIT.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。