MCPcopy Index your code
hub / github.com/assafmo/SQLiteQueryServer

github.com/assafmo/SQLiteQueryServer @v1.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.4.0 ↗ · + Follow
28 symbols 84 edges 2 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

SQLiteQueryServer

Bulk query SQLite database over the network.
Way faster than SQLiteProxy!

CircleCI Coverage Status Go Report Card

Installation

  • Download a precompiled binary from https://github.com/assafmo/SQLiteQueryServer/releases
  • Or use go get:

bash go get -u github.com/assafmo/SQLiteQueryServer

This package uses github.com/mattn/go-sqlite3. Compilation errors might be resolved by reading https://github.com/mattn/go-sqlite3#compilation.

  • Or use Ubuntu PPA:

bash curl -s --compressed https://assafmo.github.io/ppa/ubuntu/KEY.gpg | sudo apt-key add - sudo curl -s --compressed -o /etc/apt/sources.list.d/assafmo.list https://assafmo.github.io/ppa/ubuntu/assafmo.list sudo apt update sudo apt install sqlitequeryserver

Usage

Usage of SQLiteQueryServer:
  -db string
        Filesystem path of the SQLite database
  -port uint
        HTTP port to listen on (default 80)
  -query string
        SQL query to prepare for

Note: SQLiteQueryServer is optimized for the SELECT command. Other commands such as INSERT, UPDATE, DELETE, CREATE, etc might be slow because SQLiteQueryServer doesn't use transactions (yet). Also, the response format and error messages from these commands may be odd or unexpected.

Examples

Creating a server

SQLiteQueryServer --db "$DB_PATH" --query "$PARAMETERIZED_SQL_QUERY" --port "$PORT"
SQLiteQueryServer --db ./test_db/ip_dns.db --query "SELECT * FROM ip_dns WHERE dns = ?" --port 8080

This will expose the ./test_db/ip_dns.db database with the query SELECT * FROM ip_dns WHERE dns = ? on port 8080.
Requests will need to provide the query parameters.

Querying the server

echo -e "github.com\none.one.one.one\ngoogle-public-dns-a.google.com" | curl "http://localhost:8080/query" --data-binary @-
echo -e "$QUERY1_PARAM1,$QUERY1_PARAM2\n$QUERY2_PARAM1,$QUERY2_PARAM2" | curl "http://$ADDRESS:$PORT/query" --data-binary @-
curl "http://$ADDRESS:$PORT/query" -d "$PARAM_1,$PARAM_2,...,$PARAM_N"
  • Request must be a HTTP POST to "http://$ADDRESS:$PORT/query".
  • Request body must be a valid CSV.
  • Request body must not have a CSV header.
  • Each request body line is a different query.
  • Each param in a line corresponds to a query param (a question mark in the query string).
  • Static query (without any query params):
  • The request must be a HTTP GET to "http://$ADDRESS:$PORT/query".
  • The query executes only once.

Getting a response

echo -e "github.com\none.one.one.one\ngoogle-public-dns-a.google.com" | curl "http://localhost:8080/query" --data-binary @-
[
  {
    "in": ["github.com"],
    "headers": ["ip", "dns"],
    "out": [["192.30.253.112", "github.com"], ["192.30.253.113", "github.com"]]
  },
  {
    "in": ["one.one.one.one"],
    "headers": ["ip", "dns"],
    "out": [["1.1.1.1", "one.one.one.one"]]
  },
  {
    "in": ["google-public-dns-a.google.com"],
    "headers": ["ip", "dns"],
    "out": [["8.8.8.8", "google-public-dns-a.google.com"]]
  }
]
  • If response status is 200 (OK), response is a JSON array (Content-Type: application/json).
  • Each element in the array:
  • Is a result of a query
  • Has an "in" field which is an array of the input params (a request body line).
  • Has an "headers" field which is an array of headers of the SQL query result.
  • Has an "out" field which is an array of arrays of results. Each inner array is a result row.
  • Element #1 is the result of query #1, Element #2 is the result of query #2, and so forth.
  • Static query (without any query params):
  • The response JSON has only one element.

Static query

SQLiteQueryServer --db ./test_db/ip_dns.db --query "SELECT * FROM ip_dns" --port 8080
curl "http://localhost:8080/query"
[
  {
    "in": [],
    "headers": ["ip", "dns"],
    "out": [
      ["1.1.1.1", "one.one.one.one"],
      ["8.8.8.8", "google-public-dns-a.google.com"],
      ["192.30.253.112", "github.com"],
      ["192.30.253.113", "github.com"]
    ]
  }
]

Core symbols most depended-on inside this repo

initQueryHandler
called by 11
main.go
cmd
called by 7
main.go
countParams
called by 4
main.go
buildHelpMessage
called by 1
main.go
main
called by 0
main.go

Shape

Function 25
Method 1
Struct 1
TypeAlias 1

Languages

Go100%

Modules by API surface

main_test.go22 symbols
main.go6 symbols

For agents

$ claude mcp add SQLiteQueryServer \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact