versions
This commit is contained in:
parent
4ea5615ef8
commit
1216210150
|
@ -74,6 +74,7 @@ cremote <command> [options]
|
||||||
|
|
||||||
### Commands
|
### Commands
|
||||||
|
|
||||||
|
- `version`: Show version information for CLI and daemon
|
||||||
- `open-tab`: Open a new tab and return its ID
|
- `open-tab`: Open a new tab and return its ID
|
||||||
- `load-url`: Load a URL in a tab
|
- `load-url`: Load a URL in a tab
|
||||||
- `fill-form`: Fill a form field with a value
|
- `fill-form`: Fill a form field with a value
|
||||||
|
|
|
@ -58,6 +58,25 @@ func (c *Client) CheckStatus() (bool, error) {
|
||||||
return response.Success, nil
|
return response.Success, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetVersion gets the daemon version
|
||||||
|
func (c *Client) GetVersion() (string, error) {
|
||||||
|
response, err := c.SendCommand("version", map[string]string{})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !response.Success {
|
||||||
|
return "", fmt.Errorf("failed to get version: %s", response.Error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// The version should be in the Data field as a string
|
||||||
|
if version, ok := response.Data.(string); ok {
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", fmt.Errorf("unexpected version response format")
|
||||||
|
}
|
||||||
|
|
||||||
// TabInfo contains information about a tab
|
// TabInfo contains information about a tab
|
||||||
type TabInfo struct {
|
type TabInfo struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
|
|
|
@ -21,6 +21,8 @@ import (
|
||||||
"github.com/go-rod/rod/lib/proto"
|
"github.com/go-rod/rod/lib/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const Version = "2.0.0"
|
||||||
|
|
||||||
// Daemon is the main server that manages browser connections
|
// Daemon is the main server that manages browser connections
|
||||||
type Daemon struct {
|
type Daemon struct {
|
||||||
browser *rod.Browser
|
browser *rod.Browser
|
||||||
|
@ -226,6 +228,12 @@ func (d *Daemon) handleCommand(w http.ResponseWriter, r *http.Request) {
|
||||||
var response Response
|
var response Response
|
||||||
|
|
||||||
switch cmd.Action {
|
switch cmd.Action {
|
||||||
|
case "version":
|
||||||
|
response = Response{
|
||||||
|
Success: true,
|
||||||
|
Data: Version,
|
||||||
|
}
|
||||||
|
|
||||||
case "open-tab":
|
case "open-tab":
|
||||||
timeoutStr := cmd.Params["timeout"]
|
timeoutStr := cmd.Params["timeout"]
|
||||||
|
|
||||||
|
|
16
main.go
16
main.go
|
@ -9,6 +9,8 @@ import (
|
||||||
"git.teamworkapps.com/shortcut/cremote/client"
|
"git.teamworkapps.com/shortcut/cremote/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const Version = "2.0.0"
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// Global flags
|
// Global flags
|
||||||
daemonHost = flag.String("host", "localhost", "Daemon host")
|
daemonHost = flag.String("host", "localhost", "Daemon host")
|
||||||
|
@ -149,6 +151,19 @@ func main() {
|
||||||
|
|
||||||
// Parse the appropriate subcommand
|
// Parse the appropriate subcommand
|
||||||
switch os.Args[1] {
|
switch os.Args[1] {
|
||||||
|
case "version":
|
||||||
|
fmt.Printf("cremote CLI version %s\n", Version)
|
||||||
|
|
||||||
|
// Also get daemon version if possible
|
||||||
|
c := client.NewClient("localhost", 8989)
|
||||||
|
daemonVersion, err := c.GetVersion()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Daemon: Unable to connect (%v)\n", err)
|
||||||
|
} else {
|
||||||
|
fmt.Printf("Daemon version %s\n", daemonVersion)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
case "open-tab":
|
case "open-tab":
|
||||||
openTabCmd.Parse(os.Args[2:])
|
openTabCmd.Parse(os.Args[2:])
|
||||||
|
|
||||||
|
@ -487,6 +502,7 @@ func main() {
|
||||||
func printUsage() {
|
func printUsage() {
|
||||||
fmt.Println("Usage: cremote <command> [options]")
|
fmt.Println("Usage: cremote <command> [options]")
|
||||||
fmt.Println("Commands:")
|
fmt.Println("Commands:")
|
||||||
|
fmt.Println(" version Show version information for CLI and daemon")
|
||||||
fmt.Println(" open-tab Open a new tab and return its ID")
|
fmt.Println(" open-tab Open a new tab and return its ID")
|
||||||
fmt.Println(" load-url Load a URL in a tab")
|
fmt.Println(" load-url Load a URL in a tab")
|
||||||
fmt.Println(" fill-form Fill a form field with a value")
|
fmt.Println(" fill-form Fill a form field with a value")
|
||||||
|
|
|
@ -32,6 +32,20 @@ This is a Model Context Protocol (MCP) server that exposes cremote's web automat
|
||||||
|
|
||||||
## Available Tools (27 Total)
|
## Available Tools (27 Total)
|
||||||
|
|
||||||
|
### Version Information
|
||||||
|
|
||||||
|
#### `version_cremotemcp`
|
||||||
|
Get version information for MCP server and daemon.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "version_cremotemcp",
|
||||||
|
"arguments": {}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns version information for both the MCP server and the connected daemon.
|
||||||
|
|
||||||
### Core Web Automation Tools (10 tools)
|
### Core Web Automation Tools (10 tools)
|
||||||
|
|
||||||
#### 1. `web_navigate_cremotemcp`
|
#### 1. `web_navigate_cremotemcp`
|
||||||
|
|
BIN
mcp/cremote-mcp
BIN
mcp/cremote-mcp
Binary file not shown.
26
mcp/main.go
26
mcp/main.go
|
@ -14,6 +14,8 @@ import (
|
||||||
"github.com/mark3labs/mcp-go/server"
|
"github.com/mark3labs/mcp-go/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const Version = "2.0.0"
|
||||||
|
|
||||||
// CremoteServer wraps the cremote client for MCP
|
// CremoteServer wraps the cremote client for MCP
|
||||||
type CremoteServer struct {
|
type CremoteServer struct {
|
||||||
client *client.Client
|
client *client.Client
|
||||||
|
@ -80,6 +82,30 @@ func main() {
|
||||||
// Create MCP server
|
// Create MCP server
|
||||||
mcpServer := server.NewMCPServer("cremote-mcp", "2.0.0")
|
mcpServer := server.NewMCPServer("cremote-mcp", "2.0.0")
|
||||||
|
|
||||||
|
// Register version tool
|
||||||
|
mcpServer.AddTool(mcp.Tool{
|
||||||
|
Name: "version_cremotemcp",
|
||||||
|
Description: "Get version information for MCP server and daemon",
|
||||||
|
InputSchema: mcp.ToolInputSchema{
|
||||||
|
Type: "object",
|
||||||
|
Properties: map[string]any{},
|
||||||
|
Required: []string{},
|
||||||
|
},
|
||||||
|
}, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
||||||
|
// Get daemon version
|
||||||
|
daemonVersion, err := cremoteServer.client.GetVersion()
|
||||||
|
if err != nil {
|
||||||
|
daemonVersion = fmt.Sprintf("Unable to connect: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &mcp.CallToolResult{
|
||||||
|
Content: []mcp.Content{
|
||||||
|
mcp.NewTextContent(fmt.Sprintf("MCP Server version: %s\nDaemon version: %s", Version, daemonVersion)),
|
||||||
|
},
|
||||||
|
IsError: false,
|
||||||
|
}, nil
|
||||||
|
})
|
||||||
|
|
||||||
// Register web_navigate tool
|
// Register web_navigate tool
|
||||||
mcpServer.AddTool(mcp.Tool{
|
mcpServer.AddTool(mcp.Tool{
|
||||||
Name: "web_navigate",
|
Name: "web_navigate",
|
||||||
|
|
Loading…
Reference in New Issue