Установка
go get github.com/metoro-io/mcp-golangОписание
<div align="center"> <img src="./resources/mcp-golang-logo.webp" height="300" alt="Statusphere logo"> </div> <br/> <div align="center">        [](https://pkg.go.dev/github.com/metoro-io/mcp-golang) [](https://goreportcard.com/report/github.com/metoro-io/mcp-golang)  </div> # mcp-golang mcp-golang is an unofficial implementation of the [Model Context Protocol](https://modelcontextprotocol.io/) in Go. Write MCP servers and clients in golang with a few lines of code. Docs at [https://mcpgolang.com](https://mcpgolang.com) ## Highlights - 🛡️**Type safety** - Define your tool arguments as native go structs, have mcp-golang handle the rest. Automatic schema generation, deserialization, error handling etc. - 🚛 **Custom transports** - Use the built-in transports (stdio for full feature support, HTTP for stateless communication) or write your own. - ⚡ **Low boilerplate** - mcp-golang generates all the MCP endpoints for you apart from your tools, prompts and resources. - 🧩 **Modular** - The library is split into three components: transport, protocol and server/client. Use them all or take what you need. - 🔄 **Bi-directional** - Full support for both server and client implementations through stdio transport. ## Example Usage Install with `go get github.com/metoro-io/mcp-golang` ### Server Example ```go package main import ( "fmt" "github.com/metoro-io/mcp-golang" "github.com/metoro-io/mcp-golang/transport/stdio" ) // Tool arguments are just structs, annotated with jsonschema tags // More at https://mcpgolang.com/tools#schema-generation type Content struct { Title string `json:"title" jsonschema:"required,description=The title to submit"` Description *string `json:"description" jsonschema:"description=The description to submit"` } type MyFunctionsArguments struct { Submitter string `json:"submitter" jsonschema:"required,description=The name of the thing calling this tool (openai, google, claude, etc)"` Content Content `json:"content" jsonschema:"required,description=The content of the message"` } func main() { done := make(chan struct{}) server := mcp_golang.NewServer(stdio.NewStdioServerTransport()) err := server.RegisterTool("hello", "Say hello to a person", func(arguments MyFunctionsArguments) (*mcp_golang.ToolResponse, error) { return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(fmt.Sprintf("Hello, %server!", arguments.Submitter))), nil }) if err != nil { panic(err) } err = server.RegisterPrompt("promt_test", "This is a test prompt", func(arguments Content) (*mcp_golang.PromptResponse, error) { return mcp_golang.NewPromptResponse("description", mcp_golang.NewPromptMessage(mcp_golang.NewTextContent(fmt.Sprintf("Hello, %server!", arguments.Title)), mcp_golang.RoleUser)), nil }) if err != nil { panic(err) } err = server.RegisterResource("test://resource", "resource_test", "This is a test resource", "application/json", func() (*mcp_golang.ResourceResponse, error) { return mcp_golang.NewResourceResponse(mcp_golang.NewTextEmbeddedResource("test://resource", "This is a test resource", "application/json")), nil }) err = server.Serve() if err != nil { panic(err) } <-done } ``` ### HTTP Server Example You can also create an HTTP-based server using either the standard HTTP transport or Gin framework: ```go // Standard HTTP transport := http.NewHTTPTransport("/mcp") transport.WithAddr(":8080") server := mcp_golang.NewServer(transport) // Or with Gin framework transport := http.NewGinTransport() router := gin.Default() router.POST("/mcp", transport.Handler()) server := mcp_golang.NewServer(transport) ``` Note: HTTP transports are stateless and don't support bidirectional features like notifications. Use stdio transport if you need those features. ### Client Example Checkout the [examples/client](./examples/client) directory for a more complete example. ```go package main import ( "context" "log" mcp "github.com/metoro-io/mcp-golang" "github.com/metoro-io/mcp-golang/transport/stdio" ) // Define type-safe arguments type CalculateArgs struct { Operation string `json:"operation"` A int `json:"a"` B
Отзывы (0)
Пока нет отзывов. Будьте первым!
Статистика
Информация
Технологии
Похожие серверы
GitHub MCP
Полная интеграция с GitHub API: репозитории, issues, pull requests, actions и многое другое.
Filesystem MCP
Безопасный доступ к файловой системе для чтения, записи и управления файлами с настраиваемыми разрешениями.
Context7 MCP
Доступ к актуальной документации библиотек и фреймворков.
Serena MCP
Мощный MCP сервер для семантической навигации по коду и рефакторинга.