作者:陈明勇,一名热爱技术、乐于分享的开发者,同时也是开源爱好者。
专注于分享
Go语言相关的技术知识,同时也会深入探讨AI领域的前沿技术。成功的路上并不拥挤,有没有兴趣结个伴?
Go开源库代表作:go-mongox 、go-optioner。个人网站:https://chenmingyong.cn
文章持续更新,如果本文能让您有所收获,欢迎关注本号。
微信阅读可搜《程序员陈明勇》。
该文章已被 Model Context Protocol(MCP) 中文教程讲解 收录,欢迎 star 收藏。
📝 前言
随着 MCP 的快速普及和广泛应用,MCP 服务器也层出不穷。大多数开发者使用的 MCP 服务器开发库是官方提供的 typescript-sdk,而作为 Go 开发者,我们也可以借助优秀的第三方库去开发 MCP 服务器,例如 ThinkInAIXYZ/go-mcp。
本文将详细介绍如何在 Go 语言中使用 go-mcp 库来开发一个查询 IP 信息的 MCP 服务器。
准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

🌐 mcp-ip-geo 服务器
mcp-ip-geo 是一个用于查询 IP 信息的 MCP 服务器,项目已开源,仓库地址:mcp-ip-geo。
📁 目录结构说明
├─cmd
│ └─mcp-ip-geo
└─internal
├─domain
├─server
├─service
└─tools
cmd/mcp-ip-geo:应用的启动入口目录,包含如main.go启动文件。internal/domain:定义项目中的核心数据结构,例如IP API的响应体等。internal/server:MCP服务器的核心逻辑实现。internal/service:对接第三方服务的实现,如调用IP解析API。internal/tools:MCP工具的具体实现,支持灵活扩展和注册。
🔍 查询 IP 信息功能实现
代码位于 service 包中,通过 ip-api.com 提供的接口获取 IP 地理位置信息,具体实现如下:
package service
import (
"context"
"fmt"
"github.com/chenmingyong0423/mcp-ip-geo/internal/domain"
"net/http"
"time"
httpchain "github.com/chenmingyong0423/go-http-chain"
)
func NewIpApiService() *IpApiService {
return &IpApiService{
host: "http://ip-api.com",
client: httpchain.NewWithClient(&http.Client{
Timeout: time.Second * 10,
}),
}
}
type IIpApiService interface {
GetLocation(ctx context.Context, ip string) (*domain.IpApiResponse, error)
}
var _ IIpApiService = (*IpApiService)(nil)
type IpApiService struct {
host string
client *httpchain.Client
}
func (s *IpApiService) GetLocation(ctx context.Context, ip string) (*domain

最低0.47元/天 解锁文章
1174

被折叠的 条评论
为什么被折叠?



