mcpField
M
Model Context Protocol (MCP) Implementation in Go

Model Context Protocol (MCP) Implementation in Go

本地服务
github.com/vishymakthal开发工具083 周前更新

关于 Model Context Protocol (MCP) Implementation in Go

这是 MCP 的 Go 实现,为与 MCP 服务通信的应用提供协议结构定义和客户端,并附有示例客户端及常用操作辅助方法。

主要功能

  1. 01类型安全的 Go MCP 结构
  2. 02JSON-RPC 消息结构
  3. 03客户端初始化与请求
  4. 04常见 MCP 操作辅助方法
  5. 05示例客户端

适用场景

  1. 01构建使用 MCP 的 Go 应用
  2. 02让 Go 客户端连接 MCP 服务

MCP 相关

项目实现 MCP 结构类型和 Go 客户端,可初始化与 MCP 服务的连接、发送请求并处理响应。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

使用 Go 实现 Model Context Protocol(MCP)

此代码库包含 Model Context Protocol(MCP) 的 Go 实现。MCP 是一种基于 JSON-RPC 的协议,用于在由大模型驱动的应用中实现客户端与服务端之间的交互。

目录

  • mcp/schema.go:MCP 架构的 Go 结构体定义,由 TypeScript 架构转换而来
  • mcp/client.go:用于与 MCP 服务交互的客户端实现
  • examples/mcp_client_example.go:展示如何使用客户端的简单示例

MCP 概述

Model Context Protocol(MCP)支持模型“宿主”(例如,大模型客户端或与大模型交互的系统)与“服务端”(提供上下文信息、工具、提示词或资源,以增强大模型能力的系统)之间的通信。

MCP 的主要特性包括:

  • 资源:宿主可以读取的文件、文档和其他数据
  • 工具:宿主可以代表模型调用的函数
  • 提示词:宿主可以使用的模板或预定义消息序列
  • 根目录:服务端可以操作的文件系统或数据根目录

开始使用

先决条件
  • Go 1.18 或更高版本
运行示例
# Set the MCP server URL (optional, defaults to http://localhost:3000/jsonrpc)
export MCP_SERVER_URL=http://your-mcp-server/jsonrpc

# Run the example
go run examples/mcp_client_example.go

使用 MCP 客户端

import (
    "fmt"
    
    "path/to/mcp"
)

func main() {
    // Create a new client
    client := mcp.NewClient("http://your-mcp-server/jsonrpc")
    
    // Initialize the client
    clientInfo := mcp.Implementation{
        Name:    "My MCP Client",
        Version: "1.0.0",
    }
    
    capabilities := mcp.ClientCapabilities{
        // Specify the capabilities your client supports
    }
    
    err := client.Initialize(clientInfo, capabilities)
    if err != nil {
        // Handle error
    }
    
    // Now you can use various client methods:
    
    // List resources
    resources, err := client.ListResources("")
    
    // Read a resource
    resource, err := client.ReadResource("resource-uri")
    
    // Call a tool
    result, err := client.CallTool("tool-name", map[string]interface{}{
        "argument1": "value1",
        "argument2": 123,
    })
    
    // Get a prompt
    prompt, err := client.GetPrompt("prompt-name", map[string]string{
        "argName": "argValue",
    })
}

实现细节

架构

mcp/schema.go 中的 Go 架构定义为 MCP 消息提供了类型安全的结构,其中包括:

  • JSON-RPC 协议结构
  • 资源、提示词和工具定义
  • 文本、图像和嵌入式资源的内容结构
  • 用于通过 json.RawMessage 处理多态类型的辅助函数
客户端

mcp/client.go 中的客户端实现提供了以下方法:

  • 初始化与 MCP 服务的连接
  • 发送请求并处理响应
  • 将 Go 结构体转换为 JSON-RPC 消息
  • 用于常见 MCP 操作的辅助方法

贡献

欢迎贡献!以下是一些贡献方式:

  • 实现服务端
  • 为客户端添加 WebSocket 支持
  • 改进错误处理
  • 添加测试
  • 记录更多使用场景

许可证

本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。

参考资料

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。