-
Notifications
You must be signed in to change notification settings - Fork 2.6k
feat(rmcp-conversion): mcp server conversions #4488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete delete delete 💯
| @@ -1,426 +1,132 @@ | |||
| use base64::Engine; | |||
| use etcetera::{choose_app_strategy, AppStrategy}; | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
computercontroller looks good
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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}; | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
memory looks good
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tesed on ui
| @@ -1,57 +1,59 @@ | |||
| use anyhow::Result; | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
| 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same behaviour on main. Good to go.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(and the prompts have changed enough that there could be some effect there)
angelahning
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Works well on the UI (I didn't test on CLI).
michaelneale
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is missing from the new tool description
| "#}, | ||
| object!({ | ||
| "type": "object", | ||
| "required": ["data"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I assume this is now done by the macro?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is also missing
| let web_scrape_tool = Tool::new( | ||
| "web_scrape", | ||
| indoc! {r#" | ||
| Fetch and save content from a web page. The content can be saved as: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing.
|
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