mcp-golang을 오픈소스로 공개했습니다!
몇 주 전 Anthropic은 LLM이 도구를 사용하고 세상과 상호 작용할 수 있도록 하는 프로토콜인 Model Context Protocol을 출시했습니다.
Anthropic에서 작성한 기본 SDK는 Typescript와 Python용이어서 go를 사용하고 싶다면 운이 없었습니다.
mcp-golang을 사용하면 이제 단 몇 줄의 코드만으로 도구 서버를 작성할 수 있습니다.
아래 서버를 통해 LLM은 모든 위치의 날씨를 이해할 수 있습니다.
package main import ( "fmt" mcp_golang "github.com/metoro-io/mcp-golang" "github.com/metoro-io/mcp-golang/transport/stdio" "io" "net/http" ) type WeatherArguments struct { Longitude float64 `json:"longitude" jsonschema:"required,description=The longitude of the location to get the weather for"` Latitude float64 `json:"latitude" jsonschema:"required,description=The latitude of the location to get the weather for"` } // This is explained in the docs at https://mcpgolang.com/tools func main() { done := make(chan struct{}) server := mcp_golang.NewServer(stdio.NewStdioServerTransport()) err := server.RegisterTool("get_weather", "Get the weather forecast for temperature, wind speed and relative humidity", func(arguments WeatherArguments) (*mcp_golang.ToolResponse, error) { url := fmt.Sprintf("https://api.open-meteo.com/v1/forecast?latitude=%f&longitude=%f¤t=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m", arguments.Latitude, arguments.Longitude) resp, err := http.Get(url) if err != nil { return nil, err } defer resp.Body.Close() output, err := io.ReadAll(resp.Body) if err != nil { return nil, err } return mcp_golang.NewToolReponse(mcp_golang.NewTextContent(string(output))), nil }) err = server.Serve() if err != nil { panic(err) } <-done }
https://youtu.be/kffLqCgvvdE에서 데모를 확인하세요!
즐거운 코딩하세요!
위 내용은 go를 사용하여 LLM용 도구 작성 - mcp-golang의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!