harn_vm/mcp_server/
defs.rs1use std::collections::BTreeMap;
2
3use crate::value::VmClosure;
4
5#[derive(Clone, Debug, Default, Eq, PartialEq)]
7pub struct McpServerMetadata {
8 pub name: Option<String>,
9 pub version: Option<String>,
10 pub instructions: Option<String>,
11}
12
13pub struct McpToolDef {
15 pub name: String,
16 pub title: Option<String>,
17 pub description: String,
18 pub input_schema: serde_json::Value,
19 pub output_schema: Option<serde_json::Value>,
20 pub annotations: Option<serde_json::Value>,
21 pub icons: Option<serde_json::Value>,
22 pub meta: Option<serde_json::Value>,
24 pub task_support: crate::mcp_tasks::McpTaskSupport,
28 pub handler: VmClosure,
29}
30
31pub struct McpResourceDef {
33 pub uri: String,
34 pub name: String,
35 pub title: Option<String>,
36 pub description: Option<String>,
37 pub mime_type: Option<String>,
38 pub meta: Option<serde_json::Value>,
40 pub text: String,
41}
42
43pub struct McpResourceTemplateDef {
45 pub uri_template: String,
46 pub name: String,
47 pub title: Option<String>,
48 pub description: Option<String>,
49 pub mime_type: Option<String>,
50 pub completions: BTreeMap<String, McpCompletionSource>,
51 pub handler: VmClosure,
52}
53
54#[derive(Default)]
56pub struct McpCompletionSource {
57 pub values: Vec<String>,
58 pub handler: Option<VmClosure>,
59}
60
61pub struct McpPromptArgDef {
63 pub name: String,
64 pub description: Option<String>,
65 pub required: bool,
66 pub completion: Option<McpCompletionSource>,
67}
68
69pub struct McpPromptDef {
71 pub name: String,
72 pub title: Option<String>,
73 pub description: Option<String>,
74 pub arguments: Option<Vec<McpPromptArgDef>>,
75 pub handler: VmClosure,
76}