Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.25.0

require (
github.com/BurntSushi/toml v1.6.0
github.com/modelcontextprotocol/go-sdk v1.3.1
github.com/modelcontextprotocol/go-sdk v1.4.0
github.com/spf13/cobra v1.10.2
golang.org/x/term v0.38.0
)
Expand All @@ -25,7 +25,7 @@ require (
github.com/segmentio/encoding v0.5.3 // indirect
github.com/spf13/pflag v1.0.9 // indirect
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
golang.org/x/oauth2 v0.30.0 // indirect
golang.org/x/sys v0.39.0 // indirect
golang.org/x/oauth2 v0.34.0 // indirect
golang.org/x/sys v0.40.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
20 changes: 10 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo=
github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/jsonschema-go v0.4.2 h1:tmrUohrwoLZZS/P3x7ex0WAVknEkBZM46iALbcqoRA8=
Expand All @@ -15,8 +15,8 @@ github.com/itchyny/gojq v0.12.18 h1:gFGHyt/MLbG9n6dqnvlliiya2TaMMh6FFaR2b1H6Drc=
github.com/itchyny/gojq v0.12.18/go.mod h1:4hPoZ/3lN9fDL1D+aK7DY1f39XZpY9+1Xpjz8atrEkg=
github.com/itchyny/timefmt-go v0.1.7 h1:xyftit9Tbw+Dc/huSSPJaEmX1TVL8lw5vxjJLK4GMMA=
github.com/itchyny/timefmt-go v0.1.7/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI=
github.com/modelcontextprotocol/go-sdk v1.3.1 h1:TfqtNKOIWN4Z1oqmPAiWDC2Jq7K9OdJaooe0teoXASI=
github.com/modelcontextprotocol/go-sdk v1.3.1/go.mod h1:DgVX498dMD8UJlseK1S5i1T4tFz2fkBk4xogC3D15nw=
github.com/modelcontextprotocol/go-sdk v1.4.0 h1:u0kr8lbJc1oBcawK7Df+/ajNMpIDFE41OEPxdeTLOn8=
github.com/modelcontextprotocol/go-sdk v1.4.0/go.mod h1:Nxc2n+n/GdCebUaqCOhTetptS17SXXNu9IfNTaLDi1E=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
Expand All @@ -35,14 +35,14 @@ github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD
github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4=
github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw=
golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=
golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
Expand Down
7 changes: 5 additions & 2 deletions internal/mcp/http_transport.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ const (
HTTPTransportPlainJSON HTTPTransportType = "plain-json"
)

// MCPProtocolVersion is the MCP protocol version used in initialization requests.
const MCPProtocolVersion = "2024-11-05"

// requestIDCounter is used to generate unique request IDs for HTTP requests
var requestIDCounter uint64

Expand Down Expand Up @@ -376,11 +379,11 @@ func (c *Connection) initializeHTTPSession() (string, error) {

// Create initialize request with MCP protocol parameters
initParams := map[string]interface{}{
"protocolVersion": "2024-11-05",
"protocolVersion": MCPProtocolVersion,
"capabilities": map[string]interface{}{},
"clientInfo": map[string]interface{}{
"name": "awmg",
"version": "1.0.0",
"version": version.Get(),
},
}

Expand Down
33 changes: 0 additions & 33 deletions internal/server/transport.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package server

import (
"context"
"log"
"net/http"
"time"

Expand All @@ -12,37 +10,6 @@ import (

var logTransport = logger.New("server:transport")

// HTTPTransport wraps the SDK's HTTP transport
type HTTPTransport struct {
Addr string
}

// Start implements sdk.Transport interface
func (t *HTTPTransport) Start(ctx context.Context) error {
logTransport.Printf("Starting HTTP transport: addr=%s", t.Addr)
// The SDK will handle the actual HTTP server setup
// We just need to provide the address
log.Printf("HTTP transport ready on %s", t.Addr)
return nil
}

// Send implements sdk.Transport interface
func (t *HTTPTransport) Send(msg interface{}) error {
// Messages are sent via HTTP responses, handled by SDK
return nil
}

// Recv implements sdk.Transport interface
func (t *HTTPTransport) Recv() (interface{}, error) {
// Messages are received via HTTP requests, handled by SDK
return nil, nil
}

// Close implements sdk.Transport interface
func (t *HTTPTransport) Close() error {
return nil
}

// CreateHTTPServerForMCP creates an HTTP server that handles MCP over streamable HTTP transport
// If apiKey is provided, all requests except /health require authentication (spec 7.1)
func CreateHTTPServerForMCP(addr string, unifiedServer *UnifiedServer, apiKey string) *http.Server {
Expand Down
52 changes: 0 additions & 52 deletions internal/server/transport_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -468,55 +468,3 @@ func TestCreateHTTPServerForMCP_MCPEndpoint(t *testing.T) {
})
}
}

// TestHTTPTransport_Interface tests that HTTPTransport implements sdk.Transport interface
func TestHTTPTransport_Interface(t *testing.T) {
transport := &HTTPTransport{
Addr: ":8080",
}

// Test Start
ctx := context.Background()
err := transport.Start(ctx)
assert.NoError(t, err, "Start should not return error")

// Test Send
err = transport.Send("test message")
assert.NoError(t, err, "Send should not return error")

// Test Recv
msg, err := transport.Recv()
assert.NoError(t, err, "Recv should not return error")
assert.Nil(t, msg, "Recv should return nil message")

// Test Close
err = transport.Close()
assert.NoError(t, err, "Close should not return error")
}

// TestHTTPTransport_MultipleCalls tests HTTPTransport with multiple calls
func TestHTTPTransport_MultipleCalls(t *testing.T) {
transport := &HTTPTransport{
Addr: "localhost:9090",
}

ctx := context.Background()

// Multiple Start calls should not fail
for i := 0; i < 3; i++ {
err := transport.Start(ctx)
assert.NoError(t, err, "Start should not return error on call %d", i)
}

// Multiple Send calls should not fail
for i := 0; i < 3; i++ {
err := transport.Send(map[string]string{"test": "data"})
assert.NoError(t, err, "Send should not return error on call %d", i)
}

// Multiple Close calls should not fail
for i := 0; i < 3; i++ {
err := transport.Close()
assert.NoError(t, err, "Close should not return error on call %d", i)
}
}
2 changes: 1 addition & 1 deletion internal/server/unified.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
var logUnified = logger.New("server:unified")

// MCPProtocolVersion is the MCP protocol version supported by this gateway
const MCPProtocolVersion = "2024-11-05"
const MCPProtocolVersion = mcp.MCPProtocolVersion

// MCPGatewaySpecVersion is the MCP Gateway Specification version this implementation conforms to
const MCPGatewaySpecVersion = "1.8.0"
Expand Down
Loading