commit
976fc964ad
4 changed files with 107 additions and 0 deletions
@ -0,0 +1,3 @@ |
|||
/.idea/ |
|||
/go.sum |
|||
/main |
@ -0,0 +1,11 @@ |
|||
module main |
|||
|
|||
go 1.24.1 |
|||
|
|||
require github.com/mark3labs/mcp-go v0.23.1 |
|||
|
|||
require ( |
|||
github.com/google/uuid v1.6.0 // indirect |
|||
github.com/spf13/cast v1.7.1 // indirect |
|||
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect |
|||
) |
@ -0,0 +1,70 @@ |
|||
package main |
|||
|
|||
import ( |
|||
"context" |
|||
"fmt" |
|||
|
|||
"github.com/mark3labs/mcp-go/mcp" |
|||
"github.com/mark3labs/mcp-go/server" |
|||
) |
|||
|
|||
func main() { |
|||
fmt.Printf("开始启动...\n") |
|||
// 创建新的 MCP 服务器
|
|||
s := server.NewMCPServer( |
|||
"计算小样", |
|||
"1.0.0", |
|||
server.WithResourceCapabilities(true, true), |
|||
server.WithLogging(), |
|||
server.WithRecovery(), |
|||
) |
|||
|
|||
// 添加计算器工具
|
|||
calculatorTool := mcp.NewTool("计算", |
|||
mcp.WithDescription("执行基本算术运算"), |
|||
mcp.WithString("运行", |
|||
mcp.Required(), |
|||
mcp.Description("要执行的作(加、减、乘、除)"), |
|||
mcp.Enum("加", "减", "乘", "除"), |
|||
), |
|||
mcp.WithNumber("x", |
|||
mcp.Required(), |
|||
mcp.Description("第一个数字"), |
|||
), |
|||
mcp.WithNumber("y", |
|||
mcp.Required(), |
|||
mcp.Description("第二个数字"), |
|||
), |
|||
) |
|||
|
|||
// 添加计算器处理程序
|
|||
s.AddTool(calculatorTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { |
|||
op := request.Params.Arguments["运算"].(string) |
|||
x := request.Params.Arguments["x"].(float64) |
|||
y := request.Params.Arguments["y"].(float64) |
|||
|
|||
var result float64 |
|||
switch op { |
|||
case "加": |
|||
result = x + y |
|||
case "减": |
|||
result = x - y |
|||
case "乘": |
|||
result = x * y |
|||
case "除": |
|||
if y == 0 { |
|||
return mcp.NewToolResultError("不能被零除"), nil |
|||
} |
|||
result = x / y |
|||
} |
|||
|
|||
return mcp.NewToolResultText(fmt.Sprintf("%.2f", result)), nil |
|||
}) |
|||
|
|||
// 启动服务器
|
|||
if err := server.ServeStdio(s); err != nil { |
|||
fmt.Printf("服务器错误: %v\n", err) |
|||
} else { |
|||
fmt.Printf("服务器停止!\n") |
|||
} |
|||
} |
@ -0,0 +1,23 @@ |
|||
# 中文版本(MCP-GO Demo) |
|||
|
|||
|
|||
配置文件 |
|||
|
|||
```json |
|||
{ |
|||
"mcpServers": { |
|||
"calculator": { |
|||
"name": "计算小样", |
|||
"version": "1.0.0", |
|||
"command": "~/Music/go-code/mcp-go-demo/main", |
|||
"args": [], |
|||
"description": "提供加减乘除运算服务", |
|||
"enabled": true, |
|||
"autoApprove": [ |
|||
"计算" |
|||
] |
|||
} |
|||
} |
|||
} |
|||
|
|||
``` |
Loading…
Reference in new issue