shenyu-plugin/shenyu-plugin-mcp-server/MCP_TOOL_EXAMPLES_EN.md
This document provides comprehensive examples of tool configurations for the Shenyu MCP Server Plugin based on real interfaces from the shenyu-examples-http project, covering different HTTP request methods, parameter types, and configuration patterns.
{
"name": "hello",
"parameters": [],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/shenyu/client/hello\",\"method\":\"GET\",\"headers\":[],\"timeout\":30000},\"argsPosition\":{}}",
"description": "Shenyu client hello endpoint"
}
{
"name": "hi",
"parameters": [
{
"name": "name",
"type": "string",
"description": "User name",
"required": false
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/shenyu/client/hi\",\"method\":\"GET\",\"headers\":[],\"timeout\":30000,\"queryParams\":[{\"key\":\"name\",\"value\":\"${name}\"}]},\"argsPosition\":{\"name\":\"query\"}}",
"description": "Shenyu client hi endpoint with parameter"
}
{
"name": "findByUserId",
"parameters": [
{
"name": "userId",
"type": "string",
"description": "User ID",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/findByUserId\",\"method\":\"GET\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000,\"queryParams\":[{\"key\":\"userId\",\"value\":\"${userId}\"}]},\"argsPosition\":{\"userId\":\"query\"}}",
"description": "Find user information by user ID"
}
{
"name": "findByUserIdName",
"parameters": [
{
"name": "userId",
"type": "string",
"description": "User ID",
"required": true
},
{
"name": "name",
"type": "string",
"description": "User name",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/findByUserIdName\",\"method\":\"GET\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000,\"queryParams\":[{\"key\":\"userId\",\"value\":\"${userId}\"},{\"key\":\"name\",\"value\":\"${name}\"}]},\"argsPosition\":{\"userId\":\"query\",\"name\":\"query\"}}",
"description": "Find user by ID and name"
}
{
"name": "findByPage",
"parameters": [
{
"name": "keyword",
"type": "string",
"description": "Search keyword",
"required": false
},
{
"name": "page",
"type": "integer",
"description": "Page number",
"required": false
},
{
"name": "pageSize",
"type": "integer",
"description": "Page size",
"required": false
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/findByPage\",\"method\":\"GET\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000,\"queryParams\":[{\"key\":\"keyword\",\"value\":\"${keyword}\"},{\"key\":\"page\",\"value\":\"${page}\"},{\"key\":\"pageSize\",\"value\":\"${pageSize}\"}]},\"argsPosition\":{\"keyword\":\"query\",\"page\":\"query\",\"pageSize\":\"query\"}}",
"description": "Find users with pagination"
}
{
"name": "getUserByPath",
"parameters": [
{
"name": "id",
"type": "string",
"description": "User ID",
"required": true
},
{
"name": "name",
"type": "string",
"description": "User name",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/path/{{.id}}\",\"method\":\"GET\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000,\"queryParams\":[{\"key\":\"name\",\"value\":\"${name}\"}]},\"argsPosition\":{\"id\":\"path\",\"name\":\"query\"}}",
"description": "Get user information by path parameter"
}
{
"name": "payment",
"parameters": [
{
"name": "userId",
"type": "string",
"description": "User ID",
"required": true
},
{
"name": "userName",
"type": "string",
"description": "User name",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/payment\",\"method\":\"POST\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000,\"argsToJsonBody\":true},\"argsPosition\":{\"userId\":\"body\",\"userName\":\"body\"}}",
"description": "User payment interface"
}
{
"name": "wafPass",
"parameters": [],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/waf/pass\",\"method\":\"POST\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000},\"argsPosition\":{}}",
"description": "WAF pass test"
}
{
"name": "postHi",
"parameters": [
{
"name": "name",
"type": "string",
"description": "User name",
"required": false
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/shenyu/client/post/hi\",\"method\":\"POST\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/x-www-form-urlencoded\"}],\"timeout\":30000,\"argsToJsonBody\":true},\"argsPosition\":{\"name\":\"body\"}}",
"description": "Shenyu client POST hi endpoint"
}
{
"name": "updateUser",
"parameters": [
{
"name": "id",
"type": "string",
"description": "User ID",
"required": true
},
{
"name": "userId",
"type": "string",
"description": "User ID",
"required": true
},
{
"name": "userName",
"type": "string",
"description": "User name",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/putPathBody/{{.id}}\",\"method\":\"PUT\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000,\"argsToJsonBody\":true},\"argsPosition\":{\"id\":\"path\",\"userId\":\"body\",\"userName\":\"body\"}}",
"description": "Update user information"
}
{
"name": "saveOrder",
"parameters": [
{
"name": "id",
"type": "string",
"description": "Order ID",
"required": true
},
{
"name": "name",
"type": "string",
"description": "Order name",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/order/save\",\"method\":\"POST\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000,\"argsToJsonBody\":true},\"argsPosition\":{\"id\":\"body\",\"name\":\"body\"}}",
"description": "Save order"
}
{
"name": "findOrderById",
"parameters": [
{
"name": "id",
"type": "string",
"description": "Order ID",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/order/findById\",\"method\":\"GET\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000,\"queryParams\":[{\"key\":\"id\",\"value\":\"${id}\"}]},\"argsPosition\":{\"id\":\"query\"}}",
"description": "Find order by ID"
}
{
"name": "getOrderByPath",
"parameters": [
{
"name": "id",
"type": "string",
"description": "Order ID",
"required": true
},
{
"name": "name",
"type": "string",
"description": "Order name",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/order/path/{{.id}}/{{.name}}\",\"method\":\"GET\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000},\"argsPosition\":{\"id\":\"path\",\"name\":\"path\"}}",
"description": "RESTful style order query"
}
{
"name": "testRequestHeader",
"parameters": [
{
"name": "headerKey1",
"type": "string",
"description": "Request header parameter",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/request/header\",\"method\":\"GET\",\"headers\":[{\"key\":\"header_key1\",\"value\":\"{{.headerKey1}}\"}],\"timeout\":30000},\"argsPosition\":{\"headerKey1\":\"header\"}}",
"description": "Request header test"
}
{
"name": "testRequestParameter",
"parameters": [
{
"name": "parameterKey1",
"type": "string",
"description": "Request parameter",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/request/parameter\",\"method\":\"POST\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/x-www-form-urlencoded\"}],\"timeout\":30000,\"argsToJsonBody\":true},\"argsPosition\":{\"parameterKey1\":\"body\"}}",
"description": "Request parameter test"
}
{
"name": "testRequestCookie",
"parameters": [
{
"name": "userId",
"type": "string",
"description": "User ID (Cookie value)",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/request/cookie\",\"method\":\"GET\",\"headers\":[{\"key\":\"Cookie\",\"value\":\"userId={{.userId}}\"}],\"timeout\":30000},\"argsPosition\":{\"userId\":\"header\"}}",
"description": "Cookie test"
}
{
"name": "uploadSingleFile",
"parameters": [
{
"name": "file",
"type": "string",
"description": "File content (Base64 encoded)",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/upload/webFluxSingle\",\"method\":\"POST\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"multipart/form-data\"}],\"timeout\":60000,\"argsToJsonBody\":true},\"argsPosition\":{\"file\":\"body\"}}",
"description": "Single file upload"
}
{
"name": "uploadMultipleFiles",
"parameters": [
{
"name": "files",
"type": "array",
"description": "Multiple file contents (Base64 encoded array)",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/upload/webFluxFiles\",\"method\":\"POST\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"multipart/form-data\"}],\"timeout\":60000,\"argsToJsonBody\":true},\"argsPosition\":{\"files\":\"body\"}}",
"description": "Multiple files upload"
}
{
"name": "testOAuth2",
"parameters": [
{
"name": "token",
"type": "string",
"description": "OAuth2 access token",
"required": true
}
],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/order/oauth2/test\",\"method\":\"GET\",\"headers\":[{\"key\":\"Authorization\",\"value\":\"Bearer {{.token}}\"}],\"timeout\":30000},\"argsPosition\":{\"token\":\"header\"}}",
"description": "OAuth2 authentication test"
}
{
"name": "testCache",
"parameters": [],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/cache\",\"method\":\"GET\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":30000},\"argsPosition\":{}}",
"description": "Cache test"
}
{
"name": "testBigObject",
"parameters": [],
"requestConfig": "{\"requestTemplate\":{\"url\":\"/test/bigObject\",\"method\":\"POST\",\"headers\":[{\"key\":\"Content-Type\",\"value\":\"application/json\"}],\"timeout\":60000},\"argsPosition\":{}}",
"description": "Big object response test"
}
"path" - Corresponds to {{.paramName}} in URL template"query" - Corresponds to parameters in queryParams array"body" - Used with argsToJsonBody: true{
"argsPosition": {
"id": "path", // Path parameter /test/path/{{.id}}
"userId": "query", // Query parameter queryParams: [{"key": "userId", "value": "${userId}"}]
"userName": "body" // JSON Body (requires argsToJsonBody: true)
}
}
url: URL template with path parameter support using {{.paramName}} placeholdersmethod: HTTP method (GET, POST, PUT, DELETE)headers: Headers array, each element contains key and valuequeryParams: Query parameters array, each element contains key and valuetimeout: Timeout in millisecondsargsToJsonBody: Whether to convert parameters to JSON request body{
"headers": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{.token}}"
}
]
}
{
"queryParams": [
{
"key": "userId",
"value": "${userId}"
},
{
"key": "page",
"value": "${page}"
}
]
}
string, integer, number, boolean, array, objectrequired fieldtimeout fieldkey and value fieldsqueryParams array with ${paramName} format values{{.paramName}} format in URLargsPosition to specify parameter location: path, query, body, headerBegin with basic GET/POST examples and gradually add complexity.
Implement retry mechanisms and proper error responses at the business layer.
These examples are based on real interfaces from the shenyu-examples-http project and can be used and tested directly in a Shenyu environment.