by Kong
🌋 Build AI agents that seamlessly combine LLM reasoning with real-world actions via MCP tools — in just a few lines of TypeScript.
# Add to your Claude Code skills
git clone https://github.com/Kong/volcano-sdkThe TypeScript SDK for Multi-Provider AI Agents
Build agents that chain LLM reasoning with MCP tools. Mix OpenAI, Claude, Mistral in one workflow. Parallel execution, branching, loops. Native retries, streaming, and typed errors.
📚 Read the full documentation at volcano.dev →
LLM automatically picks which MCP tools to call based on your prompt. No manual routing needed.
</td> <td width="33%">Define specialized agents and let the coordinator autonomously delegate tasks. Like automatic tool selection, but for agents.
</td> <td width="33%">Ask questions about what your agent did. Use .summary() or .ask() instead of parsing JSON.
OpenAI, Anthropic, Mistral, Bedrock, Vertex, Azure. Switch providers per-step or globally.
</td> <td width="33%">Parallel execution, branching, loops, sub-agent composition. Enterprise-grade workflow control.
</td> <td width="33%">Stream tokens in real-time as LLMs generate them. Perfect for chat UIs and SSE endpoints.
</td> </tr> <tr> <td width="33%"> </td> <td width="33%"> </td> <td width="33%"> </td> </tr> </table>Full type safety with IntelliSense. Catch errors before runtime.
OpenTelemetry traces and metrics. Export to Jaeger, Prometheus, DataDog, or any OTLP backend.
Built-in retries, timeouts, error handling, and connection pooling. Battle-tested at scale.
npm install volcano-sdk
That's it! Includes MCP support and all common LLM providers (OpenAI, Anthropic, Mistral, Llama, Vertex).
import { agent, llmOpenAI, mcp } from "volcano-sdk";
const llm = llmOpenAI({
apiKey: process.env.OPENAI_API_KEY!,
model: "gpt-4o-mini"
});
const weather = mcp("http://localhost:8001/mcp");
const tasks = mcp("http://localhost:8002/mcp");
// Agent automatically picks the right tools
const results = await agent({ llm })
.then({
prompt: "What's the weather in Seattle? If it will rain, create a task to bring an umbrella",
mcps: [weather, tasks] // LLM chooses which tools to call
})
.run();
// Ask questions about what happened
const summary = await results.summary(llm);
console.log(summary)...