ruvnet/ruflo · error
[mcp] zero tools available after listing; skipping MCP flow
Error message
[mcp] zero tools available after listing; skipping MCP flow
What it means
Log warning in runMcpFlow: tool listing across the selected MCP servers returned zero usable tools, so there is nothing to advertise to the model and the MCP flow is skipped (not_applicable).
Source
Thrown at ruflo/src/ruvocal/src/lib/server/textGeneration/mcp/runMcpFlow.ts:306
logger.info(
{ model: targetModel.id ?? targetModel.name, resolvedRoute },
"[mcp] runMcp=false (routing chose non-tools candidate)"
);
return "not_applicable";
}
try {
const { tools: oaTools, mapping } = await getOpenAiToolsForMcp(servers, {
signal: abortSignal,
});
try {
logger.info(
{ toolCount: oaTools.length, toolNames: oaTools.map((t) => t.function.name) },
"[mcp] openai tool defs built"
);
} catch {}
if (oaTools.length === 0) {
logger.warn({}, "[mcp] zero tools available after listing; skipping MCP flow");
return "not_applicable";
}
const { OpenAI } = await import("openai");
// Capture provider header (x-inference-provider) from the upstream OpenAI-compatible server.
let providerHeader: string | undefined;
const captureProviderFetch = async (
input: RequestInfo | URL,
init?: RequestInit
): Promise<Response> => {
const res = await fetch(input, init);
const p = res.headers.get("x-inference-provider");
if (p && !providerHeader) providerHeader = p;
return res;
};
const openai = new OpenAI({View on GitHub (pinned to fa13ee4ad6)
Solutions
- Check that the MCP servers expose tools and the list operation succeeds; the MCP flow is skipped when no tools are available.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at ruflo/src/ruvocal/src/lib/server/textGeneration/mcp/runMcpFlow.ts:306 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/b20d3407ad28b622.
Report an issue: GitHub.