
Creating an MCP Server in Go and Serving it with Docker

2025.01.03
4
ShellLLM工具扩展网页内容获取开发效率
该项目是一个基于Go语言开发的MCP(Model Context Protocol)服务器,通过Docker容器化部署,旨在为大型语言模型(LLM)提供工具调用能力。核心功能包括定义工具列表、执行工具调用(如通过curl获取网页内容),并通过标准输入输出(stdio)与LLM交互。适用于需要扩展LLM功能(如网页内容获取)的AI应用开发场景。
View on GitHub
Overview
基本能力
产品定位
- 为LLM提供可扩展的工具调用接口
- 简化AI应用中功能扩展的开发流程
核心功能
- 工具管理:
- 定义工具(如
use_curl
工具)及其参数规范 - 支持工具执行结果返回(文本/错误)
- 协议支持:
- 实现MCP协议标准输入输出交互
- 容器化:
- 通过Docker镜像封装服务及依赖(含curl)
适用场景
- LLM需要实时获取网页内容的场景
- 快速构建AI应用的功能扩展模块
- 需要与
mcphost
等MCP客户端集成的开发环境
工具列表
use_curl
:- 能力:通过curl获取指定URL的网页内容
- 参数:必填的
url
字符串参数
常见问题
- 工具调用错误时返回标准错误格式
- 需确保Docker环境中包含curl工具
使用教程
使用依赖
- 安装Go 1.23.4+:
bash # Linux示例 wget https://golang.org/dl/go1.23.4.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
- 安装Docker:
bash # Ubuntu示例 sudo apt-get update && sudo apt-get install docker.io
安装教程
- 构建Docker镜像:
bash docker build -t mcp-curl .
- 配置
mcphost
(需创建mcp.json):json { "mcpServers": { "mcp-curl-with-docker": { "command": "docker", "args": ["run", "--rm", "-i", "mcp-curl"] } } }
调试方式
- 启动服务测试:
bash docker run -it --rm mcp-curl
- 通过
mcphost
验证工具列表:bash mcphost --config ./mcp.json --model ollama:qwen2.5-coder:14b # 在交互界面输入`/tools`查看可用工具