techne_mcp/client/
request.rs

1use crate::client::{self, Client};
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(tag = "method")]
7pub enum Request {
8    #[serde(rename = "initialize")]
9    Initialize { params: Initialize },
10    #[serde(rename = "ping")]
11    Ping,
12    #[serde(rename = "tools/list")]
13    ToolsList,
14    #[serde(rename = "tools/call")]
15    ToolsCall { params: ToolCall },
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct Initialize {
21    pub protocol_version: String,
22    pub capabilities: client::Capabilities,
23    pub client_info: Client,
24}
25
26impl From<Initialize> for Request {
27    fn from(initialize: Initialize) -> Self {
28        Self::Initialize { params: initialize }
29    }
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct ToolCall {
34    pub name: String,
35    pub arguments: serde_json::Value,
36}
37
38impl From<ToolCall> for Request {
39    fn from(call: ToolCall) -> Self {
40        Self::ToolsCall { params: call }
41    }
42}