Token导航 LogoToken导航TokenDH.com
MCP Go Starter logo
AI代理stdio官方来源来源级核验

MCP Go Starter

MCP Server

@modelcontextprotocol/inspector

一个功能完备的 Model Context Protocol (MCP) Go 服务器模板,使用官方 Go SDK 实现,展示了所有主要 MCP 功能。

工具数

0

提示词数

0

GitHub Stars

6

资源数

0
服务器模板GoVS Code资源管理VS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

SamMorrowDrums

提供方

SamMorrowDrums

最后核验

2026/5/17 20:20

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx @modelcontextprotocol/inspector -- go run ./cmd/stdio/main.go

详细介绍

MCP Go启动器

![CI](https://github.com/SamMorrowDrums/mcp-go-starter/actions/workflows/ci.yml) ![Go Report Card](https://goreportcard.com/report/github.com/SamMorrowDrums/mcp-go-starter) ](https://go.dev/) ![License: MIT](https://opensource.org/licenses/MIT) ![MCP](https://modelcontextprotocol.io/)

Go中使用官方Go-sdk的功能完整的模型上下文协议(MCP)服务器模板。这个初学者用干净、地道的Go代码演示了MCP的所有主要功能。

📚 文档

✨ 特性

类别功能描述
工具hello带注释的基本工具
get_weather返回结构化数据的工具
ask_llm调用LLM采样的工具
long_task具有5秒进度更新的工具
load_bonus_tool动态加载新工具
资源info://about静态信息资源
file://example.md基于文件的标记资源
模板greeting://{name}个性化问候
data://items/{id}按ID查找数据
提示greet各种风格的问候
code_review重点领域代码审查

🚀 快速开始

先决条件

安装

# Clone the repository
git clone https://github.com/SamMorrowDrums/mcp-go-starter.git
cd mcp-go-starter

# Download dependencies
go mod download

运行服务器

stdio传输 (地方发展):

go run ./cmd/stdio
# Or: make run-stdio

HTTP传输 (用于远程/web部署):

go run ./cmd/http
# Or: make run-http
# Server runs on http://localhost:3000

构建二进制文件

make build
# Creates bin/stdio and bin/http

🔧 VS代码集成

该项目包括用于无缝开发的VS代码配置:

  1. 在VS Code中打开项目
  2. MCP配置位于 .vscode/mcp.json
  3. 构建于 Ctrl+Shift+B (或 Cmd+Shift+B 在Mac上)
  4. 使用VS Code的MCP工具测试服务器

使用DevContainers

  1. 安装 开发容器扩展
  2. 打开命令面板:“开发容器:在容器中重新打开”
  3. 一切都是预先配置好的,随时可以使用!

📁 项目结构

.
├── cmd/
│   ├── stdio/
│   │   └── main.go        # stdio transport entrypoint
│   └── http/
│       └── main.go        # HTTP transport entrypoint
├── internal/
│   └── server/
│       ├── server.go      # Server orchestration
│       ├── tools.go       # Tool definitions (hello, get_weather, etc.)
│       ├── resources.go   # Resource and template definitions
│       └── prompts.go     # Prompt definitions
├── .vscode/
│   ├── mcp.json           # MCP server configuration
│   ├── tasks.json         # Build/run tasks
│   └── extensions.json
├── .devcontainer/
│   └── devcontainer.json
├── .air.toml              # Live reload configuration
├── .golangci.yml          # Linter configuration
├── go.mod
├── Makefile
└── README.md

🛠️ 发展

# Development with live reload (recommended)
make dev
# Requires air: go install github.com/air-verse/air@latest

# Run without live reload
make run-stdio

# Run tests
make test

# Format code
make fmt

# Lint code
make lint

# Install all dev tools
make install-tools

# Clean build artifacts
make clean

实时重新加载

安装 空气 对于自动重建:

go install github.com/air-verse/air@latest
make dev

更改任何 .go 文件将自动重建并重新启动服务器。

🔍 MCP检查员

MCP检查员 是测试和调试MCP服务器的重要开发工具。

运行检查器

npx @modelcontextprotocol/inspector -- go run ./cmd/stdio/main.go

检查员提供什么

  • 工具选项卡:列出并调用所有已注册的带有参数的工具
  • 资源选项卡:浏览和阅读资源和模板
  • 提示选项卡:查看和测试提示模板
  • 日志选项卡:请参阅客户端和服务器之间的JSON-RPC消息
  • 模式验证:验证工具输入/输出模式

调试提示

  1. 在连接IDE/客户端之前启动检查器
  2. 使用“日志”选项卡查看确切的请求/响应有效载荷
  3. 测试工具注释(ToolAnnotations)正确显示
  4. 验证是否显示进度通知 long_task
  5. 检查取样是否有效 ask_llm

📖 功能示例

带注释的工具

mcp.AddTool(server, &mcp.Tool{
    Name:        "hello",
    Title:       "Say Hello",
    Description: "A friendly greeting tool",
    Annotations: &mcp.ToolAnnotations{
        ReadOnlyHint: ptr(true),
    },
}, helloHandler)

func helloHandler(ctx context.Context, req *mcp.CallToolRequest, input helloInput) (*mcp.CallToolResult, any, error) {
    return &mcp.CallToolResult{
        Content: []mcp.Content{
            &mcp.TextContent{Text: fmt.Sprintf("Hello, %s!", input.Name)},
        },
    }, nil, nil
}

资源模板

server.AddResourceTemplate(&mcp.ResourceTemplate{
    Name:        "Personalized Greeting",
    URITemplate: "greeting://{name}",
    MIMEType:    "text/plain",
}, greetingHandler)

带有进度更新的工具

func longTaskHandler(ctx context.Context, req *mcp.CallToolRequest, input longTaskInput) (*mcp.CallToolResult, any, error) {
    progressToken := req.Params.GetProgressToken()
    
    for i := 0; i < 5; i++ {
        req.Session.NotifyProgress(ctx, &mcp.ProgressNotificationParams{
            ProgressToken: progressToken,
            Progress:      float64(i) / 5.0,
            Total:         1.0,
        })
        time.Sleep(time.Second)
    }
    
    return &mcp.CallToolResult{
        Content: []mcp.Content{&mcp.TextContent{Text: "Done!"}},
    }, nil, nil
}

带取样的工具

result, err := req.Session.CreateMessage(ctx, &mcp.CreateMessageParams{
    Messages: []*mcp.SamplingMessage{
        {Role: "user", Content: &mcp.TextContent{Text: prompt}},
    },
    MaxTokens: 100,
})

🔐 环境变量

复制 .env.example.env 并配置:

cp .env.example .env
变量描述默认值
PORTHTTP服务器端口3000

🤝 贡献

欢迎投稿!请确保您的更改与其他语言初学者保持功能对等。

📄 许可证

MIT许可证-请参阅 许可证 了解详情。

目录标签

目录标签

服务器模板GoVS Code资源管理Go开发本地部署MCP协议工具集成

支持客户端

VS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@modelcontextprotocol/inspector

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP