techne_mcp/server/
response.rs

1use crate::server::tool;
2use crate::server::{Capabilities, Server, Tool};
3
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Serialize)]
7#[serde(untagged)]
8pub enum Response {
9    Initialize(Initialize),
10    ToolsList(ToolsList),
11    ToolsCall(tool::Response),
12    Ping {},
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16#[serde(rename_all = "camelCase")]
17pub struct Initialize {
18    pub protocol_version: String,
19    pub capabilities: Capabilities,
20    pub server_info: Server,
21}
22
23impl From<Initialize> for Response {
24    fn from(response: Initialize) -> Self {
25        Self::Initialize(response)
26    }
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct ToolsList {
31    pub tools: Vec<Tool>,
32}
33
34impl From<ToolsList> for Response {
35    fn from(response: ToolsList) -> Self {
36        Self::ToolsList(response)
37    }
38}
39
40impl From<tool::Response> for Response {
41    fn from(response: tool::Response) -> Self {
42        Self::ToolsCall(response)
43    }
44}