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 handler: VmClosure,
25}
26
27pub struct McpResourceDef {
29 pub uri: String,
30 pub name: String,
31 pub title: Option<String>,
32 pub description: Option<String>,
33 pub mime_type: Option<String>,
34 pub meta: Option<serde_json::Value>,
36 pub text: String,
37}
38
39pub struct McpResourceTemplateDef {
41 pub uri_template: String,
42 pub name: String,
43 pub title: Option<String>,
44 pub description: Option<String>,
45 pub mime_type: Option<String>,
46 pub completions: BTreeMap<String, McpCompletionSource>,
47 pub handler: VmClosure,
48}
49
50#[derive(Default)]
52pub struct McpCompletionSource {
53 pub values: Vec<String>,
54 pub handler: Option<VmClosure>,
55}
56
57pub struct McpPromptArgDef {
59 pub name: String,
60 pub description: Option<String>,
61 pub required: bool,
62 pub completion: Option<McpCompletionSource>,
63}
64
65pub struct McpPromptDef {
67 pub name: String,
68 pub title: Option<String>,
69 pub description: Option<String>,
70 pub arguments: Option<Vec<McpPromptArgDef>>,
71 pub handler: VmClosure,
72}