Browse Source

初始化

master
张献维 1 month ago
commit
976fc964ad
  1. 3
      .gitignore
  2. 11
      go.mod
  3. 70
      main.go
  4. 23
      说明.md

3
.gitignore

@ -0,0 +1,3 @@
/.idea/
/go.sum
/main

11
go.mod

@ -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
)

70
main.go

@ -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")
}
}

23
说明.md

@ -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…
Cancel
Save