feat: autovisualiser of structured data with mcp-ui (#4153)

This commit is contained in:
Michael Neale
2025-08-25 10:42:11 +10:00
committed by GitHub
parent cfa0bed294
commit 3e1557b925
21 changed files with 4378 additions and 2 deletions
@@ -32,6 +32,7 @@ fn get_display_name(extension_id: &str) -> String {
match extension_id {
"developer" => "Developer Tools".to_string(),
"computercontroller" => "Computer Controller".to_string(),
"autovisualiser" => "Auto Visualiser".to_string(),
"memory" => "Memory".to_string(),
"tutorial" => "Tutorial".to_string(),
"jetbrains" => "JetBrains".to_string(),
@@ -747,6 +748,11 @@ pub fn configure_extensions_dialog() -> Result<(), Box<dyn Error>> {
// TODO we'll want a place to collect all these options, maybe just an enum in goose-mcp
"built-in" => {
let extension = cliclack::select("Which built-in extension would you like to enable?")
.item(
"autovisualiser",
"Auto Visualizer",
"Data visualization and UI generation tools",
)
.item(
"computercontroller",
"Computer Controller",
+4 -1
View File
@@ -1,5 +1,7 @@
use anyhow::{anyhow, Result};
use goose_mcp::{ComputerControllerRouter, DeveloperRouter, MemoryRouter, TutorialRouter};
use goose_mcp::{
AutoVisualiserRouter, ComputerControllerRouter, DeveloperRouter, MemoryRouter, TutorialRouter,
};
use mcp_server::router::RouterService;
use mcp_server::{BoundedService, ByteTransport, Server};
use tokio::io::{stdin, stdout};
@@ -28,6 +30,7 @@ pub async fn run_server(name: &str) -> Result<()> {
let router: Option<Box<dyn BoundedService>> = match name {
"developer" => Some(Box::new(RouterService(DeveloperRouter::new()))),
"computercontroller" => Some(Box::new(RouterService(ComputerControllerRouter::new()))),
"autovisualiser" => Some(Box::new(RouterService(AutoVisualiserRouter::new()))),
"memory" => Some(Box::new(RouterService(MemoryRouter::new()))),
"tutorial" => Some(Box::new(RouterService(TutorialRouter::new()))),
_ => None,