techne_mcp/client/
request.rs1use 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}