qilin

qilin

3.4

Qilin is a Model Context Protocol Framework for Go, designed to simplify the creation of MCP servers with a familiar interface for Go developers.

Qilin Logo

Qilin 🌩️🐲🌩️ – Model Context Protocol Framework for Go

Go Reference Go Version Go Report Card License MIT Status WIP Ask DeepWiki Ask DeepWiki

🌟 Highlights

Β Β 
⚑ Zero‑config serverqilin.New().Start() launches an MCP server on STDIN/STDOUT
🀝 Familiar look and feelHandlers inspired by Go's well-known web application framework. Developers familiar with them will feel right at home.
⏩ Streamable HTTPSupports Streamable HTTP transport.

πŸš€ Quick Start

go get github.com/miyamo2/qilin
package main

import (
	"fmt"
	"github.com/miyamo2/qilin"
	"maps"
)

type OrderBeerRequest struct {
	BeerName string `json:"beer_name" jsonschema:"title=Beer Name"`
	Quantity int    `json:"quantity"  jsonschema:"title=Quantity of Beers"`
}

type OrderBeerResponse struct {
	Amount float64 `json:"amount"`
}

var beers = map[string]string{
	"IPA":   "A hoppy beer with a bitter finish.",
	"Stout": "A dark beer with a rich, roasted flavor.",
	"Lager": "A light, crisp beer with a smooth finish.",
}

func main() {
	q := qilin.New("beer hall", qilin.WithVersion("v0.1.0"))

	q.Resource("menu_list",
		"resources://beer_list",
		func(c qilin.ResourceContext) error {
			return c.JSON(maps.Keys(beers))
		})

	q.Tool("order_beer",
		(*OrderBeerRequest)(nil),
		func(c qilin.ToolContext) error {
			var req OrderBeerRequest
			if err := c.Bind(&req); err != nil {
				return err
			}
			_, ok := beers[req.BeerName]
			if !ok {
				return fmt.Errorf("beer %s not found", req.BeerName)
			}
			amount := 8 * req.Quantity // Assume unit cost of all beers is $8.00.
			return c.JSON(OrderBeerResponse{Amount: float64(amount)})
		})
	q.Start() // listen on stdio
}

For more detailed usage, please refer to the Qilin User Guide.

πŸ›€ Roadmap

Transports

  • Stdio
  • Streamable HTTP

Features

  • Tool
    • Listing
    • Calling
      • Middleware
  • Resource
    • Listing
    • Reading
      • Middleware
    • Templates
    • List Changed Notification
    • Subscriptions
  • Prompt

πŸ“œ License

Qilin released under the MIT License