McpModels.cs•2.9 kB
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System.Text.Json.Serialization;
namespace ToolSelection.Models;
// Constants
public static class McpConstants
{
public const string LatestProtocolVersion = "2025-06-18";
public const string JsonRpcVersion = "2.0";
}
// Standard JSON-RPC error codes
public static class ErrorCodes
{
public const int ParseError = -32700;
public const int InvalidRequest = -32600;
public const int MethodNotFound = -32601;
public const int InvalidParams = -32602;
public const int InternalError = -32603;
}
// Basic types
public enum Role
{
[JsonPropertyName("user")]
User,
[JsonPropertyName("assistant")]
Assistant
}
public enum LoggingLevel
{
[JsonPropertyName("debug")]
Debug,
[JsonPropertyName("info")]
Info,
[JsonPropertyName("notice")]
Notice,
[JsonPropertyName("warning")]
Warning,
[JsonPropertyName("error")]
Error,
[JsonPropertyName("critical")]
Critical,
[JsonPropertyName("alert")]
Alert,
[JsonPropertyName("emergency")]
Emergency
}
// Base metadata
public class BaseMetadata
{
[JsonPropertyName("name")]
public required string Name { get; set; }
[JsonPropertyName("title")]
public string? Title { get; set; }
}
// Tool annotations
public class ToolAnnotations
{
[JsonPropertyName("title")]
public string? Title { get; set; }
[JsonPropertyName("readOnlyHint")]
public bool? ReadOnlyHint { get; set; }
[JsonPropertyName("destructiveHint")]
public bool? DestructiveHint { get; set; }
[JsonPropertyName("idempotentHint")]
public bool? IdempotentHint { get; set; }
[JsonPropertyName("openWorldHint")]
public bool? OpenWorldHint { get; set; }
}
// Tool definition for azmcp tools list response
public class Tool
{
[JsonPropertyName("name")]
public required string Name { get; set; }
[JsonPropertyName("description")]
public string? Description { get; set; }
[JsonPropertyName("command")]
public string? Command { get; set; }
[JsonPropertyName("option")]
public List<ToolOption>? Options { get; set; }
}
// Tool option definition
public class ToolOption
{
[JsonPropertyName("name")]
public string? Name { get; set; }
[JsonPropertyName("description")]
public string? Description { get; set; }
[JsonPropertyName("type")]
public string? Type { get; set; }
[JsonPropertyName("required")]
public bool? Required { get; set; }
}
// List tools result
public class ListToolsResult
{
[JsonPropertyName("status")]
public int Status { get; set; }
[JsonPropertyName("message")]
public string? Message { get; set; }
[JsonPropertyName("results")]
public required List<Tool> Tools { get; set; }
[JsonPropertyName("duration")]
public int? Duration { get; set; }
}