MCP Server Go

MCP Server Go

site icon
2025.01.11 0
GoLLM 集成工具开发数据服务开发效率
MCP Server Go 是一个基于 Go 语言实现的 Model Context Protocol (MCP) 服务器,旨在为 LLM(大型语言模型)应用程序提供与外部数据源和工具的无缝集成。它通过高层次的接口简化了 MCP 服务器的开发过程,使开发者能够快速构建功能丰富的工具和服务。
View on GitHub

Overview

基本能力

产品定位

MCP Server Go 是一个用于构建与 LLM 应用程序交互的服务器的框架,它提供了一种标准化的方式来暴露数据和功能给 LLM 使用。

核心功能

  • 快速开发:高层次的接口减少了代码量,加快了开发速度。
  • 简单易用:最小化的样板代码,使得构建 MCP 服务器变得简单。
  • 完整实现:提供了 MCP 核心规范的完整实现。
  • 工具集成:支持添加自定义工具,如计算器、HTTP 请求等。
  • 资源管理:支持静态和动态资源,用于向 LLM 提供数据。
  • 提示模板:提供可重用的提示模板,优化 LLM 交互。

适用场景

  • 为 LLM 应用程序提供后端服务。
  • 快速构建与 LLM 交互的工具和功能。
  • 集成外部数据源和 API 到 LLM 应用中。

工具列表

  • hello_world:简单的问候工具。
  • calculate:基础算术计算工具。
  • http_request:HTTP 请求工具,用于与外部 API 交互。

常见问题解答

  • Q: MCP Server Go 是否支持动态资源? A: 是的,支持通过 URI 模板定义动态资源。
  • Q: 如何添加自定义工具? A: 使用 mcp.NewTool 创建工具,并通过 s.AddTool 添加到服务器。

使用教程

使用依赖

  • Go 版本 >= 1.23

安装教程

go get github.com/shaneholloman/mcp-server-go

调试方式

运行测试:

go test -v './...'

启动服务器示例:

package main

import (
    "context"
    "fmt"

    "github.com/shaneholloman/mcp-server-go/mcp"
    "github.com/shaneholloman/mcp-server-go/server"
)

func main() {
    s := server.NewMCPServer("Demo", "1.0.0")
    tool := mcp.NewTool("hello_world", mcp.WithDescription("Say hello to someone"))
    s.AddTool(tool, helloHandler)
    if err := server.ServeStdio(s); err != nil {
        fmt.Printf("Server error: %v\n", err)
    }
}

func helloHandler(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
    name, ok := request.Params.Arguments["name"].(string)
    if !ok {
        return mcp.NewToolResultError("name must be a string"), nil
    }
    return mcp.NewToolResultText(fmt.Sprintf("Hello, %s!", name)), nil
}

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。