@ax-llm/ax-tools
v21.0.0
Published
Ax tools package
Readme
@ax-llm/ax-tools
Node.js-specific tools for the Ax LLM framework.
Overview
This package provides Node.js-specific functionality that cannot be included in
the main @ax-llm/ax package due to browser compatibility requirements. The
main package is designed to work in both Node.js and browser environments, while
this package provides Node.js-only features.
Features
MCP Tools
AxMCPStdioTransport
A transport for the Model Context Protocol (MCP) that communicates with MCP servers via stdin/stdout. This enables running local MCP servers as child processes.
Function Tools
AxJSRuntime has moved to @ax-llm/ax.
Installation
npm install @ax-llm/ax-toolsUsage
Basic MCP Stdio Transport
import { AxMCPClient } from "@ax-llm/ax";
import { AxMCPStdioTransport } from "@ax-llm/ax-tools";
// Create a stdio transport for an MCP server
const transport = new AxMCPStdioTransport({
command: "npx",
args: ["-y", "@modelcontextprotocol/server-memory"],
env: process.env,
});
// Create MCP client
const client = new AxMCPClient(transport, { debug: true });
await client.init();
// Use the client as a function provider
const functions = client.toFunction();
console.log(`Available functions: ${functions.map((f) => f.name).join(", ")}`);With Factory Function
import { axCreateMCPStdioTransport } from "@ax-llm/ax-tools";
const transport = axCreateMCPStdioTransport({
command: "uvx",
args: ["blender-mcp"],
});JavaScript Code Execution
Use AxJSRuntime from @ax-llm/ax:
import { AxJSRuntime, AxJSRuntimePermission } from "@ax-llm/ax";Configuration Options
MCP Transport
interface StdioTransportConfig {
command: string; // The command to execute
args?: string[]; // Optional arguments
env?: NodeJS.ProcessEnv; // Optional environment variables
}JS Interpreter Permissions
See @ax-llm/ax docs for AxJSRuntimePermission.
Examples
Memory Server
import { AxAgent, AxAI, AxMCPClient } from "@ax-llm/ax";
import { AxMCPStdioTransport } from "@ax-llm/ax-tools";
// Initialize MCP client with memory server
const transport = new AxMCPStdioTransport({
command: "npx",
args: ["-y", "@modelcontextprotocol/server-memory"],
});
const client = new AxMCPClient(transport, { debug: false });
await client.init();
// Create agent with memory capabilities
const agent = new AxAgent({
name: "MemoryAgent",
description: "An agent that can remember information",
signature: "userMessage -> response",
functions: [client],
});
// Use with AI
const ai = new AxAI({
name: "openai",
apiKey: process.env.OPENAI_APIKEY!,
});
const result = await agent.forward(ai, {
userMessage: "Remember that my favorite color is blue",
});Cleanup
Always clean up the transport when done:
// Terminate the child process
await transport.terminate();API Reference
AxMCPStdioTransport
Constructor
new AxMCPStdioTransport(config: StdioTransportConfig)Methods
send(message: AxMCPJSONRPCRequest): Promise<AxMCPJSONRPCResponse>- Send a requestsendNotification(message: AxMCPJSONRPCNotification): Promise<void>- Send a notificationconnect(): Promise<void>- Connect (no-op for stdio)terminate(): Promise<void>- Terminate the child process
axCreateMCPStdioTransport
Factory function to create a new transport instance:
axCreateMCPStdioTransport(config: StdioTransportConfig): AxMCPStdioTransportLicense
Apache-2.0
