工具协议
协议层为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许可证-请参阅 许可证
