.do
Mcp

Sqlite MCP

Model Context Protocol reference for sqlite.do - SQLite database services

Sqlite MCP

SQLite database services

Overview

The Model Context Protocol (MCP) provides AI models with direct access to sqlite.do through a standardized interface.

Installation

pnpm add @modelcontextprotocol/sdk

Configuration

Add to your MCP server configuration:

{
  "mcpServers": {
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@dotdo/mcp-server"],
      "env": {
        "DO_API_KEY": "your-api-key"
      }
    }
  }
}

Tools

sqlite/invoke

Main tool for sqlite.do operations.

{
  "name": "sqlite/invoke",
  "description": "SQLite database services",
  "inputSchema": {
    "type": "object",
    "properties": {
      "operation": {
        "type": "string",
        "description": "Operation to perform"
      },
      "parameters": {
        "type": "object",
        "description": "Operation parameters"
      }
    },
    "required": ["operation"]
  }
}

Usage in AI Models

Claude Desktop

// ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@dotdo/mcp-server", "--tool=sqlite"],
      "env": {
        "DO_API_KEY": "undefined"
      }
    }
  }
}

OpenAI GPTs

# Custom GPT configuration
tools:
  - type: mcp
    server: sqlite
    operations:
      - invoke
      - query
      - execute

Custom Integration

import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'

const transport = new StdioClientTransport({
  command: 'npx',
  args: ['-y', '@dotdo/mcp-server', '--tool=sqlite'],
})

const client = new Client(
  {
    name: 'sqlite-client',
    version: '1.0.0',
  },
  {
    capabilities: {},
  }
)

await client.connect(transport)

// Call tool
const result = await client.callTool({
  name: 'sqlite/invoke',
  arguments: {
    operation: 'sqlite',
    parameters: {},
  },
})

Tool Definitions

Available Tools

{
  "tools": [
    {
      "name": "sqlite/invoke",
      "description": "Invoke sqlite.do",
      "inputSchema": {
        /* ... */
      }
    },
    {
      "name": "sqlite/query",
      "description": "Query sqlite.do resources",
      "inputSchema": {
        /* ... */
      }
    },
    {
      "name": "sqlite/status",
      "description": "Check sqlite.do status",
      "inputSchema": {
        /* ... */
      }
    }
  ]
}

Resources

Available Resources

{
  "resources": [
    {
      "uri": "sqlite://config",
      "name": "Sqlite Configuration",
      "mimeType": "application/json"
    },
    {
      "uri": "sqlite://docs",
      "name": "Sqlite Documentation",
      "mimeType": "text/markdown"
    }
  ]
}

Prompts

Pre-configured Prompts

{
  "prompts": [
    {
      "name": "sqlite-quick-start",
      "description": "Quick start guide for sqlite.do",
      "arguments": []
    },
    {
      "name": "sqlite-best-practices",
      "description": "Best practices for sqlite.do",
      "arguments": []
    }
  ]
}

Examples

Basic Usage

// AI model calls tool via MCP
mcp call sqlite/query

With Parameters

// Call with parameters
await mcp.callTool('sqlite/invoke', {
  operation: 'process',
  parameters: {
    // Operation-specific parameters
  },
  options: {
    timeout: 30000,
  },
})

Error Handling

try {
  const result = await mcp.callTool('sqlite/invoke', {
    operation: 'process',
  })
  return result
} catch (error) {
  if (error.code === 'TOOL_NOT_FOUND') {
    console.error('Sqlite tool not available')
  } else {
    throw error
  }
}

AI Integration Patterns

Agentic Workflows

// AI agent uses sqlite.do in workflow
const workflow = {
  steps: [
    {
      tool: 'sqlite/invoke',
      operation: 'analyze',
      input: 'user-data',
    },
    {
      tool: 'sqlite/process',
      operation: 'transform',
      input: 'analysis-result',
    },
  ],
}

Chain of Thought

AI models can reason about sqlite.do operations:

User: "I need to process this data"

AI: "I'll use the sqlite tool to:
1. Validate the data format
2. Process it through sqlite.do
3. Return the results

Let me start..."

[Calls: mcp call sqlite/query]

Server Implementation

Custom MCP Server

import { Server } from '@modelcontextprotocol/sdk/server/index.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

const server = new Server(
  {
    name: 'sqlite-server',
    version: '1.0.0',
  },
  {
    capabilities: {
      tools: {},
      resources: {},
      prompts: {},
    },
  }
)

// Register tool
server.setRequestHandler('tools/call', async (request) => {
  if (request.params.name === 'sqlite/invoke') {
    // Handle sqlite.do operation
    return {
      content: [
        {
          type: 'text',
          text: JSON.stringify(result),
        },
      ],
    }
  }
})

const transport = new StdioServerTransport()
await server.connect(transport)

Best Practices

  1. Tool Design - Keep tools focused and single-purpose
  2. Error Messages - Provide clear, actionable errors
  3. Documentation - Include examples in tool descriptions
  4. Rate Limiting - Implement appropriate limits
  5. Security - Validate all inputs from AI models
  6. Monitoring - Track tool usage and errors