Creating an MCP Server in Go and Serving it with Docker

Creating an MCP Server in Go and Serving it with Docker

site icon
2025.01.03 4
ShellLLM工具扩展网页内容获取开发效率
该项目是一个基于Go语言开发的MCP(Model Context Protocol)服务器,通过Docker容器化部署,旨在为大型语言模型(LLM)提供工具调用能力。核心功能包括定义工具列表、执行工具调用(如通过curl获取网页内容),并通过标准输入输出(stdio)与LLM交互。适用于需要扩展LLM功能(如网页内容获取)的AI应用开发场景。
View on GitHub

Overview

基本能力

产品定位

  • 为LLM提供可扩展的工具调用接口
  • 简化AI应用中功能扩展的开发流程

核心功能

  1. 工具管理
  2. 定义工具(如use_curl工具)及其参数规范
  3. 支持工具执行结果返回(文本/错误)
  4. 协议支持
  5. 实现MCP协议标准输入输出交互
  6. 容器化
  7. 通过Docker镜像封装服务及依赖(含curl)

适用场景

  • LLM需要实时获取网页内容的场景
  • 快速构建AI应用的功能扩展模块
  • 需要与mcphost等MCP客户端集成的开发环境

工具列表

  • use_curl
  • 能力:通过curl获取指定URL的网页内容
  • 参数:必填的url字符串参数

常见问题

  • 工具调用错误时返回标准错误格式
  • 需确保Docker环境中包含curl工具

使用教程

使用依赖

  1. 安装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
  2. 安装Docker: bash # Ubuntu示例 sudo apt-get update && sudo apt-get install docker.io

安装教程

  1. 构建Docker镜像: bash docker build -t mcp-curl .
  2. 配置mcphost(需创建mcp.json): json { "mcpServers": { "mcp-curl-with-docker": { "command": "docker", "args": ["run", "--rm", "-i", "mcp-curl"] } } }

调试方式

  1. 启动服务测试: bash docker run -it --rm mcp-curl
  2. 通过mcphost验证工具列表: bash mcphost --config ./mcp.json --model ollama:qwen2.5-coder:14b # 在交互界面输入`/tools`查看可用工具

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。