Managed MCP Server API
Tacnode provides managed MCP Server through https://mcp-server.tacnode.io/mcp, it provides read-only access to Tacnode databases, enables schema inspection and execute read-only queries. It uses JSON-RPC 2.0 as its wire format.
Prerequisites
- The Context Lake, Nodegroup and Database should be ready before access the MCP Server, refer to Managed MCP Server.
- Token is required during the authentication. The token is generated from Nodegroup Overview->MCP Tokens.
- Install Node.js and npm
Authentication
Replace YOUR_API_KEY with your actual key below.
Claude Desktop
Edit the configuration file at:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%\Claude\claude_desktop_config.json
Add the below code:
{
"mcpServers": {
"tacnode": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp-server.tacnode.io/mcp",
"--header",
"Authorization: Bearer <YOUR_TOKEN>"
]
},
}
}
Rate Limits
- 60 requests per minute per API key.
- Exceeding returns HTTP 429 Too Many Requests.
- Use retry and exponential backoff to handle limits.
Resources API
Database Resources
| Resource Name | URI Format | Description |
|---|---|---|
| schemas | db://schemas | Returns a list of all schemas in the database |
| tables_in_schema | db://schemas/{schemaName}/tables | Returns a list of all tables in the database or within a specific schema |
| table_structure_in_schema | db://schemas/{schemaName}/tables/{tableName} | Returns schema information for a specific table, optionally within a specific database schema |
| indexes_in_table | db://schemas/{schemaName}/tables/{tableName}/indexes | Returns information about indexes on a table |
| procedures_in_schema | db://schemas/{schemaName}/procedures | Returns a list of all stored procedures/functions in the database or within a specific schema |
Resources Read
Example: get all tables in public schema.
Request Body:
{
"method": "resources/read",
"params": {
"uri": "db://schemas/public/tables"
}
}
Response Body:
{
"contents": [
{
"uri": "db://schemas/public/tables",
"mimeType": "application/json",
"text": "{
\"success\": true,
\"data\": {
\"tables\": [
\"bookings\",
\"calendar\",
\"hosts\",
\"listings\",
\"listings_embedding\",
\"reviews\",
\"users\"
],
\"count\": 7,
\"schema\": \"public\"
}
}"
}
]
}
Example: get the table structure for table listings.
Request Body:
{
"method": "resources/read",
"params": {
"uri": "db://schemas/public/tables/listings"
}
}
Response Body:
{
"contents": [
{
"uri": "db://schemas/public/tables/listings",
"mimeType": "application/json",
"text": "{
\"success\": true,
\"data\": {
\"table\": \"listings\",
\"schema\": \"public\",
\"columns\": [
{
\"name\": \"id\",
\"type\": \"bigint\",
\"nullable\": false,
\"default\": \"nextval('public.listings_id_seq'::regclass)\"
},
...}"
}
]
}
Tools API
Database Tools
| Tool | Command Name | Description |
|---|---|---|
| Execute SQL | query | Execute single or multiple SQL statements (separated by semicolons) |
Tools Call
Example: execute the read-only query and get the results.
Request Body:
{
"method": "tools/call",
"params": {
"name": "query",
"arguments": {
"sql": "SELECT id, name, review_scores_rating
FROM listings
WHERE neighbourhood = 'Hong Kong, Hong Kong Island, Hong Kong' ORDER BY review_scores_rating DESC
LIMIT 5;"
}
}
}
Response Body:
{
"content": [
{
"type": "text",
"text": "[
{
\"id\": \"870078051526378382\",
\"name\": \"Rental unit in Hong Kong\",
\"review_scores_rating\": null
},
{
\"id\": \"868559240183915405\",
\"name\": \"Rental unit in Hong Kong\",
\"review_scores_rating\": null
}...]"
}
],
"isError": false
}