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