Skip to the content.

MCP Tools Reference

ADB-Link implements the Model Context Protocol (MCP) with full JSON-RPC 2.0 support. All tools are available via tools/call method.

Transport Modes

Mode Command Use Case
stdio adb-link run-mcp IDE/agent integration (Claude Desktop, Cursor)
HTTP adb-link run-all Remote access, multi-client

Tool List

list_datasources

List all available datasources.

Arguments: none

Response:

[
  {
    "name": "my-postgres",
    "type": "postgresql",
    "description": "Production PostgreSQL"
  }
]

list_databases

List databases in a datasource.

Arguments:

Name Type Required Description
datasource_name string Yes Target datasource

Response:

[
  {"name": "mydb", "comment": "Main database"},
  {"name": "analytics", "comment": ""}
]

get_schema

Get full schema (tables and columns) for a database.

Arguments:

Name Type Required Description
datasource_name string Yes Target datasource
database string Yes Target database

get_table_info

Get detailed column information for a specific table.

Arguments:

Name Type Required Description
datasource_name string Yes Target datasource
database string Yes Target database
table string Yes Table name

get_view_info

Get detailed column information for a specific view.

Arguments:

Name Type Required Description
datasource_name string Yes Target datasource
database string Yes Target database
view string Yes View name

execute_query

Execute a SQL or DSL query.

Arguments:

Name Type Required Description
datasource_name string Yes Target datasource
database string Yes Target database
sql string Yes SQL/DSL query string

Response:

{
  "columns": ["id", "username", "created_at"],
  "rows": [[1, "alice", "2026-03-15"]],
  "row_count": 1
}

explain_query

Get the execution plan for a query.

Arguments:

Name Type Required Description
datasource_name string Yes Target datasource
database string Yes Target database
sql string Yes SQL query to explain

submit_async_query

Submit a long-running query for async execution.

Arguments:

Name Type Required Description
datasource_name string Yes Target datasource
database string Yes Target database
sql string Yes SQL query

Response:

{
  "query_id": "abc123-def456"
}

get_async_query_status

Check the status of an async query.

Arguments:

Name Type Required Description
query_id string Yes Async query ID

Response:

{
  "query_id": "abc123-def456",
  "status": "completed"
}

Status values: pending, running, completed, failed, cancelled


get_async_query_result

Retrieve the result of a completed async query.

Arguments:

Name Type Required Description
query_id string Yes Async query ID

register_tool

Register a dynamic query tool at runtime.

Arguments:

Name Type Required Description
name string Yes Tool name
description string Yes Tool description
datasource string Yes Target datasource
database string Yes Target database
sql string Yes SQL template with :param placeholders
parameters array Yes Parameter definitions

unregister_tool

Remove a dynamic tool.

Arguments:

Name Type Required Description
tool_name string Yes Tool name to remove

register_datasource

Register a new datasource at runtime with connection validation.

Arguments:

Name Type Required Description
name string Yes Datasource name
type string Yes Database type
connection object Yes Connection details

unregister_datasource

Remove a datasource at runtime.

Arguments:

Name Type Required Description
datasource_name string Yes Datasource name to remove

Dynamic Tools

Any tool registered via register_tool (API or MCP) becomes immediately available as a new MCP tool. Dynamic tools appear in tools/list and can be called like built-in tools.

Example – register and call a custom tool:

// 1. Register
{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "register_tool",
    "arguments": {
      "name": "get_active_users",
      "description": "Get active users from the last N days",
      "datasource": "my-postgres",
      "database": "mydb",
      "sql": "SELECT * FROM users WHERE last_active > NOW() - INTERVAL ':days days'",
      "parameters": [
        {"name": "days", "type": "integer", "required": true, "description": "Number of days"}
      ]
    }
  }
}

// 2. Call the new tool
{
  "jsonrpc": "2.0", "id": 2, "method": "tools/call",
  "params": {
    "name": "get_active_users",
    "arguments": {"days": 7}
  }
}

Permission Enforcement

MCP tools respect the same RBAC permissions as the REST API. The MCP stdio transport uses mcp_stdio_user as the default identity. Ensure this user has appropriate permissions configured.

Empty/anonymous users bypass permission checks (useful for local development).