MCP Client
The Model Context Protocol (MCP) client manages MCP servers, their installations, tool access, credential bindings, and auth policies.
Server management
Create
Human-readable description
server = await zaby.mcp.create_server({
"name": "Web Search",
"slug": "web-search",
"type": "EXTERNAL",
"endpoint": "https://mcp.search.io/sse",
})
const server = await zaby.mcp.createServer({
name: "Web Search",
slug: "web-search",
type: "EXTERNAL",
endpoint: "https://mcp.search.io/sse",
});
Get
server = await zaby.mcp.get_server(server_id)
const server = await zaby.mcp.getServer(server_id);
Update
await zaby.mcp.update_server(server_id, {
"name": "Updated Name",
"endpoint": "https://mcp.new-endpoint.io/sse",
})
await zaby.mcp.updateServer(server_id, {
name: "Updated Name",
endpoint: "https://mcp.new-endpoint.io/sse",
});
Probe the server for available tools without installing:
tools = await zaby.mcp.discover_tools(server_id)
const tools = await zaby.mcp.discoverTools(server_id);
Browse available MCP tools across all registered servers:
catalog = await zaby.mcp.list_catalog()
const catalog = await zaby.mcp.listCatalog();
Installations
Install
installation = await zaby.mcp.install_server({
"serverId": server_id,
"name": "Search Prod",
"config": {"api_key": "sk-..."},
})
const installation = await zaby.mcp.installServer({
serverId: server_id,
name: "Search Prod",
config: { api_key: "sk-..." },
});
Server-specific configuration
List installations
installations = await zaby.mcp.list_installations()
const installations = await zaby.mcp.listInstallations();
Update installation
await zaby.mcp.update_installation(installation_id, {
"config": {"api_key": "new-key"},
})
await zaby.mcp.updateInstallation(installation_id, {
config: { api_key: "new-key" },
});
Revoke installation
await zaby.mcp.revoke_installation(installation_id)
await zaby.mcp.revokeInstallation(installation_id);
tools = await zaby.mcp.list_installation_tools(installation_id)
const tools = await zaby.mcp.listInstallationTools(installation_id);
await zaby.mcp.update_tool_policy(installation_id, tool_id, {
"allowed": True,
"requiredRole": "admin",
})
await zaby.mcp.updateToolPolicy(installation_id, tool_id, {
allowed: true,
requiredRole: "admin",
});
Preflight invocation
Validate a tool invocation without executing it:
result = await zaby.mcp.preflight_invocation(installation_id, tool_name, {
"arguments": {"query": "test"},
})
const result = await zaby.mcp.preflightInvocation(installation_id, tool_name, {
arguments: { query: "test" },
});
result = await zaby.mcp.invoke_tool(installation_id, tool_name, {
"arguments": {"query": "What's the weather?"},
})
const result = await zaby.mcp.invokeTool(installation_id, tool_name, {
arguments: { query: "What's the weather?" },
});
Credential bindings
Create credential binding
binding = await zaby.mcp.create_credential_binding(installation_id, {
"credentials": {"api_key": "sk-...", "secret": "..."},
})
const binding = await zaby.mcp.createCredentialBinding(installation_id, {
credentials: { api_key: "sk-...", secret: "..." },
});
Delete credential binding
await zaby.mcp.delete_credential_binding(binding_id)
await zaby.mcp.deleteCredentialBinding(binding_id);
Auth policies & access
await zaby.mcp.upsert_auth_policy(installation_id, {
"type": "oauth2",
"config": {"clientId": "...", "scopes": ["read"]},
})
await zaby.mcp.upsertAuthPolicy(installation_id, {
type: "oauth2",
config: { clientId: "...", scopes: ["read"] },
});
await zaby.mcp.grant_access(installation_id, {
"agentId": agent_id,
"permissions": ["invoke", "discover"],
})
await zaby.mcp.grantAccess(installation_id, {
agentId: agent_id,
permissions: ["invoke", "discover"],
});
Full workflow
import asyncio
from zaby import Zaby
async def main():
zaby = Zaby(api_key="zaby_pk_...")
server = await zaby.mcp.create_server({
"name": "Weather",
"slug": "weather",
"type": "EXTERNAL",
"endpoint": "https://weather-mcp.example.com/sse",
})
installation = await zaby.mcp.install_server({
"serverId": server["id"],
"name": "Weather Prod",
"config": {"api_key": "sk-..."},
})
await zaby.mcp.invoke_tool(installation["id"], "get_forecast", {
"arguments": {"city": "London"},
})
asyncio.run(main())
import { Zaby } from "@zaby-ai/sdk";
async function main() {
const zaby = new Zaby({ apiKey: "zaby_pk_..." });
const server = await zaby.mcp.createServer({
name: "Weather",
slug: "weather",
type: "EXTERNAL",
endpoint: "https://weather-mcp.example.com/sse",
});
const installation = await zaby.mcp.installServer({
serverId: server.id,
name: "Weather Prod",
config: { api_key: "sk-..." },
});
await zaby.mcp.invokeTool(installation.id, "get_forecast", {
arguments: { city: "London" },
});
}
main();