协议层工具

提供MCP、A2A和ACP集成的传输、线路格式和协议原语的协议层工具,适用于服务发现、内容管理和任务生命周期管理等场景。

  • by jonwraymond
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 jonwraymond/toolprotocol

使用说明

工具协议

协议层为MCP提供传输、有线格式和协议原语, A2A和ACP集成。此仓库是纯Go:不执行网络I/O 在传输实现之外。

部分 孔径堆栈 生态系统。

安装

go get github.com/jonwraymond/toolprotocol@latest

包裹

包装 用途
content 统一的内容部分(文本、图像、音频、文件、资源)
discover 服务发现+能力协商
transport 传输接口(stdio、SSE、流式HTTP)
wire 协议线编码(MCP、A2A、ACP)
stream 进度/部分/完成的流媒体事件
session 客户端会话存储+上下文助手
task 长运行任务生命周期+订阅
resource MCP资源注册表+订阅
prompt 提示模板+注册表
elicit 用户输入启发(文本/确认/选择/表单)

快速开始

import (
  "context"

  "github.com/jonwraymond/toolprotocol/content"
  "github.com/jonwraymond/toolprotocol/transport"
  "github.com/jonwraymond/toolprotocol/wire"
)

type server struct{}

func (s *server) ServeTransport(ctx context.Context, t transport.Transport) error {
  return nil
}

ctx := context.Background()

// Build content parts
builder := content.NewBuilder()
parts := []content.Content{
  builder.Text("hello"),
}

// Encode a request using MCP wire format
codec := wire.NewMCP()
payload, err := codec.EncodeRequest(ctx, &wire.Request{
  ID:        "1",
  Method:    "tools/call",
  ToolID:    "echo",
  Arguments: map[string]any{"message": "hello"},
  Meta:      map[string]any{"content": parts},
})
_ = payload
_ = err

// Serve over a transport
tp, _ := transport.New("stdio", nil)
_ = tp.Serve(ctx, &server{})

文档

请参阅 文档 目录和聚合文档站点 ai-tools-stack.

许可证

MIT许可证-请参阅 许可证