Install
openclaw skills install mcp-adapterClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Use Model Context Protocol servers to access external tools and data sources. Enable AI agents to discover and execute tools from configured MCP servers (legal databases, APIs, database connectors, weather services, etc.).
openclaw skills install mcp-adapterUse the MCP integration plugin to discover and execute tools provided by external MCP servers. This skill enables you to access legal databases, query APIs, search databases, and integrate with any service that provides an MCP interface.
The plugin provides a unified mcp tool with two actions:
list - Discover available tools from all connected serverscall - Execute a specific tool with parametersAlways start by listing available tools to see what MCP servers are connected and what capabilities they provide.
Action:
{
tool: "mcp",
args: {
action: "list"
}
}
Response structure:
[
{
"id": "server:toolname",
"server": "server-name",
"name": "tool-name",
"description": "What this tool does",
"inputSchema": {
"type": "object",
"properties": {...},
"required": [...]
}
}
]
For each tool, examine:
"server:toolname" - split on : to get server and tool namesproperties: Available parameters with types and descriptionsrequired: Array of mandatory parameter namesCommon tool naming patterns:
search_* - Find or search operations (e.g., search_statute, search_users)get_* - Retrieve specific data (e.g., get_statute_full_text, get_weather)query - Execute queries (e.g., database:query)analyze_* - Analysis operations (e.g., analyze_law)resolve_* - Resolve references (e.g., resolve_citation)Before calling a tool:
inputSchema.requiredAction:
{
tool: "mcp",
args: {
action: "call",
server: "<server-name>",
tool: "<tool-name>",
args: {
// Tool-specific parameters from inputSchema
}
}
}
Example - Korean legal search:
{
tool: "mcp",
args: {
action: "call",
server: "kr-legal",
tool: "search_statute",
args: {
query: "연장근로 수당",
limit: 5
}
}
}
Tool responses follow this structure:
{
"content": [
{
"type": "text",
"text": "JSON string or text result"
}
],
"isError": false
}
For JSON responses:
const data = JSON.parse(response.content[0].text);
// Access data.result, data.results, or direct properties
For complex requests, execute multiple tools in sequence:
Example - Legal research workflow:
search_statute to find relevant lawsget_statute_full_text for complete textanalyze_law for interpretationsearch_case_law for related casesEach step uses output from the previous step to inform the next call.
Between tool calls:
"Tool not found: server:toolname"
action: "list" to verify available tools"Invalid arguments for tool"
inputSchema from list response"Server connection failed"
Errors return:
{
"content": [{"type": "text", "text": "Error: message"}],
"isError": true
}
Handle gracefully:
{tool: "mcp", args: {action: "list"}}
Response shows kr-legal:search_statute with:
query (string)limit (number), category (string){
tool: "mcp",
args: {
action: "call",
server: "kr-legal",
tool: "search_statute",
args: {
query: "연장근로 수당",
category: "노동법",
limit: 5
}
}
}
const data = JSON.parse(response.content[0].text);
// Present data.results to user
User-facing response:
Found 5 Korean statutes about overtime pay:
1. 근로기준법 제56조 (연장·야간 및 휴일 근로)
- Overtime work requires 50% premium
2. 근로기준법 제50조 (근로시간)
- Standard working hours: 40 hours per week
Would you like me to retrieve the full text of any statute?
{tool: "mcp", args: {action: "list"}}
{
tool: "mcp",
args: {
action: "call",
server: "server-name",
tool: "tool-name",
args: {param1: "value1"}
}
}
Tool ID parsing: "server:toolname" → split on : for server and tool names
Parameter validation: Check inputSchema.required and inputSchema.properties[param].type
Response parsing: JSON.parse(response.content[0].text) for JSON responses
Error detection: Check response.isError === true
Remember: Always start with action: "list" when uncertain about available tools.