Pudu programming language
Menu
Package

@chrismichaelps / pudu-lang-mcp

Model Context Protocol server for Pudu language documentation and compiler tools

0.1.1Apache-2.01

InstallClose

Discovery.pudu

Pudu49 lines1.7 KB

GitHub ↗
1/** @App.Discovery.Handler — server identity, capabilities, and handshake answers */2module PuduLangMcp.App.Discovery34import Std.Json as Json5import PuduLangMcp.App.Context as Context6import PuduLangMcp.Constants.Protocol as Protocol7import PuduLangMcp.Constants.Server as Server8import PuduLangMcp.Domain.Rpc.Reply as Reply9import PuduLangMcp.Errors.RpcError as RpcError10import PuduLangMcp.Utils.JsonAccess as Access1112/// The features this server implements.13export fn capabilities() -> Json.Json {14  Json.object(&[15      ("tools", Json.object(&[])),16      ("resources", Json.object(&[])),17      ("prompts", Json.object(&[])),18      ("completions", Json.object(&[]))19    ])20}2122/// Answers `server/discover`: versions, capabilities, and instructions.23export fn discover(context: &Context.Context, params: &Json.Json) -> Result[Json.Json, RpcError.ProtocolError] {24  Ok(Reply.complete(&[25        ("supportedVersions", Access.texts(&Protocol.supportedVersions())),26        ("capabilities", capabilities()),27        ("instructions", Json.Text(Server.INSTRUCTIONS))28      ], &Reply.Cached(Server.LIST_TTL_MS, Protocol.CACHE_PUBLIC)))29}3031/// Answers `initialize` for a negotiated legacy version.32export fn initialize(version: Str) -> Json.Json {33  Reply.complete(&[34      ("protocolVersion", Json.Text(version)),35      ("capabilities", capabilities()),36      ("serverInfo", Json.object(&[37            ("name", Json.Text(Server.SERVER_NAME)),38            ("title", Json.Text(Server.SERVER_TITLE)),39            ("version", Json.Text(Server.SERVER_VERSION))40          ])),41      ("instructions", Json.Text(Server.INSTRUCTIONS))42    ], &Reply.NoCache)43}4445/// Answers a legacy `ping`.46export fn pong() -> Json.Json {47  Reply.complete(&[], &Reply.NoCache)48}49