{"id":29256272,"url":"https://github.com/treasure-data/td-mcp-server","last_synced_at":"2025-09-23T19:19:48.899Z","repository":{"id":301810184,"uuid":"999169431","full_name":"treasure-data/td-mcp-server","owner":"treasure-data","description":"An Official Treasure Data MCP Server","archived":false,"fork":false,"pushed_at":"2025-06-25T02:07:18.000Z","size":472,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-29T01:04:52.073Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@treasuredata/mcp-server","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/treasure-data.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-09T21:03:27.000Z","updated_at":"2025-06-28T01:15:50.000Z","dependencies_parsed_at":"2025-06-29T01:15:08.592Z","dependency_job_id":null,"html_url":"https://github.com/treasure-data/td-mcp-server","commit_stats":null,"previous_names":["treasure-data/td-mcp-server"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/treasure-data/td-mcp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-mcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-mcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-mcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-mcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/treasure-data","download_url":"https://codeload.github.com/treasure-data/td-mcp-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-mcp-server/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263437345,"owners_count":23466368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-04T03:06:57.946Z","updated_at":"2025-09-23T19:19:48.881Z","avatar_url":"https://github.com/treasure-data.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Treasure Data MCP Server\n\nMCP (Model Context Protocol) server for Treasure Data, enabling AI assistants to query and interact with Treasure Data through a secure, controlled interface.\n\n## 🚀 Public Preview\n\nThis MCP server is currently in a public preview. We're excited for you to try it out and welcome your feedback to help us improve the service.\n\n**Please note:** During this preview period, use of the server is free. However, we plan to introduce a usage-based pricing model in the future, which will be based on the number of queries issued. We will provide ample notice and detailed pricing information before any charges are implemented.\n\nYour feedback during this phase is invaluable and will help us shape the future of this tool. Thank you for being an early adopter!\n\n## Features\n\n- 🔍 Query databases, tables, and schemas through information_schema\n- 📊 Execute SQL queries with automatic result limiting for LLM contexts\n- 🔒 Security-first design with read-only mode by default\n- 🌍 Multi-site support (US, JP, EU, AP regions)\n- 🚀 Zero-install execution via npx\n- 🎯 CDP (Customer Data Platform) integration for segment and activation management (Experimental)\n- 🔄 Workflow monitoring and control - view execution status, logs, and retry failed workflows\n- 📝 Comprehensive audit logging for all operations\n\n## Prerequisites\n\n### Node.js Installation\n\nThis MCP server requires Node.js version 18.0.0 or higher. If you don't have Node.js installed:\n\n1. **Download Node.js** from [nodejs.org](https://nodejs.org/)\n   - Choose the LTS (Long Term Support) version\n   - The installer includes `npm` and `npx`\n\n2. **Verify installation** by running:\n```bash\nnode --version  # Should show v18.0.0 or higher\nnpx --version   # Included with npm 5.2+\n```\n\n3. **Alternative installation methods:**\n   - **macOS**: `brew install node` (using Homebrew)\n   - **Windows**: Use the installer from nodejs.org or `winget install OpenJS.NodeJS`\n   - **Linux**: Use your distribution's package manager or [NodeSource repositories](https://github.com/nodesource/distributions)\n\n## Installation\n\n### Using npx (recommended)\n\nNo installation needed! Configure your MCP tool to run `@treasuredata/mcp-server` directly via `npx`:\n\n```bash\nnpx @treasuredata/mcp-server\n```\n\n\u003e **What is npx?** npx is a package runner that comes with npm 5.2+. It downloads and runs packages without installing them globally, ensuring you always use the latest version.\n\n### Global installation\n\nIf you prefer a traditional installation:\n\n```bash\nnpm install -g @treasuredata/mcp-server\n```\n\n## Configuration\n\nAdd to your MCP client configuration (e.g., Claude Desktop):\n\n```json\n{\n  \"mcpServers\": {\n    \"treasuredata\": {\n      \"command\": \"npx\",\n      \"args\": [\"@treasuredata/mcp-server\"],\n      \"env\": {\n        \"TD_API_KEY\": \"your_api_key\",\n        \"TD_SITE\": \"us01\",\n        \"TD_ENABLE_UPDATES\": \"false\",\n        \"TD_DATABASE\": \"sample_datasets\"\n      }\n    }\n  }\n}\n```\n\n### Configuration Options\n\n- `TD_API_KEY` (required): Your Treasure Data API key\n- `TD_SITE` (optional): Region endpoint - `us01` (default), `jp01`, `eu01`, `ap02`, `ap03`, `dev`\n- `TD_ENABLE_UPDATES` (optional): Enable write operations (execute tool) - `false` (default), `true`\n- `TD_DATABASE` (optional): Default database for queries (e.g., `sample_datasets`)\n\n## Claude Code Integration\n\n[Claude Code](https://claude.ai/code) provides built-in support for MCP servers through the `claude mcp add` command. To use this MCP server with Claude Code:\n\n```bash\nclaude mcp add td -e TD_API_KEY=$TD_API_KEY -- npx @treasuredata/mcp-server\n```\n\nThis command:\n- Adds the server with the name \"td\"\n- Sets the TD_API_KEY environment variable to your API key value\n- Configures Claude Code to use `npx @treasuredata/mcp-server` (always uses latest version)\n\n### Additional Configuration\n\nYou can also specify additional environment variables:\n\n```bash\nclaude mcp add td \\\n  -e TD_API_KEY=$TD_API_KEY \\\n  -e TD_SITE=us01 \\\n  -e TD_DATABASE=sample_datasets \\\n  -- npx @treasuredata/mcp-server\n```\n\nOnce configured, Claude Code will automatically have access to all the tools described below for querying and analyzing your Treasure Data.\n\n## Available Tools\n\n### 1. list_databases\nList all databases in your Treasure Data account.\n\n**Example:**\n```json\n{\n  \"name\": \"list_databases\",\n  \"arguments\": {}\n}\n```\n\n### 2. list_tables\nList all tables in a specific database.\n\n**Parameters:**\n- `database` (string, optional): Database name. If omitted, uses the current database context (TD_DATABASE or last used database)\n\n**Example:**\n```json\n{\n  \"name\": \"list_tables\",\n  \"arguments\": {\n    \"database\": \"sample_datasets\"\n  }\n}\n```\n\n**With default database configured:**\n```json\n{\n  \"name\": \"list_tables\",\n  \"arguments\": {}\n}\n```\n\n### 3. describe_table\nGet schema information for a specific table.\n\n**Parameters:**\n- `database` (string, optional): Database name. If omitted, uses the current database context (TD_DATABASE or last used database)\n- `table` (string, required): Table name\n\n**Example:**\n```json\n{\n  \"name\": \"describe_table\",\n  \"arguments\": {\n    \"database\": \"sample_datasets\",\n    \"table\": \"www_access\"\n  }\n}\n```\n\n**With default database configured:**\n```json\n{\n  \"name\": \"describe_table\",\n  \"arguments\": {\n    \"table\": \"www_access\"\n  }\n}\n```\n\n### 4. query\nExecute read-only SQL queries (SELECT, SHOW, DESCRIBE).\n\n**Parameters:**\n- `sql` (string, required): SQL query to execute\n- `limit` (number, optional): Max rows (default: 40, max: 10000)\n\n**Performance Tip:** For tables with a `time` column, use `td_interval()` or `td_time_range()` to limit the time range:\n- `td_interval(time, '-30d/now')` - Last 30 days\n- `td_interval(time, '-7d/now')` - Last 7 days\n- `td_interval(time, '-1d')` - Yesterday only\n- `td_interval(time, '-1h/now')` - Last hour\n- `td_time_range(time, '2024-01-01', '2024-01-31')` - Specific date range\n\n**Example:**\n```json\n{\n  \"name\": \"query\",\n  \"arguments\": {\n    \"sql\": \"SELECT method, COUNT(*) as count FROM www_access GROUP BY method\",\n    \"limit\": 10\n  }\n}\n```\n\n**Example with time range:**\n```json\n{\n  \"name\": \"query\",\n  \"arguments\": {\n    \"sql\": \"SELECT method, COUNT(*) as count FROM www_access WHERE td_interval(time, '-7d/now') GROUP BY method\",\n    \"limit\": 10\n  }\n}\n```\n\n### 5. execute\nExecute write operations (UPDATE, INSERT, DELETE, etc.) - requires `TD_ENABLE_UPDATES=true`.\n\n**Parameters:**\n- `sql` (string, required): SQL statement to execute\n\n**Example:**\n```json\n{\n  \"name\": \"execute\",\n  \"arguments\": {\n    \"sql\": \"INSERT INTO events (timestamp, event_type) VALUES (NOW(), 'test')\"\n  }\n}\n```\n\n### 6. use_database\nSwitch the current database context for subsequent queries.\n\n**Parameters:**\n- `database` (string, required): Database to switch to\n\n**Example:**\n```json\n{\n  \"name\": \"use_database\",\n  \"arguments\": {\n    \"database\": \"production_logs\"\n  }\n}\n```\n\nAfter switching, all queries will use the new database by default unless explicitly specified.\n\n### 7. current_database\nGet the current database context being used for queries.\n\n**Parameters:**\nNone\n\n**Example:**\n```json\n{\n  \"name\": \"current_database\",\n  \"arguments\": {}\n}\n```\n\n**Response:**\n```json\n{\n  \"currentDatabase\": \"sample_datasets\",\n  \"description\": \"The current database context used for queries\"\n}\n```\n\n### CDP Tools (Customer Data Platform) - EXPERIMENTAL\n\n**Note:** CDP tools are currently experimental and may not cover all use cases. Additional functionality will be added based on user feedback.\n\nThe following tools are available for interacting with Treasure Data's Customer Data Platform (CDP):\n\n### 8. list_parent_segments\nList all parent segments in your CDP account.\n\n**Parameters:**\nNone\n\n**Example:**\n```json\n{\n  \"name\": \"list_parent_segments\",\n  \"arguments\": {}\n}\n```\n\n### 9. get_parent_segment\nGet details of a specific parent segment.\n\n**Parameters:**\n- `parent_segment_id` (integer, required): The ID of the parent segment\n\n**Example:**\n```json\n{\n  \"name\": \"get_parent_segment\",\n  \"arguments\": {\n    \"parent_segment_id\": 12345\n  }\n}\n```\n\n### 10. list_segments\nList all segments under a specific parent segment.\n\n**Parameters:**\n- `parent_segment_id` (integer, required): The ID of the parent segment\n\n**Example:**\n```json\n{\n  \"name\": \"list_segments\",\n  \"arguments\": {\n    \"parent_segment_id\": 12345\n  }\n}\n```\n\n### 11. list_activations\nList all activations (syndications) for a specific segment.\n\n**Parameters:**\n- `parent_segment_id` (integer, required): The ID of the parent segment\n- `segment_id` (integer, required): The ID of the segment\n\n**Example:**\n```json\n{\n  \"name\": \"list_activations\",\n  \"arguments\": {\n    \"parent_segment_id\": 12345,\n    \"segment_id\": 67890\n  }\n}\n```\n\n### 12. get_segment\nGet detailed information about a specific segment, including its rules and metadata.\n\n**Parameters:**\n- `parent_segment_id` (integer, required): The parent segment ID\n- `segment_id` (integer, required): The segment ID\n\n**Example:**\n```json\n{\n  \"name\": \"get_segment\",\n  \"arguments\": {\n    \"parent_segment_id\": 287197,\n    \"segment_id\": 1536120\n  }\n}\n```\n\n### 13. parent_segment_sql\nGet the SQL statement for a parent segment.\n\n**Parameters:**\n- `parent_segment_id` (integer, required): The parent segment ID\n\n**Example:**\n```json\n{\n  \"name\": \"parent_segment_sql\",\n  \"arguments\": {\n    \"parent_segment_id\": 287197\n  }\n}\n```\n\n**Response Example:**\n```sql\nselect\n  a.*\nfrom \"cdp_audience_287197\".\"customers\" a\n```\n\n### 14. segment_sql\nGet the SQL statement for a segment with filtering conditions applied to the parent segment.\n\n**Parameters:**\n- `parent_segment_id` (integer, required): The parent segment ID\n- `segment_id` (integer, required): The segment ID\n\n**Example:**\n```json\n{\n  \"name\": \"segment_sql\",\n  \"arguments\": {\n    \"parent_segment_id\": 287197,\n    \"segment_id\": 1536120\n  }\n}\n```\n\n**Response Example:**\n```sql\nselect\n  a.*\nfrom \"cdp_audience_287197\".\"customers\" a\nwhere (\n  (position('Male' in a.\"gender\") \u003e 0)\n)\n```\n\n### Workflow Tools (Experimental) - Monitor and Control Digdag Workflows\n\n\u003e **Note**: These workflow tools are experimental and provide detailed access to workflow sessions, attempts, and tasks. They are subject to change in future releases.\n\nThe following tools are available for monitoring and controlling Digdag workflows. These tools integrate with Treasure Data's workflow engine based on [Digdag](https://docs.digdag.io/api/):\n\n### 15. list_projects\nList all workflow projects.\n\n**Parameters:**\n- `limit` (number, optional): Maximum results (default: 100)\n- `last_id` (string, optional): Pagination cursor\n\n**Example:**\n```json\n{\n  \"name\": \"list_projects\",\n  \"arguments\": {\n    \"limit\": 50\n  }\n}\n```\n\n### 16. list_workflows\nList workflows, optionally filtered by project name.\n\n**Parameters:**\n- `project_name` (string, optional): Project name to filter by\n- `limit` (number, optional): Maximum results (default: 100)\n- `last_id` (string, optional): Pagination cursor\n\n**Examples:**\n```json\n// List all workflows\n{\n  \"name\": \"list_workflows\",\n  \"arguments\": {\n    \"limit\": 50\n  }\n}\n\n// List workflows in a specific project\n{\n  \"name\": \"list_workflows\",\n  \"arguments\": {\n    \"project_name\": \"my_project\",\n    \"limit\": 50\n  }\n}\n```\n\n### 17. list_sessions\nList workflow execution sessions with filtering options.\n\n**Parameters:**\n- `project_name` (string, optional): Filter by project name\n- `workflow_name` (string, optional): Filter by workflow name\n- `status` (string, optional): Filter by status (`running`, `success`, `error`, `killed`, `planned`)\n- `from_time` (string, optional): Start time (ISO 8601)\n- `to_time` (string, optional): End time (ISO 8601)\n- `limit` (number, optional): Maximum results (default: 100)\n- `last_id` (string, optional): Pagination cursor\n\n**Example:**\n```json\n{\n  \"name\": \"list_sessions\",\n  \"arguments\": {\n    \"status\": \"error\",\n    \"from_time\": \"2024-01-01T00:00:00Z\",\n    \"limit\": 20\n  }\n}\n```\n\n### 18. get_session_attempts\nGet all attempts for a specific session.\n\n**Parameters:**\n- `session_id` (string, required): Session ID\n\n**Example:**\n```json\n{\n  \"name\": \"get_session_attempts\",\n  \"arguments\": {\n    \"session_id\": \"12345\"\n  }\n}\n```\n\n### 19. get_attempt_tasks\nList all tasks within an attempt with their execution status.\n\n**Parameters:**\n- `attempt_id` (string, required): Attempt ID\n- `include_subtasks` (boolean, optional): Include subtasks (default: true)\n\n**Example:**\n```json\n{\n  \"name\": \"get_attempt_tasks\",\n  \"arguments\": {\n    \"attempt_id\": \"67890\",\n    \"include_subtasks\": false\n  }\n}\n```\n\n### 20. get_task_logs\nRetrieve logs for a specific task within an attempt.\n\n**Parameters:**\n- `attempt_id` (string, required): Attempt ID\n- `task_name` (string, required): Task name (e.g., \"+main+task1\")\n- `offset` (number, optional): Log offset in bytes\n- `limit` (number, optional): Maximum bytes to retrieve (default: 1MB)\n\n**Example:**\n```json\n{\n  \"name\": \"get_task_logs\",\n  \"arguments\": {\n    \"attempt_id\": \"67890\",\n    \"task_name\": \"+main+process_data\",\n    \"limit\": 5000\n  }\n}\n```\n\n### 21. kill_attempt\nRequest cancellation of a running attempt.\n\n**Parameters:**\n- `attempt_id` (string, required): Attempt ID\n- `reason` (string, optional): Reason for cancellation\n\n**Example:**\n```json\n{\n  \"name\": \"kill_attempt\",\n  \"arguments\": {\n    \"attempt_id\": \"67890\",\n    \"reason\": \"Stopping for maintenance\"\n  }\n}\n```\n\n### 22. retry_session\nRetry a session from the beginning or a specific task.\n\n**Parameters:**\n- `session_id` (string, required): Session ID\n- `from_task` (string, optional): Task name to retry from\n- `retry_params` (object, optional): Override parameters for retry\n\n**Example:**\n```json\n{\n  \"name\": \"retry_session\",\n  \"arguments\": {\n    \"session_id\": \"12345\",\n    \"from_task\": \"+main+failed_task\"\n  }\n}\n```\n\n### 23. retry_attempt\nRetry a specific attempt with resume capabilities.\n\n**Parameters:**\n- `attempt_id` (string, required): Attempt ID to retry\n- `resume_from` (string, optional): Task name to resume from (skip successful tasks)\n- `retry_params` (object, optional): Override parameters for retry\n- `force` (boolean, optional): Force retry even if attempt is running (default: false)\n\n**Example:**\n```json\n{\n  \"name\": \"retry_attempt\",\n  \"arguments\": {\n    \"attempt_id\": \"67890\",\n    \"resume_from\": \"+main+failed_task\",\n    \"retry_params\": {\n      \"batch_size\": 1000\n    }\n  }\n}\n```\n\n## Security\n\n- **Read-only by default**: Write operations (execute tool) require explicit configuration with `TD_ENABLE_UPDATES=true`\n- **Query validation**: All queries are validated before execution\n- **Audit logging**: All operations are logged for security monitoring\n- **Row limiting**: Automatic LIMIT injection for SELECT queries to prevent large responses\n- **Workflow control operations**: kill_attempt, retry_session, and retry_attempt are enabled by default as they are safe operations that don't modify data directly\n\n## Basic Prompt for Using td-mcp-server\n\nWhen interacting with an AI assistant that has td-mcp-server configured, you can use prompts like these to effectively work with your Treasure Data:\n\n### Initial Setup Prompt\n```\nYou have access to Treasure Data through the td-mcp-server. You can:\n- List databases and tables\n- Describe table schemas\n- Execute SQL queries on the data\n- Switch between databases using use_database\n- Check current database context using current_database\n- Work with CDP segments and activations (experimental)\n- Generate SQL queries for CDP audiences and segments\n- Monitor and control Digdag workflows\n- View workflow execution status and logs\n- Retry failed workflows and attempts\n\nStart by listing available databases to understand what data is available.\n```\n\n### Common Task Prompts\n\n**Data Exploration:**\n```\nPlease help me explore the data in Treasure Data:\n1. First, list all available databases\n2. For the database \"sample_datasets\", show me all tables\n3. Describe the schema of the \"www_access\" table\n4. Show me a sample of 5 rows from this table\n```\n\n**Data Analysis:**\n```\nAnalyze the web access logs in the www_access table:\n1. What are the top 10 most accessed URLs?\n2. Show the distribution of HTTP methods used\n3. Find the busiest hours of the day (use td_interval for recent data)\n4. Identify any potential anomalies or interesting patterns\n```\n\n**Time-based Queries:**\n```\nFor the www_access table, analyze the last 7 days of data:\n- Use td_interval(time, '-7d/now') in your WHERE clause\n- Show daily traffic trends\n- Compare weekday vs weekend patterns\n- Identify peak usage times\n```\n\n**CDP Segment Analysis:**\n```\nHelp me understand my CDP segments:\n1. List all parent segments (audiences) available\n2. For parent segment ID 287197, show all child segments\n3. Get the SQL query that defines this parent segment\n4. For segment 1536120, show the SQL with filtering conditions applied\n5. Explain what filtering rules are being applied in this segment\n```\n\n**Workflow Monitoring:**\n```\nHelp me monitor my Digdag workflows:\n1. List all workflow projects available\n2. List all workflows in project \"my_etl_project\"\n3. Show me all failed sessions from the last 24 hours\n4. For session ID 12345, show all attempts and their status\n5. Get the error logs for the failed tasks in attempt 67890\n6. Retry the failed session from the task that failed\n```\n\n**Workflow Troubleshooting:**\n```\nI have a failed workflow execution. Please help me:\n1. List recent error sessions for project \"data_pipeline\"\n2. For the most recent failed session, show me the attempts\n3. List all tasks in the failed attempt and identify which ones failed\n4. Show me the error logs for the failed tasks\n5. Suggest how to retry this workflow\n```\n\n## Usage Examples\n\n### With Claude Desktop\n\n1. Ask Claude to analyze your data:\n```\nCan you show me what databases I have access to in Treasure Data?\n```\n\n2. Query specific data:\n```\nShow me the top 10 most frequent HTTP methods in the www_access table\n```\n\n3. Get table schemas:\n```\nWhat columns are in the nasdaq table in sample_datasets?\n```\n\n### Example Conversations\n\n**User:** \"What's the total number of records in the www_access table?\"\n\n**Assistant:** I'll query the www_access table to get the total record count.\n\n```sql\nSELECT COUNT(*) as total_records FROM www_access\n```\n\n[Executes query and returns results]\n\nThe www_access table contains 5,000 total records.\n\n### Working with Multiple Databases\n\n**User:** \"I need to work with the production_logs database instead of sample_datasets\"\n\n**Assistant:** I'll switch to the production_logs database for you.\n\n[Uses use_database tool]\n\nNow switched to production_logs database. All subsequent queries will use this database by default unless you specify otherwise.\n\n### Complex Analysis Example\n\n**User:** \"Can you analyze user behavior patterns in our access logs for the past month?\"\n\n**Assistant:** I'll analyze the user behavior patterns from your access logs. Let me break this down into several queries:\n\n1. First, let me check the table structure:\n[Describes table to understand available columns]\n\n2. Now I'll analyze the overall traffic pattern for the past month:\n```sql\nSELECT\n  DATE(time) as date,\n  COUNT(*) as daily_requests,\n  COUNT(DISTINCT host) as unique_visitors\nFROM www_access\nWHERE td_interval(time, '-30d/now')\nGROUP BY DATE(time)\nORDER BY date\n```\n\n3. Let me identify the most popular pages:\n```sql\nSELECT\n  path,\n  COUNT(*) as visits,\n  COUNT(DISTINCT host) as unique_visitors\nFROM www_access\nWHERE td_interval(time, '-30d/now')\nGROUP BY path\nORDER BY visits DESC\nLIMIT 20\n```\n\n[Continues with analysis and insights...]\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n\n# Run tests\nnpm test\n\n# Run integration tests (requires TD_API_KEY_DEVELOPMENT_AWS)\nnpm run test:integration\n\n# Development mode\nnpm run dev\n```\n\n### Example Configurations\n\nSee the `examples/` directory for sample configurations:\n- `claude-desktop-config.json` - Basic Claude Desktop setup\n- `development-config.json` - Local development with logging\n- `multi-region-config.json` - Multi-region setup\n\n## Developer Notes\n\nFor information on testing this MCP server with GitHub Copilot Chat agent mode, see [DEVELOPER_NOTES.md](DEVELOPER_NOTES.md).\n\n## License\n\nApache License 2.0\n\n## Contributing\n\nContributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.\n\n## Support\n\nFor issues and feature requests, please visit: https://github.com/treasure-data/td-mcp-server/issues","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftreasure-data%2Ftd-mcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftreasure-data%2Ftd-mcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftreasure-data%2Ftd-mcp-server/lists"}