techne_mcp/server/
response.rs1use 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}