Skip to main content

mcp-go-first

package main

import (
"context"
"fmt"

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

func main() {
// Create a new MCP server
s := server.NewMCPServer(
"Demo 🚀",
"1.0.0",
server.WithToolCapabilities(false),
)

// Add tool
tool := mcp.NewTool("hello_world",
mcp.WithDescription("Say hello to someone"),
mcp.WithString("name",
mcp.Required(),
mcp.Description("Name of the person to greet"),
),
)

// Add tool handler
s.AddTool(tool, helloHandler)

tool01 := mcp.NewTool("download_file",
mcp.WithDescription("当用户需要下载文件时使用"),
mcp.WithString("fileName",
mcp.Required(),
mcp.Description("fileName 用户要下载的文件名"),
),
)

// Add tool handler
s.AddTool(tool01, helloHandler01)

// Start the stdio server
if err := server.ServeStdio(s); err != nil {
fmt.Printf("Server error: %v\n", err)
}
}

func helloHandler01(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
name, err := request.RequireString("fileName")
if err != nil {
return mcp.NewToolResultError(err.Error()), nil
}

return mcp.NewToolResultText(fmt.Sprintf("恭喜您,文件下载完成 , %s!", name)), nil

}

func helloHandler(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
name, err := request.RequireString("name")
if err != nil {
return mcp.NewToolResultError(err.Error()), nil
}

return mcp.NewToolResultText(fmt.Sprintf("Hello, %s!", name)), nil
}