feat(rmcp-conversion): mcp server conversions#4488
Conversation
|
I think want to chase down regressions that the other crate seems to have brought first |
c5105b7 to
d739415
Compare
171fbfa to
a448c1a
Compare
|
Need to bring back the input schemas in Autovisualizer, and look for any other issues before merge |
885666d to
0cf43d1
Compare
| @@ -1,23 +0,0 @@ | |||
| [package] | |||
There was a problem hiding this comment.
delete delete delete 💯
| @@ -1,426 +1,132 @@ | |||
| use base64::Engine; | |||
| use etcetera::{choose_app_strategy, AppStrategy}; | |||
There was a problem hiding this comment.
computercontroller looks good
There was a problem hiding this comment.
Tested on UI:
- play classical music in safari, worked
- max screen brightness, didnt work on the released branch nor this
| @@ -1,129 +1,122 @@ | |||
| use async_trait::async_trait; | |||
| use etcetera::{choose_app_strategy, AppStrategy}; | |||
| @@ -1,57 +1,59 @@ | |||
| use anyhow::Result; | |||
| use base64::{engine::general_purpose::STANDARD, Engine as _}; | ||
| use etcetera::{choose_app_strategy, AppStrategy}; | ||
| use indoc::{formatdoc, indoc}; | ||
| use indoc::formatdoc; |
There was a problem hiding this comment.
Not sure if it is an regression.
Given this prompt
1. The hierarchical breakdown of revenue across our nested product categories
2. How our performance metrics compare across all four quarters
3. The customer flow through our sales funnel process
Here's the data:
- Electronics: Q1: $150k, Q2: $180k, Q3: $220k, Q4: $195k
- Clothing: Q1: $120k, Q2: $140k, Q3: $160k, Q4: $175k
- Home & Garden: Q1: $80k, Q2: $95k, Q3: $110k, Q4: $125k```
There was a problem hiding this comment.
same behaviour on main. Good to go.
There was a problem hiding this comment.
unrelated to this PR - but worth looking for any console errors in electron client, as the html can likely be tweaked
There was a problem hiding this comment.
(and the prompts have changed enough that there could be some effect there)
angelahning
left a comment
There was a problem hiding this comment.
Looks good. Works well on the UI (I didn't test on CLI).
michaelneale
left a comment
There was a problem hiding this comment.
Looks like a lot of tool descriptions are truncated, which will hurt performance (I wonder if we saw similar thing with developer one, but seems ok).
did some inline comments.
I think the tool macro like:
#[tool(
name = "web_scrape",
description = "Fetch and save content from a web page. The content can be saved as text, json, or binary files."
)]Can be more like:
#[tool(
name = "web_scrape",
description = r#"Fetch and save content from a web page.
The content can be saved as text, json, or binary files.
and the rest here...
including examples
"#
)]this would make it perform like original, and also probably make the diffs managable, at the moment github hides it away as so much has changed (likely these)
| Example: | ||
| { | ||
| "type": "line", | ||
| "title": "Monthly Sales", |
There was a problem hiding this comment.
looks like a lot of this doc/prompt was lost, it is hard to tell as everything is on one line now, but I can't find this anywhere, which will likely stop it working.
| - nodes: Array of objects with 'name' and optional 'category' properties | ||
| - links: Array of objects with 'source', 'target', and 'value' properties | ||
|
|
||
| Example: |
There was a problem hiding this comment.
this is missing from the new tool description
| "#}, | ||
| object!({ | ||
| "type": "object", | ||
| "required": ["data"], |
There was a problem hiding this comment.
I assume this is now done by the macro?
There was a problem hiding this comment.
yes. I tried to bake this into the schema of the input args itself. will validate in the inspector it makes it into the inputSchema before merge
| - labels: Array of strings representing the dimensions/axes | ||
| - datasets: Array of dataset objects with 'label' and 'data' properties | ||
|
|
||
| Example: |
| let web_scrape_tool = Tool::new( | ||
| "web_scrape", | ||
| indoc! {r#" | ||
| Fetch and save content from a web page. The content can be saved as: |
|
can we ensure we have all the tool descriptions intact like before, with examples in the tool macros (which I think can be multiline?) |
7ae90d9 to
fa686b8
Compare
|
I think once the prompts are back in place, probably good to go. I saw some changes to the developer mcp - which seemed more rust style related - deliberate? |
6b782cb to
009db68
Compare
|
Need to find a way to bring back all the os specific tool descriptions while also using rmcp instead of the old mcp-server construct which modeled things as a The macros in rmcp, while nice, make it hard to provide os specific descriptions. Will find a good pattern for this. |
|
@alexhancock yeah fair point - as sometimes we want to programmatically form the set of tools available, either at load time or even dynamically |
009db68 to
fab29c8
Compare
fab29c8 to
2478a0a
Compare
|
Breaking this apart into separate changes that are easier to verify are totally correct Here is the first one #4664 |

Remove the mcp-server crate, and update all internally implemented mcp servers to use https://github.com/modelcontextprotocol/rust-sdk's way of doing things
Following up on @angelahning's excellent change for the developer server here #4297. It's just more of the same!
Also removes
crates/mcp-server