Plugins
Mastra Plugin
The Mastra Plugin integrates AI-powered natural language processing capabilities into your URPC applications, enabling users to interact with your data through conversational interfaces.
Installation
npm install @unilab/mastra-plugin @unilab/mastra-client-pluginBasic Usage
Server
import { URPC } from "@unilab/urpc-hono";
import { MastraPlugin } from "@unilab/mastra-plugin";
import { getMastraInstance } from "@unilab/mastra-plugin/agents";
import { UserEntity } from "./entities/user";
import { UserAdapter } from "./adapters/user";
const MyPlugin = {
entities: [UserEntity],
adapters: [
{
entity: "UserEntity",
source: "database",
adapter: new UserAdapter(),
},
],
};
const app = URPC.init({
plugins: [
MyPlugin,
MastraPlugin({
mastraInstance: getMastraInstance({
URPC,
openrouterApiKey: process.env.OPENROUTER_API_KEY!,
// debug: true,
}),
defaultAgent: "urpcSimpleAgent",
}),
],
});
export default {
port: 3000,
fetch: app.fetch,
};Client
import { ChatEntity } from "@unilab/mastra-plugin/entities";
import { repo, URPC } from "@unilab/urpc";
URPC.init({
plugins: [MastraClientPlugin()],
baseUrl: "http://localhost:3000",
timeout: 10000,
});
// Generate urpc code on the server side and execute it
const chatWithAI = async () => {
const result = await repo<ChatEntity>({
entity: "chat",
source: "mastra",
}).call({
input: "Find all users with email containing 'example.com'",
model: "google/gemini-2.0-flash-001",
entities: ["UserEntity"],
// agent: "urpcSimpleAgent",
});
console.log(result.output);
};
// Generate urpc code on the server side, execute AI generated code on the front end
const chatWithAIProxy = async () => {
const result = await repo<ChatEntity>({
entity: "chat",
source: "mastra-client",
}).call({
input: "Find all users with email containing 'example.com'",
model: "google/gemini-2.0-flash-001",
entities: ["UserEntity"],
});
console.log(result.output);
};Creating Custom Plugins
Learn how to create custom plugins for URPC with entities, adapters, and complete implementations.
UniWeb3 Plugin
UniWeb3 is a comprehensive blockchain plugin for URPC that provides unified access to multiple blockchain networks. It includes support for EVM-compatible chains and Solana, allowing you to query blockchain data through a consistent API.