关于 Wiro AI
Wiro AI 的 MCP 服务供 AI 助手用户查找并运行图像、视频、音频和 LLM 模型。它通过本地 stdio 服务或托管端点提供 13 个工具,包括任务跟踪和文档搜索。
主要功能
- 01搜索并推荐模型
- 02查看模型参数和价格
- 03运行并跟踪生成任务
- 04上传模型输入文件
- 05浏览任务历史并搜索文档
适用场景
- 01为媒体生成任务查找模型
- 02运行前核对模型参数和费用
- 03继续长时间生成任务或查看任务历史
MCP 相关
向 MCP 客户端提供 13 个模型发现、运行、文件上传、任务管理和文档搜索工具。客户端可连接本地 stdio 服务,也可连接 Wiro AI 托管的 streamable HTTP 端点。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.wiro.ai/v1claude mcp add --transport http ai-wiro https://mcp.wiro.ai/v1{"mcpServers":{"ai-wiro":{"type":"http","url":"https://mcp.wiro.ai/v1"}}}在 Cursor 中打开{"servers":{"ai-wiro":{"type":"http","url":"https://mcp.wiro.ai/v1"}}}在 VS Code 中打开{"mcpServers":{"ai-wiro":{"type":"http","url":"https://mcp.wiro.ai/v1"}}}{"mcpServers":{"ai-wiro":{"serverUrl":"https://mcp.wiro.ai/v1"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://mcp.wiro.ai/v1需要授权工具
README 原文English
来自项目 READMEREADME 暂无中文译文,以下为英文原文;中文介绍见上方。
Wiro MCP Server
Official MCP server for Wiro AI: search, price and run image, video, audio and LLM models from Cursor, Claude Code, Claude Desktop, Windsurf and any other MCP client.
Website · Models · Docs · Dashboard
@wiro-ai/wiro-mcp is a TypeScript Model Context Protocol server that runs locally over stdio with npx. Its 13 tools let an AI assistant search the Wiro AI model catalog, read a model's parameters and price, run it and wait for the result, upload input files, browse past tasks and search the Wiro AI docs. The hosted server at https://mcp.wiro.ai/v1 serves the same tools with nothing to install.
Quick Start
Local npx and library usage require Node.js 20 or later. The hosted MCP
endpoint does not require a local Node.js installation.
1. Get API Keys
Sign up at wiro.ai and create a project at wiro.ai/panel/project/new to get your API key and secret.
2. Add to Your AI Assistant
Cursor: open MCP settings (Cmd+Shift+P → "Open MCP settings") and add:
{
"mcpServers": {
"wiro": {
"command": "npx",
"args": ["-y", "@wiro-ai/wiro-mcp"],
"env": {
"WIRO_API_KEY": "your-api-key",
"WIRO_API_SECRET": "your-api-secret"
}
}
}
}
Claude Code:
claude mcp add wiro -- npx -y @wiro-ai/wiro-mcp
Then set environment variables WIRO_API_KEY and WIRO_API_SECRET.
Claude Desktop: add to claude_desktop_config.json:
{
"mcpServers": {
"wiro": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@wiro-ai/wiro-mcp"],
"env": {
"WIRO_API_KEY": "your-api-key",
"WIRO_API_SECRET": "your-api-secret"
}
}
}
}
Windsurf: add to MCP settings:
{
"mcpServers": {
"wiro": {
"command": "npx",
"args": ["-y", "@wiro-ai/wiro-mcp"],
"env": {
"WIRO_API_KEY": "your-api-key",
"WIRO_API_SECRET": "your-api-secret"
}
}
}
}
OpenClaw: configure a remote server under mcp.servers:
{
"mcp": {
"servers": {
"wiro": {
"url": "https://mcp.wiro.ai/v1",
"transport": "streamable-http",
"connectionTimeoutMs": 10000,
"headers": {
"Authorization": "Bearer ${WIRO_MCP_AUTH}"
}
}
}
}
}
Set WIRO_MCP_AUTH in OpenClaw's environment to your API key, or to
API_KEY:API_SECRET for a project with signature-based auth. Then verify with
openclaw mcp doctor wiro --probe. On older OpenClaw releases without that
probe command, use openclaw mcp show wiro, restart OpenClaw, and run
/tools verbose.
Hermes: add to ~/.hermes/config.yaml:
mcp_servers:
wiro:
url: "https://mcp.wiro.ai/v1"
headers:
Authorization: "Bearer ${WIRO_MCP_AUTH}"
timeout: 60
connect_timeout: 10
Store WIRO_MCP_AUTH (your API key, or API_KEY:API_SECRET) in ~/.hermes/.env, then run /reload-mcp and /tools.
3. Start Using
Ask your AI assistant:
- "Generate a photorealistic image of a mountain lake at sunset"
- "What video generation models are available on Wiro?"
- "Show me the parameters for google/veo3-1"
- "Create a 5-second video with Kling V3: a drone shot over mountains"
- "Check the status of my last task"
- "Show my latest productions and open the newest result"
Authentication
Wiro AI supports two authentication types, chosen when you create a project:
Signature-Based (Recommended)
More secure. Requires both API key and API secret.
WIRO_API_KEY=your-api-key
WIRO_API_SECRET=your-api-secret
API Key Only
Simpler. Only requires the API key. Omit WIRO_API_SECRET from your config.
WIRO_API_KEY=your-api-key
The hosted server takes the same credentials as a bearer token:
Authorization: Bearer API_KEY:API_SECRET for a signature-based project, or
Authorization: Bearer API_KEY for an API Key Only project.
Available Tools
| Tool | Description |
|---|---|
search_models | Search and browse AI models by keyword, category, or owner |
get_model_schema | Get full parameter schema and pricing for any model |
recommend_model | Describe what you want to build, get model recommendations by relevance |
explore | Browse curated models grouped by category, no parameters needed |
run_model | Run any model, waiting up to 45s by default before it returns a recoverable task token |
wait_for_task | Continue waiting for an existing task without submitting or billing a duplicate run |
get_task | Check task status immediately or wait up to 45s with wait_seconds |
list_tasks | Browse authenticated task history across conversations, then continue with get_task |
get_task_price | Get the cost of a completed task |
cancel_task | Cancel a queued task |
kill_task | Kill a running task |
upload_file | Upload a file from a public http(s) URL (up to 200 MB) for use as model input |
search_docs | Search the Wiro documentation for guides and API references |
For long generations, run_model returns the existing task ID and token when its
wait budget expires. The assistant must continue with wait_for_task; retrying
run_model creates a separate billable task.
LLM-friendly responses
All tools publish typed MCP input and output schemas. Successful calls return
structuredContent for reliable chaining, concise text content for clients
that only render text, and MCP resource links for generated media.
Model parameters remain catalog-driven: json and json-array fields are sent
as structured values in the same run_model.params object as all other inputs.
Use get_model_schema as the source of truth for continuation fields.
previousTaskToken is the single continuation reference. Send it with exactly
one new prompt or non-empty messages value for a stateful next turn, or with
toolOutputs for a tool-result continuation.
LLM task outputs preserve the public Task Detail segment names and casing:
thinking, answer, function_call, and custom_tool_call, including
call_id, finishreason, and optional normalized token usage.
Only validated fields are projected into structured MCP output. When segments
are present, response is derived from ordered answer segments instead of
raw debug transport; tasks without a typed projection retain their normal
debugoutput response.
Completed tool calls return a continuation template in the existing
nextAction. Execute each call, replace the output placeholders, and pass the
same ordinary run_model.params object back:
{
"tool": "run_model",
"arguments": {
"model": "owner/model",
"params": {
"previousTaskToken": "task-token",
"toolOutputs": [
{
"call_id": "call_01",
"output": "<tool result>"
}
]
}
}
}
Function calls carry JSON-string arguments; custom tool calls carry free-form
input. Tool results are request values in toolOutputs, not response
segments.
Completed media responses also include an assistant-audience delivery
instruction. Some MCP clients expose a resource_link as tool metadata instead
of previewing it inside the tool card, so the assistant is explicitly told to
render images and preserve clickable media links in its user-facing response.
The standard resource link and full-resolution URL remain available to every
client; no base64 media payload is required.
Task responses use the stable states submitted, running, completed,
failed, and cancelled. When more work is required, the response includes an
executable nextAction:
{
"state": "running",
"task": {
"id": "123",
"token": "task-token",
"status": "task_start"
},
"outputs": [],
"nextAction": {
"tool": "wait_for_task",
"arguments": { "tasktoken": "task-token" },
"reason": "Continue this exact task. Do not call run_model again."
}
}
Generation chain:
search_models → get_model_schema → run_model → wait_for_task
Cross-conversation history:
list_tasks → get_task
Hosted MCP Server
Wiro AI also hosts the same tools at https://mcp.wiro.ai/v1 over streamable HTTP, so nothing has to be installed locally. Send your credentials in the Authorization header as shown under Authentication. The MCP Server documentation has setup instructions for each client.
Install as a plugin
wiroai/Wiro-Plugin packages the hosted server as a plugin for Cursor, Claude Code, Gemini CLI and Devin. Its README has the install command for each of them.
Documentation
- MCP Server (Hosted): setup guides for Cursor, Claude Code, Claude Desktop, Windsurf, Gemini CLI, Devin, OpenClaw, and Hermes
- Self-Hosted MCP: run locally with npx, environment variables, library usage
- Node.js Library: use
WiroClientfrom this package in your own Node.js or TypeScript code - Authentication: signature-based vs API Key Only
- Run a Model: how the Run endpoint works
- Tasks: task lifecycle, statuses, determining success
- Concurrency Limits: concurrent task limits based on balance
- Error Reference: error codes and handling
Using as a Library
This package exports its core components for use in custom MCP servers:
import { WiroClient } from '@wiro-ai/wiro-mcp/client';
import { createMcpServer } from '@wiro-ai/wiro-mcp/server';
const client = new WiroClient('your-api-key', 'your-api-secret');
const server = createMcpServer(client);
If a project uses signature-based auth and no API secret was given, tool errors say that the secret is missing. When your server takes credentials in its own way, tell users where the secret goes:
const client = new WiroClient(apiKey, apiSecret, undefined, {
missingSecretHint: 'This project uses signature-based auth. Enter API_KEY:API_SECRET as the API key.',
});
Exports
| Export | Description |
|---|---|
createMcpServer(client) | Creates an McpServer with all 13 tools registered |
WiroClient | API client with both auth types |
registerTools(server, client) | Register tools on an existing McpServer |
// Import specific components
import { WiroClient } from '@wiro-ai/wiro-mcp/client';
import { registerTools } from '@wiro-ai/wiro-mcp/tools';
Environment Variables
| Variable | Required | Description |
|---|---|---|
WIRO_API_KEY | Yes | Your Wiro project API key |
WIRO_API_SECRET | No | Your Wiro project API secret (for signature auth) |
WIRO_API_BASE_URL | No | Override API base URL (default: https://api.wiro.ai/v1) |
More from Wiro AI
| Repository | What it is |
|---|---|
| Wiro-Plugin | Wiro AI plugin for Cursor, Claude Code, Gemini CLI and Devin |
| Swift-QuickStart | WiroKit, the Wiro AI SDK for iOS |
| Kotlin-QuickStart | WiroKit, the Wiro AI SDK for Android |
| Dart-QuickStart | Wiro AI SDK for Dart and Flutter, wiro on pub.dev |
| ReactNative-QuickStart | Wiro AI SDK for React Native and Expo, @wiro-ai/wiro-react-native on npm |
| Swift-Realtime | Realtime voice AI example for iOS |
| Kotlin-Realtime | Realtime voice AI example for Android |
| Dart-Realtime | Realtime voice AI example for Flutter |
| ReactNative-Realtime | Realtime voice AI example for React Native |
| n8n-nodes-wiroai | Wiro AI nodes for n8n, @wiro-ai/n8n-nodes-wiroai on npm |
| Wiro-Docs | Source of the Wiro AI API docs |
License
MIT, see LICENSE.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。