一、为什么选择在香港部署 MCP 服务?
香港拥有优越的网络基础设施,连接中国大陆与亚太地区的网络高速通畅,对于需要低延迟访问外部 API 的应用(如 IP 位置解析服务)尤为重要。通过选择香港云服务器或香港独立服务器,企业不仅可以获得更高的网络稳定性,还能有效规避地域访问限制,提升服务响应效率。
二、项目简介:mcp-ip-geo 服务
本项目基于 ThinkInAIXYZ/go-mcp
库实现了一个 IP 地理信息查询的 MCP 服务器,具备轻量、可扩展、易部署等优势,适合中小企业部署于香港VPS环境中以实现快速上线。
项目结构:
cmd/mcp-ip-geo # 项目入口
internal/domain # 数据结构定义
internal/server # 服务器逻辑实现
internal/service # 第三方 API 调用逻辑
internal/tools # 工具功能模块
三、核心功能实现解析
1. IP 查询服务逻辑
以下为查询 IP 地理位置的服务模块核心代码:
func (s *IpApiService) GetLocation(ctx context.Context, ip string) (*domain.IpApiResponse, error) {
var resp domain.IpApiResponse
err := s.client.Get(fmt.Sprintf("%s/json/%s", s.host, ip)).DoAndParse(ctx, &resp)
if err != nil {
return nil, err
}
return &resp, nil
}
该方法通过调用 ip-api.com
的接口获取目标 IP 的国家、省份、城市等信息,并封装为标准响应体。通过合理的超时控制和错误处理机制,确保查询稳定可靠。
2. 工具注册机制设计
为了提升服务可维护性,系统通过工具注册模块集中管理功能扩展:
func GetToolFuncList() []ToolFunc {
return []ToolFunc{
SingleIpParser,
}
}
开发者可轻松接入多个工具方法,如多 IP 查询、ASN 信息获取等。
3. MCP 服务启动逻辑
func Run(address string) error {
...
s, err := server.NewServer(ts)
...
for _, tool := range tools.GetToolFuncList() {
s.RegisterTool(tool())
}
return s.Run()
}
通过注册 tools
工具方法,服务端启动后即可自动加载所有扩展功能,便于运维与版本控制。
四、部署与运行指南
1. 本地构建
适合快速开发测试:
go build -o mcp-ip-geo ./cmd/mcp-ip-geo
2. Docker 方式部署(推荐部署于香港服务器)
docker build -t mcp-ip-geo-server .
docker run -d -p 8000:8000 mcp-ip-geo-server
若使用香港云服务器进行部署,可实现全球低延迟访问,特别适用于国际业务场景。
五、MCP 接入方式
本地可执行文件模式
{
"mcpServers": {
"mcp-ip-geo": {
"command": "/path/to/mcp-ip-geo"
}
}
}
http 接口模式
{
"mcpServers": {
"mcp-ip-geo": {
"url": "http://host:port/sse"
}
}
}
通过 SSE 长连接方式,可实现持久化的数据交互能力,推荐部署于带宽充足的香港独立服务器中。
六、总结
通过本案例我们了解到,基于 Go 和 go-mcp
库可快速构建一个功能完善、易部署的 IP 查询 MCP 服务。若您计划将此类服务上线运营,推荐选用高稳定性、高带宽的香港服务器进行部署,确保全球范围内的稳定访问体验。
选择我们获取适合部署 MCP 服务的香港主机解决方案,包括香港vps、香港云服务器与香港独立服务器等产品。