Skip to main content

Module server

Module server 

Source
Expand description

ZAP server implementation

Cap’n Proto RPC server for AI agent communication.

§Example

use zap::{Server, Config};
use zap::server::{ToolHandler, ResourceHandler, PromptHandler, ToolDef};
use std::collections::HashMap;
use std::sync::Arc;

struct MyToolHandler;

impl ToolHandler for MyToolHandler {
    fn list(&self) -> std::pin::Pin<Box<dyn std::future::Future<Output = Vec<ToolDef>> + Send + '_>> {
        Box::pin(async {
            vec![ToolDef {
                name: "echo".into(),
                description: "Echo input".into(),
                schema: b"{}".to_vec(),
                annotations: HashMap::new(),
            }]
        })
    }

    fn call(
        &self,
        _name: &str,
        args: &[u8],
        _metadata: HashMap<String, String>,
    ) -> std::pin::Pin<Box<dyn std::future::Future<Output = Result<Vec<u8>, String>> + Send + '_>> {
        let args = args.to_vec();
        Box::pin(async move { Ok(args) })
    }
}

#[tokio::main]
async fn main() -> zap::Result<()> {
    let mut server = Server::new(Config::default());
    server.set_tool_handler(Arc::new(MyToolHandler));
    server.run().await
}

Structs§

NoopPromptHandler
Default no-op prompt handler
NoopResourceHandler
Default no-op resource handler
NoopToolHandler
Default no-op tool handler
PromptArgument
Prompt argument
PromptDef
Prompt definition
PromptMessage
Prompt message
ResourceContentDef
Resource content with metadata
ResourceDef
Resource definition
Server
ZAP Server
ServerInfoDef
Server info
ToolDef
Tool definition
TracingLogHandler
Default log handler (uses tracing)

Enums§

LogLevel
Log level
PromptContent
Prompt content
PromptRole
Prompt role
ResourceContentData
Resource content

Traits§

LogHandler
Log handler trait
PromptHandler
Prompt handler trait
ResourceHandler
Resource handler trait
ToolHandler
Tool handler trait