forked from DevOps/deploy.stack
实现一个基于Golang的MCP时间服务器,提供获取当前时间和日期功能 包含客户端示例、安装脚本和详细文档 refactor: 优化磁盘巡检脚本以支持SAS和SSD硬盘 增强磁盘巡检脚本的兼容性,改进SMART信息解析逻辑 添加硬盘类型检测和更全面的错误处理 docs: 更新README和安装说明 添加MCP时间服务器的使用文档和API说明 完善磁盘巡检报告格式和内容
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package main
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"log"
|
||
"time"
|
||
|
||
"github.com/mark3labs/mcp-go/mcp"
|
||
"github.com/mark3labs/mcp-go/server"
|
||
)
|
||
|
||
func main() {
|
||
s := server.NewMCPServer(
|
||
"Time Service",
|
||
"1.0.0",
|
||
server.WithResourceCapabilities(true, true),
|
||
server.WithLogging(),
|
||
)
|
||
|
||
tool_time := mcp.NewTool("get_current_time",
|
||
mcp.WithDescription("获取当前系统时间,返回格式:yyyy-MM-dd HH:mm:ss"),
|
||
)
|
||
s.AddTool(tool_time, currentTimeHandler)
|
||
|
||
tool_date := mcp.NewTool("get_current_date",
|
||
mcp.WithDescription("get current date,output format:yyyy-MM-dd"),
|
||
)
|
||
s.AddTool(tool_date, currentDateHandler)
|
||
|
||
if err := server.ServeStdio(s); err != nil {
|
||
fmt.Printf("Server start fail: %v\n", err)
|
||
} else {
|
||
log.Println("Time MCP start")
|
||
}
|
||
}
|
||
|
||
func currentTimeHandler(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
||
currentTime := time.Now().Format("2006-01-02 15:04:05")
|
||
return mcp.NewToolResultText(fmt.Sprintf("%s", currentTime)), nil
|
||
}
|
||
|
||
func currentDateHandler(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
||
currentTime := time.Now().Format("2006-01-02")
|
||
return mcp.NewToolResultText(fmt.Sprintf("%s", currentTime)), nil
|
||
}
|