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 handler: VmClosure,
23}
24
25pub struct McpResourceDef {
27 pub uri: String,
28 pub name: String,
29 pub title: Option<String>,
30 pub description: Option<String>,
31 pub mime_type: Option<String>,
32 pub text: String,
33}
34
35pub struct McpResourceTemplateDef {
37 pub uri_template: String,
38 pub name: String,
39 pub title: Option<String>,
40 pub description: Option<String>,
41 pub mime_type: Option<String>,
42 pub completions: BTreeMap<String, McpCompletionSource>,
43 pub handler: VmClosure,
44}
45
46#[derive(Default)]
48pub struct McpCompletionSource {
49 pub values: Vec<String>,
50 pub handler: Option<VmClosure>,
51}
52
53pub struct McpPromptArgDef {
55 pub name: String,
56 pub description: Option<String>,
57 pub required: bool,
58 pub completion: Option<McpCompletionSource>,
59}
60
61pub struct McpPromptDef {
63 pub name: String,
64 pub title: Option<String>,
65 pub description: Option<String>,
66 pub arguments: Option<Vec<McpPromptArgDef>>,
67 pub handler: VmClosure,
68}