[Example] Small fix on incorrect counter logic and improve prompt handling (#63)
The counter decrement in `get_value` was removed to prevent unintended changes to the counter state. Additionally, `get_prompt` was updated to parse and validate the `message` argument properly, ensuring better error handling and formatting. Co-authored-by: sandrohanea <me@sandro.rocks>
This commit is contained in:
parent
0a2f13a1f4
commit
50fadfb81b
1 changed files with 11 additions and 4 deletions
|
|
@ -49,8 +49,7 @@ impl Counter {
|
||||||
|
|
||||||
#[tool(description = "Get the current counter value")]
|
#[tool(description = "Get the current counter value")]
|
||||||
async fn get_value(&self) -> Result<CallToolResult, McpError> {
|
async fn get_value(&self) -> Result<CallToolResult, McpError> {
|
||||||
let mut counter = self.counter.lock().await;
|
let counter = self.counter.lock().await;
|
||||||
*counter -= 1;
|
|
||||||
Ok(CallToolResult::success(vec![Content::text(
|
Ok(CallToolResult::success(vec![Content::text(
|
||||||
counter.to_string(),
|
counter.to_string(),
|
||||||
)]))
|
)]))
|
||||||
|
|
@ -159,12 +158,20 @@ impl ServerHandler for Counter {
|
||||||
|
|
||||||
async fn get_prompt(
|
async fn get_prompt(
|
||||||
&self,
|
&self,
|
||||||
GetPromptRequestParam { name, arguments: _ }: GetPromptRequestParam,
|
GetPromptRequestParam { name, arguments }: GetPromptRequestParam,
|
||||||
_: RequestContext<RoleServer>,
|
_: RequestContext<RoleServer>,
|
||||||
) -> Result<GetPromptResult, McpError> {
|
) -> Result<GetPromptResult, McpError> {
|
||||||
match name.as_str() {
|
match name.as_str() {
|
||||||
"example_prompt" => {
|
"example_prompt" => {
|
||||||
let prompt = "This is an example prompt with your message here: '{message}'";
|
let message = arguments
|
||||||
|
.and_then(
|
||||||
|
|json|
|
||||||
|
json.get("message")
|
||||||
|
?.as_str()
|
||||||
|
.map(|s| s.to_string()))
|
||||||
|
.ok_or_else(|| McpError::invalid_params("No message provided to example_prompt", None))?;
|
||||||
|
|
||||||
|
let prompt = format!("This is an example prompt with your message here: '{message}'");
|
||||||
Ok(GetPromptResult {
|
Ok(GetPromptResult {
|
||||||
description: None,
|
description: None,
|
||||||
messages: vec![PromptMessage {
|
messages: vec![PromptMessage {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue