模型上下文协议服务器

一个基于Go语言实现的模型上下文协议服务器,提供文本转换工具、自定义工具和资源注册功能,适用于开发环境中的工具扩展和资源管理。

  • by jgaribaldi
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 jgaribaldi/mcp-server

使用说明

Go中的MCP服务器

Go 1.22.1中的模型上下文协议(MCP)服务器实现。

特性

1.回声工具-文本转换

调用内置的回显工具来转换短信:

参数:

  • message (必填):要转换的文本(1-1000个字符)
  • prefix (可选):在消息前添加文本(最多100个字符)
  • suffix (可选):消息后添加的文本(最多100个字符)
  • uppercase (可选):将结果转换为大写(布尔值)

例子: 将前缀为“>>>”和后缀为“<<<”的“hello”转换为大写返回值“>>>hello<<<

2.注册新工具

通过实现注册自定义工具 ToolFactory 接口:

所需方法:

  • GetName():工具标识符
  • GetDescription():工具说明
  • GetVersion():工具版本
  • GetCapabilities():工具功能(最多20个)
  • Create(ctx, config):创建工具实例
  • Validate(config):验证工具配置

您的工具必须执行 mcp.Tool 与Name、Description、Parameters和Handler方法的接口。

3.注册新资源

通过实现来注册自定义资源 ResourceFactory 接口:

支持的URI方案: file://,config://,api://,custom://,http://,https://,https://

所需方法:

  • GetURI():资源URI
  • GetName():资源名称
  • GetDescription():资源描述
  • GetMimeType():内容MIME类型
  • Create(ctx, config):创建资源实例
  • Validate(config):验证资源配置

资源支持缓存、访问控制和生命周期管理。

4.发现端点

在不访问源代码的情况下查询可用的工具和资源:

GET/工具 -列出所有已注册的工具:

curl http://localhost:3000/tools

GET/tools/{name} -获取详细的工具信息:

curl http://localhost:3000/tools/echo

GET/资源 -列出所有已注册的资源:

curl http://localhost:3000/resources

快速开始

先决条件

  • 转到1.22.1或更高版本
  • Git

安装

  1. 克隆存储库:

    git clone <repository-url>
    cd mcp-server
    
  2. 构建服务器:

    go build -o mcp-server ./cmd/mcp-server
    
  3. 运行服务器:

    ./mcp-server
    

配置

可以使用环境变量配置服务器:

  • MCP_SERVER_HOST:服务器主机(默认:“localhost”)
  • MCP_SERVER_PORT:服务器端口(默认值:3000)
  • MCP_LOG_LEVEL:日志级别(默认值:“info”)
  • MCP_LOG_FORMAT:日志格式-“json”或“text”(默认:“json”)
  • MCP_SERVICE_NAME:日志记录服务名称(默认:“mcp-server”)
  • MCP_VERSION:日志记录版本(默认:“dev”)

例子:

export MCP_SERVER_HOST=0.0.0.0
export MCP_SERVER_PORT=8080
export MCP_LOG_LEVEL=debug
./mcp-server

发展

建筑

# Build for development
go build -o mcp-server ./cmd/mcp-server

# Build for production
go build -ldflags="-w -s" -o mcp-server ./cmd/mcp-server

测试

# Run tests
go test ./...

# Run tests with coverage
go test -cover ./...

代码质量

# Format code
go fmt ./...

# Vet code
go vet ./...

项目结构

此项目遵循标准Go项目布局:

  • cmd/:主要应用
  • internal/:私有应用程序代码
  • pkg/:可供外部应用程序使用的库代码
  • configs/:配置文件
  • deployments/:部署配置
  • scripts/:构建和部署脚本
  • tests/:集成测试
  • docs/:文件
  • specs/:实施规范

贡献

请阅读 specs/ 在进行更改之前,请先访问目录。每个更改都应该有一个相应的规范,概述实现细节。

许可证

待定