Skip to main content

zagens_runtime_adapters/mcp/
types.rs

1use serde::{Deserialize, Serialize};
2
3// === MCP Tool Definition ===
4
5/// Tool discovered from an MCP server
6#[derive(Debug, Clone, Deserialize, Serialize)]
7pub struct McpTool {
8    pub name: String,
9    #[serde(default)]
10    pub description: Option<String>,
11    #[serde(rename = "inputSchema", default)]
12    pub input_schema: serde_json::Value,
13}
14
15/// Resource discovered from an MCP server
16#[derive(Debug, Clone, Deserialize, Serialize)]
17pub struct McpResource {
18    pub uri: String,
19    pub name: String,
20    #[serde(default)]
21    pub description: Option<String>,
22    #[serde(rename = "mimeType", default)]
23    pub mime_type: Option<String>,
24}
25
26/// Resource template discovered from an MCP server
27#[derive(Debug, Clone, Deserialize, Serialize)]
28pub struct McpResourceTemplate {
29    #[serde(rename = "uriTemplate")]
30    pub uri_template: String,
31    pub name: String,
32    #[serde(default)]
33    pub description: Option<String>,
34    #[serde(rename = "mimeType", default)]
35    pub mime_type: Option<String>,
36}
37
38/// Prompt discovered from an MCP server
39#[derive(Debug, Clone, Deserialize, Serialize)]
40pub struct McpPrompt {
41    pub name: String,
42    #[serde(default)]
43    pub description: Option<String>,
44    #[serde(default)]
45    pub arguments: Vec<McpPromptArgument>,
46}
47
48/// Argument for an MCP prompt
49#[derive(Debug, Clone, Deserialize, Serialize)]
50pub struct McpPromptArgument {
51    pub name: String,
52    #[serde(default)]
53    pub description: Option<String>,
54    #[serde(default)]
55    pub required: bool,
56}
57
58// === Connection State ===
59
60/// State of an MCP connection
61#[derive(Debug, Clone, Copy, PartialEq, Eq)]
62pub enum ConnectionState {
63    Connecting,
64    Ready,
65    Disconnected,
66}