
GigAPI时间序列湖
STDIOGigAPI时间序列数据湖的MCP服务器
GigAPI时间序列数据湖的MCP服务器
An MCP server for GigAPI Timeseries Lake that provides seamless integration with Claude Desktop and other MCP-compatible clients.
run_select_query
sql
(string): The SQL query to execute, database
(string): The database to execute against.list_databases
database
(string): The database to use for the SHOW DATABASES query (defaults to "mydb").list_tables
database
(string): The name of the database.get_table_schema
database
(string): The name of the database, table
(string): The name of the table.write_data
database
(string): The database to write to, data
(string): Data in InfluxDB Line Protocol format.health_check
ping
# The package will be available on PyPI after the first release # Users can install it directly with uv uv run --with mcp-gigapi --python 3.11 mcp-gigapi --help
# Clone the repository git clone https://github.com/gigapi/mcp-gigapi.git cd mcp-gigapi # Install dependencies uv sync
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%/Claude/claude_desktop_config.json
{ "mcpServers": { "mcp-gigapi": { "command": "uv", "args": [ "run", "--with", "mcp-gigapi", "--python", "3.13", "mcp-gigapi" ], "env": { "GIGAPI_HOST": "gigapi.fly.dev", "GIGAPI_PORT": "443", "GIGAPI_TIMEOUT": "30", "GIGAPI_VERIFY_SSL": "true", "GIGAPI_DEFAULT_DATABASE": "mydb" } } } }
{ "mcpServers": { "mcp-gigapi": { "command": "uv", "args": [ "run", "--with", "mcp-gigapi", "--python", "3.13", "mcp-gigapi" ], "env": { "GIGAPI_HOST": "localhost", "GIGAPI_PORT": "7971", "GIGAPI_TIMEOUT": "30", "GIGAPI_VERIFY_SSL": "false", "GIGAPI_DEFAULT_DATABASE": "mydb" } } } }
{ "mcpServers": { "mcp-gigapi": { "command": "uv", "args": [ "run", "--with", "mcp-gigapi", "--python", "3.13", "mcp-gigapi" ], "env": { "GIGAPI_HOST": "your-gigapi-server", "GIGAPI_PORT": "7971", "GIGAPI_USERNAME": "your_username", "GIGAPI_PASSWORD": "your_password", "GIGAPI_TIMEOUT": "30", "GIGAPI_VERIFY_SSL": "true", "GIGAPI_DEFAULT_DATABASE": "your_database" } } } }
uv
command with the absolute path to your uv
executable:
which uv # Find the path
This MCP server is designed to work with GigAPI's HTTP API endpoints:
POST /query?db={database}&format=ndjson
- Execute SQL queries with NDJSON response formatPOST /write?db={database}
- Write data using InfluxDB Line ProtocolGET /health
- Health checkGET /ping
- Simple pingUse InfluxDB Line Protocol format:
curl -X POST "http://localhost:7971/write?db=mydb" --data-binary @/dev/stdin << EOF weather,location=us-midwest,season=summer temperature=82 weather,location=us-east,season=summer temperature=80 weather,location=us-west,season=summer temperature=99 EOF
Execute SQL queries via JSON POST with NDJSON format:
curl -X POST "http://localhost:7971/query?db=mydb&format=ndjson" \ -H "Content-Type: application/json" \ -d '{"query": "SELECT time, temperature FROM weather WHERE time >= epoch_ns('\''2025-04-24T00:00:00'\''::TIMESTAMP)"}'
# Show databases curl -X POST "http://localhost:7971/query?db=mydb&format=ndjson" \ -H "Content-Type: application/json" \ -d '{"query": "SHOW DATABASES"}' # Show tables curl -X POST "http://localhost:7971/query?db=mydb&format=ndjson" \ -H "Content-Type: application/json" \ -d '{"query": "SHOW TABLES"}' # Count records curl -X POST "http://localhost:7971/query?db=mydb&format=ndjson" \ -H "Content-Type: application/json" \ -d '{"query": "SELECT count(*), avg(temperature) FROM weather"}'
GIGAPI_HOST
: The hostname of your GigAPI serverGIGAPI_PORT
: The port number of your GigAPI server (default: 7971)GIGAPI_USERNAME
or GIGAPI_USER
: The username for authentication (if required)GIGAPI_PASSWORD
or GIGAPI_PASS
: The password for authentication (if required)GIGAPI_TIMEOUT
: Request timeout in seconds (default: 30)GIGAPI_VERIFY_SSL
: Enable/disable SSL certificate verification (default: true)GIGAPI_DEFAULT_DATABASE
: Default database to use for queries (default: mydb)GIGAPI_MCP_SERVER_TRANSPORT
: Sets the transport method for the MCP server (default: stdio)GIGAPI_ENABLED
: Enable/disable GigAPI functionality (default: true)# Required variables GIGAPI_HOST=localhost GIGAPI_PORT=7971 # Optional: Override defaults for local development GIGAPI_VERIFY_SSL=false GIGAPI_TIMEOUT=60 GIGAPI_DEFAULT_DATABASE=mydb
# Required variables GIGAPI_HOST=your-gigapi-server GIGAPI_PORT=7971 GIGAPI_USERNAME=your_username GIGAPI_PASSWORD=your_password # Optional: Production settings GIGAPI_VERIFY_SSL=true GIGAPI_TIMEOUT=30 GIGAPI_DEFAULT_DATABASE=your_database
GIGAPI_HOST=gigapi.fly.dev GIGAPI_PORT=443 GIGAPI_VERIFY_SSL=true GIGAPI_DEFAULT_DATABASE=mydb
GigAPI uses Hive partitioning with the structure:
/data
/mydb
/weather
/date=2025-04-10
/hour=14
*.parquet
metadata.json
Install dependencies:
uv sync --all-extras --dev source .venv/bin/activate
Create a .env
file in the root of the repository:
GIGAPI_HOST=localhost GIGAPI_PORT=7971 GIGAPI_USERNAME=your_username GIGAPI_PASSWORD=your_password GIGAPI_TIMEOUT=30 GIGAPI_VERIFY_SSL=false GIGAPI_DEFAULT_DATABASE=mydb
For testing with the MCP Inspector:
fastmcp dev mcp_gigapi/mcp_server.py
# Run all tests uv run pytest -v # Run only unit tests uv run pytest -v -m "not integration" # Run only integration tests uv run pytest -v -m "integration" # Run linting uv run ruff check . # Test with public demo python test_demo.py
The repository includes a test script that validates the MCP server against the public GigAPI demo:
python test_demo.py
This will test:
This package is automatically published to PyPI on each GitHub release. The publishing process is handled by GitHub Actions workflows:
.github/workflows/ci.yml
): Runs tests on pull requests and pushes to main.github/workflows/publish.yml
): Publishes to PyPI when a release is createdOnce published, users can install the package directly from PyPI:
# Install and run the MCP server uv run --with mcp-gigapi --python 3.11 mcp-gigapi
To publish a new version:
pyproject.toml
See RELEASING.md for detailed release instructions.
GIGAPI_VERIFY_SSL=false
for self-signed certificatesEnable debug logging by setting the log level:
import logging logging.basicConfig(level=logging.DEBUG)
Apache-2.0 license