Reduce MCP token usage
This commit is contained in:
@@ -2,6 +2,7 @@ package mcp
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -43,6 +44,9 @@ func TestInitializeReturnsCapabilities(t *testing.T) {
|
||||
if !ok || instructions == "" {
|
||||
t.Fatalf("instructions missing or wrong type: %+v", parsed.Result)
|
||||
}
|
||||
if len(instructions) > 320 {
|
||||
t.Fatalf("instructions too verbose: %d chars", len(instructions))
|
||||
}
|
||||
}
|
||||
|
||||
func TestInitializedNotificationSuppressesResponse(t *testing.T) {
|
||||
@@ -74,6 +78,9 @@ func TestToolsListReturnsConcreteSchemas(t *testing.T) {
|
||||
if parsed.Error != nil {
|
||||
t.Fatalf("tools/list returned error: %+v", parsed.Error)
|
||||
}
|
||||
if len(resp) > 12000 {
|
||||
t.Fatalf("tools/list response too large: %d bytes", len(resp))
|
||||
}
|
||||
tools, ok := parsed.Result["tools"].([]interface{})
|
||||
if !ok {
|
||||
t.Fatalf("tools not array: %+v", parsed.Result)
|
||||
@@ -112,6 +119,27 @@ func TestToolsListReturnsConcreteSchemas(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestWrapToolResultDoesNotDuplicateStructuredJSON(t *testing.T) {
|
||||
result := ProcessOutput{
|
||||
Content: strings.Repeat("x", 1024),
|
||||
Mode: "stream",
|
||||
NewOffset: 2048,
|
||||
ContentBytes: 1024,
|
||||
}
|
||||
wrapped := wrapToolResult(result)
|
||||
if wrapped["structuredContent"] == nil {
|
||||
t.Fatalf("structuredContent missing: %#v", wrapped)
|
||||
}
|
||||
content := wrapped["content"].([]map[string]any)
|
||||
text := content[0]["text"].(string)
|
||||
if strings.Contains(text, result.Content) {
|
||||
t.Fatalf("content duplicated structured payload: %q", text)
|
||||
}
|
||||
if !strings.Contains(text, "stream output") {
|
||||
t.Fatalf("summary text should identify output, got %q", text)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPingReturnsEmptyObject(t *testing.T) {
|
||||
s := &Server{}
|
||||
req := []byte(`{"jsonrpc":"2.0","id":3,"method":"ping"}`)
|
||||
|
||||
Reference in New Issue
Block a user