Enables automation and workflow integration by allowing AI agents to interact with and execute Google Apps Script.
Provides tools for spreadsheet operations, data engineering, and dataset management, allowing AI agents to read, write, and analyze data within Google Sheets.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GAS MCP Server AdvancedCreate a pivot table and summary chart for the sales data in my current sheet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
flowchart LR
subgraph "🤖 AI Agents"
A[MCP Client]
end
subgraph "🔷 MCP Server"
B[Tool Registry]
C[Rate Limiter]
D[Context Engine]
E[Security Layer]
end
subgraph "📊 Google APIs"
F[Sheets API]
G[Apps Script]
H[Drive API]
end
A -->|JSON-RPC| B
B --> C --> D --> E --> F
E --> G
E --> H
style A fill:#1a1a2e,stroke:#00d9ff,color:#fff
style B fill:#16213e,stroke:#a855f7,color:#fff
style C fill:#0f3460,stroke:#22c55e,color:#fff
style D fill:#1a1a2e,stroke:#f59e0b,color:#fff
style E fill:#0f0f23,stroke:#ef4444,color:#fff
style F fill:#1e3a5f,stroke:#3b82f6,color:#fff
style G fill:#1e3a5f,stroke:#3b82f6,color:#fff
style H fill:#1e3a5f,stroke:#3b82f6,color:#fff⭐ Star us on GitHub | 📖 Read the Docs | 💬 Join Discord | 🐛 Report Issues |
✨ Features
Context Intelligence
Token estimation • Compression • Semantic search • Dataset management
100K+ tokens supported
100+ MCP Tools
Spreadsheet ops • AI analysis • Automation workflows • Data pipelines
Comprehensive coverage
Self-Healing
Circuit breaker • Auto-retry • Error recovery • Health checks
99.9% uptime
Adaptive Rate Limiting
Per-agent limits • Per-API quotas • Sliding windows • Backoff strategy
Smart throttling
Enterprise Security
RBAC • AES-256 encryption • OAuth2 • Audit logging • SOC2 ready
Bank-grade protection
Complete Observability
Metrics • Tracing • Health checks • Alerting • Audit logs
Full visibility
🏗️ Architecture
╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ GOOGLE APPS SCRIPT MCP SERVER ║
║ HIGH-LEVEL ARCHITECTURE ║
╠═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ ║
║ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ║
║ │ 🤖 MCP CLIENT (AI AGENT) │ ║
║ │ ┌──────────────┐ │ ║
║ │ │ JSON-RPC 2.0 │ │ ║
║ │ │ SSE Stream │ │ ║
║ │ └──────┬───────┘ │ ║
║ └───────────────────────────────────────────────────────────────┼───────────────────────────────────────────────┘ ║
║ │ ║
║ ▼ ║
║ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ║
║ │ 🔷 MCP SERVER │ ║
║ │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ ║
║ │ │ 📦 SERVER MANAGEMENT LAYER │ │ ║
║ │ │ ┌────────────────┐ ┌───────────────────┐ ┌────────────────────────┐ ┌─────────────────┐ │ │ ║
║ │ │ │ ⚙️ Config │ │ 🖥️ Server │ │ 🗂️ Tool │ │ 🔒 Auth │ │ │ ║
║ │ │ │ Manager │ │ Manager │ │ Registry │ │ Manager │ │ │ ║
║ │ │ └────────────────┘ └───────────────────┘ └────────────────────────┘ └─────────────────┘ │ │ ║
║ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ ║
║ │ │ ║
║ │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ ║
║ │ │ 🧠 CONTEXT INTELLIGENCE LAYER │ │ ║
║ │ │ ┌────────────────┐ ┌───────────────────┐ ┌────────────────────────┐ ┌─────────────────┐ │ │ ║
║ │ │ │ 📊 Context │ │ 🎯 Token │ │ 💾 Dataset │ │ 🗄️ Embedding │ │ │ ║
║ │ │ │ Manager │ │ Estimator │ │ Store │ │ Store │ │ │ ║
║ │ │ └────────────────┘ └───────────────────┘ └────────────────────────┘ └─────────────────┘ │ │ ║
║ │ │ ┌────────────────┐ ┌───────────────────┐ ┌────────────────────────┐ ┌─────────────────┐ │ │ ║
║ │ │ │ 🗜️ Compress │ │ 💨 Memory │ │ 🔍 Semantic │ │ 📐 Truncator │ │ │ ║
║ │ │ │ or │ │ Cache │ │ Search │ │ │ │ │ ║
║ │ │ └────────────────┘ └───────────────────┘ └────────────────────────┘ └─────────────────┘ │ │ ║
║ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ ║
║ │ │ ║
║ │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ ║
║ │ │ 🔌 MIDDLEWARE LAYER │ │ ║
║ │ │ ┌────────────────┐ ┌───────────────────┐ ┌────────────────────────┐ ┌─────────────────┐ │ │ ║
║ │ │ │ ⏱️ Rate │ │ 🔄 Interceptor │ │ ⚠️ Error │ │ 📝 Prompt │ │ │ ║
║ │ │ │ Limiter │ │ Chain │ │ Handler │ │ Manager │ │ │ ║
║ │ │ └────────────────┘ └───────────────────┘ └────────────────────────┘ └─────────────────┘ │ │ ║
║ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ ║
║ │ │ ║
║ │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ ║
║ │ │ 🔐 SECURITY LAYER │ │ ║
║ │ │ ┌────────────────┐ ┌───────────────────┐ ┌────────────────────────┐ ┌─────────────────┐ │ │ ║
║ │ │ │ 🛡️ Access │ │ 🔏 Encryption │ │ 🔎 Threat │ │ ✅ Compliance │ │ │ ║
║ │ │ │ Control │ │ │ │ Detection │ │ │ │ │ ║
║ │ │ └────────────────┘ └───────────────────┘ └────────────────────────┘ └─────────────────┘ │ │ ║
║ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ ║
║ │ │ ║
║ │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ ║
║ │ │ 📈 OBSERVABILITY LAYER │ │ ║
║ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ ┌───────────┐ ┌────────────────┐ │ │ ║
║ │ │ │ 📊 │ │ ❤️ │ │ 🔍 │ │ 📋 │ │ 🔔 │ │ 📜 │ │ │ ║
║ │ │ │ Metrics │ │ Health │ │ Tracing │ │ Audit │ │ Alerting │ │ Logging │ │ │ ║
║ │ │ └──────────┘ └──────────┘ └──────────┘ └───────────┘ └───────────┘ └────────────────┘ │ │ ║
║ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ ║
║ │ │ ║
║ │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ ║
║ │ │ 💚 SELF-HEALING LAYER │ │ ║
║ │ │ ┌────────────────┐ ┌───────────────────┐ ┌────────────────────────┐ │ │ ║
║ │ │ │ 🔄 Circuit │ │ 🔁 Auto │ │ 🩺 Health │ │ │ ║
║ │ │ │ Breaker │ │ Retry │ │ Monitor │ │ │ ║
║ │ │ └────────────────┘ └───────────────────┘ └────────────────────────┘ │ │ ║
║ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ ║
║ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ║
║ │ ║
║ ▼ ║
║ ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ║
║ │ 📱 GOOGLE APIS │ ║
║ │ ┌──────────────────────┐ ┌────────────────────────┐ ┌─────────────────────────────────────────┐ │ ║
║ │ │ 📊 │ │ 📜 │ │ 📁 │ │ ║
║ │ │ Sheets API │ │ Apps Script API │ │ Drive API │ │ ║
║ │ └──────────────────────┘ └────────────────────────┘ └─────────────────────────────────────────┘ │ ║
║ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝Request Flow
┌──────────┐ ┌───────────────┐ ┌────────────────┐ ┌──────────────┐ ┌────────────────┐
│ Client │────►│ Tool │────►│ Rate │────►│ Context │────►│ Auth │
│ Request │ │ Registry │ │ Limiter │ │ Engine │ │ Layer │
└──────────┘ └───────────────┘ └────────────────┘ └──────────────┘ └───────┬────────┘
│
┌───────────────────────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────┐ ┌────────────────┐ ┌─────────────┐
│ Google │────►│ Response │────►│ Client │
│ APIs │ │ Builder │ │ Response │
└──────────────┘ └────────────────┘ └─────────────┘Circuit Breaker State Machine
┌───────────────────┐
│ 🔴 CLOSED │
│ (Normal Ops) │
└─────────┬─────────┘
│
failures > threshold
│
▼
┌───────────────────┐
│ 🟠 OPEN STATE │
│ (Rejecting Reqs) │
└─────────┬─────────┘
│
timer expires
│
▼
┌───────────────────┐
│ 🟡 HALF-OPEN │
│ (Test Mode) │
└─────────┬─────────┘
│
┌──────────────────────────┼──────────────────────────┐
│ │ │
success ✓ success ✓ failure ✗
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ CLOSED │ │ CLOSED │ │ OPEN │
│ ✅ │ │ ✅ │ │ 🔴 │
└─────────────┘ └─────────────┘ └─────────────┘🚀 Quick Start
Prerequisites
Installation
# Clone the repository
git clone https://github.com/devfinprojects/GAS-MCPSERVER.git
cd GAS-MCPSERVER
# Install dependencies
npm install
# Build the project
npm run buildEnvironment Setup
# Copy example environment file
cp env.example .env
# Edit configuration
#nano .env # Linux/Mac
#notepad .env # Windows🔧 Configuration
Variable | Description | Default | Required |
| Path to OAuth JSON |
| ✅ Yes |
| HTTP server port |
| ❌ No |
| Logging verbosity |
| ❌ No |
| Rate limit per minute |
| ❌ No |
| Max context tokens |
| ❌ No |
| Enable circuit breaker |
| ❌ No |
| Enable Prometheus metrics |
| ❌ No |
| Enable distributed tracing |
| ❌ No |
| Enable audit logs |
| ❌ No |
| Failure threshold |
| ❌ No |
| Reset timeout (ms) |
| ❌ No |
🛠️ Tools Reference
╔══════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ 100+ MCP TOOLS BREAKDOWN ║
╠══════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ ║
║ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ║
║ │ 🤖 │ │ ⚡ │ │ 📊 │ │ 🧠 │ │ 📝 │ ║
║ │ AI │ │ AUTOMATION │ │ DATA ENGR │ │ CONTEXT │ │ CODE QUALITY │ ║
║ │ TOOLS │ │ TOOLS │ │ TOOLS │ │ TOOLS │ │ TOOLS │ ║
║ │ │ │ │ │ │ │ │ │ │ ║
║ │ • Analysis │ │ • Jobs │ │ • ETL │ │ • Datasets │ │ • Analysis │ ║
║ │ • Anomaly │ │ • Workflows │ │ • Import │ │ • Query │ │ • Review │ ║
║ │ • Patterns │ │ • Webhooks │ │ • Export │ │ • Control │ │ • Doc Gen │ ║
║ │ • Transform │ │ • Triggers │ │ • Mapping │ │ │ │ • Test Gen │ ║
║ │ • NLQ │ │ • Notifs │ │ • Pipeline │ │ │ │ • Types │ ║
║ │ • Recommen- │ │ • Scheduled │ │ • Validation│ │ │ │ │ ║
║ │ dations │ │ │ │ │ │ │ │ │ ║
║ │ │ │ │ │ │ │ │ │ │ ║
║ │ 35+ │ │ 25+ │ │ 25+ │ │ 15+ │ │ 25+ │ ║
║ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════════════════════════════════╝🤖 AI Analysis Tools (35+ tools)
Tool Category | Tools | Description |
📈 Analysis | 8 tools | Data analysis, column analysis, summaries |
🔍 Anomaly Detection | 4 tools | Outlier detection, unusual values |
🔁 Pattern Recognition | 5 tools | Patterns, sequences, cycles, distributions |
🔮 Recommendations | 4 tools | Improvements, chart suggestions |
🧹 Transformation | 5 tools | Data cleaning, reshaping, aggregation |
💬 Natural Language | 5 tools | NL to spreadsheet, formula generation |
Analysis Tools
Tool Name | Parameters | Return Type | Example |
|
|
|
|
|
|
|
|
|
|
|
|
Anomaly Detection
Tool Name | Parameters | Return Type | Example |
|
|
|
|
|
|
|
|
|
|
|
|
Pattern Recognition
Tool Name | Parameters | Return Type | Example |
|
|
|
|
|
|
|
|
|
|
|
|
Transformation
Tool Name | Parameters | Return Type | Example |
|
|
|
|
|
|
|
|
|
|
|
|
Natural Language Query
Tool Name | Parameters | Return Type | Example |
|
|
|
|
|
|
|
|
|
|
|
|
⚡ Automation Tools (25+ tools)
Tool Category | Tools | Description |
📅 Job Scheduler | 8 tools | Create, manage, trigger scheduled jobs |
🔀 Workflows | 7 tools | Multi-step automation workflows |
🪝 Webhooks | 9 tools | Event-driven triggers |
⏰ Triggers | 6 tools | Spreadsheet trigger management |
🔔 Notifications | 12 tools | Alerts and notifications |
Job Scheduler
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Workflows
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Webhooks
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
📊 Data Engineering Tools (25+ tools)
Tool Category | Tools | Description |
🔄 ETL | 5 tools | Extract, transform, load pipelines |
📥 Import/Export | 6 tools | CSV, JSON, batch operations |
🗺️ Mapping | 5 tools | Schema detection and mapping |
📦 Pipeline | 5 tools | Data pipeline management |
✅ Validation | 5 tools | Data quality and schema validation |
ETL Tools
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
|
|
|
Import/Export
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pipeline
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
🧠 Context Tools (15+ tools)
Tool Category | Tools | Description |
💾 Dataset | 5 tools | Store, query, manage datasets |
🔍 Query | 4 tools | Search and retrieve context |
🎛️ Control | 6 tools | Context mode and optimization |
Dataset Tools
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Query Tools
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
|
|
|
Context Control
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
| — |
|
|
|
|
|
|
|
📝 Code Quality Tools (25+ tools)
Tool Category | Tools | Description |
📊 Analysis | 5 tools | Code quality and complexity |
👀 Review | 3 tools | Automated code reviews |
📚 Documentation | 4 tools | JSDoc generation |
🧪 Test Generation | 3 tools | Unit test creation |
✅ Type Checking | 3 tools | Type validation |
Analysis Tools
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
Code Review
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
Documentation
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
Test Generation
Tool Name | Parameters | Return Type |
|
|
|
|
|
|
|
|
|
🔐 Security
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ 🔐 SECURITY ARCHITECTURE │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 🔒 OAuth2 │────►│ 🛡️ RBAC │────►│ 🔏 AES-256 │────►│ 📋 Audit │ │
│ │ + Token │ │ + Roles │ │ Encryption │ │ Logging │ │
│ │ Refresh │ │ + Perms │ │ + at Rest │ │ + SOC2 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘✅ OAuth2 with automatic token refresh
✅ Role-Based Access Control (RBAC)
✅ AES-256 encryption at rest
✅ Comprehensive audit logging
✅ SOC2 and GDPR ready
✅ Threat detection and prevention
📈 Observability
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ 📈 OBSERVABILITY DASHBOARD │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐│
│ │ 📊 │ │ ❤️ │ │ 🔍 │ │ 🔔 ││
│ │ METRICS │ │ HEALTH │ │ TRACING │ │ ALERTING ││
│ │ │ │ │ │ │ │ ││
│ │ Prometheus │ │ Liveness │ │ Distributed │ │ Rule-based ││
│ │ Compatible │ │ + Readiness │ │ Spans │ │ Notifications││
│ │ │ │ │ │ │ │ ││
│ │ • Request │ │ • /health │ │ • Jaeger │ │ • Email ││
│ │ Rate │ │ • /ready │ │ Compatible │ │ • Slack ││
│ │ • Latency │ │ • Custom │ │ • Custom │ │ • Webhook ││
│ │ • Errors │ │ Checks │ │ Tags │ │ • PagerDuty ││
│ └────────────────┘ └────────────────┘ └────────────────┘ └────────────────┘│
│ │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐│
│ │ 📜 AUDIT LOGGING ││
│ │ ││
│ │ • Every API call logged • User/agent tracking • Immutable records ││
│ │ • Queryable logs • Export to SIEM • Retention policies ││
│ └─────────────────────────────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────────────────────────┘💚 Self-Healing
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ 💚 SELF-HEALING MECHANISMS │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ 🔄 CIRCUIT │ │ 🔁 AUTO │ │ 🩺 HEALTH │ │
│ │ BREAKER │ │ RETRY │ │ MONITOR │ │
│ │ │ │ │ │ │ │
│ │ • Open │ │ • Exponential │ │ • Periodic │ │
│ │ • Half-Open │ │ Backoff │ │ Checks │ │
│ │ • Closed │ │ • Max Attempts│ │ • Recovery │ │
│ │ │ │ • Jitter │ │ Actions │ │
│ └────────────────┘ └────────────────┘ └────────────────┘ │
│ │
│ ═══════════════════════════════════════════════════════════════════════════════ │
│ │
│ Configuration: │
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
│ │ circuitBreaker: { failureThreshold: 5, resetTimeoutMs: 30000 } │ │
│ │ maxRetries: 3, backoffMultiplier: 2, maxBackoffMs: 30000 │ │
│ │ healthCheckInterval: 10000, recoveryThreshold: 3 │ │
│ └─────────────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────────┘📦 Examples
import { createClient } from '@modelcontextprotocol/sdk';
const client = await createClient({
serverUrl: 'http://localhost:3000',
auth: { token: process.env.MCP_TOKEN }
});
// Create a new spreadsheet
const spreadsheet = await client.tools.create_spreadsheet({
title: 'Sales Dashboard 2024',
sheets: [
{ title: 'Q1 Data', rowCount: 1000, columnCount: 26 },
{ title: 'Q2 Data', rowCount: 1000, columnCount: 26 },
{ title: 'Summary', rowCount: 100, columnCount: 10 }
]
});
console.log(`Created: ${spreadsheet.spreadsheetId}`);
// Add data to the spreadsheet
await client.tools.update_values({
spreadsheetId: spreadsheet.spreadsheetId,
range: 'Q1 Data!A1',
values: [
['Product', 'Revenue', 'Quantity'],
['Widget A', 15000, 150],
['Widget B', 23000, 230],
['Widget C', 18000, 180]
]
});// Analyze spreadsheet data with AI
const analysis = await client.tools.analyze_sheet_data({
spreadsheetId: 'abc123',
range: 'Sales!A1:Z1000',
includeCharts: true,
generateInsights: true
});
console.log('Analysis Results:');
console.log(`- Total Rows: ${analysis.summary.rowCount}`);
console.log(`- Columns: ${analysis.summary.columns.join(', ')}`);
console.log(`- Insights: ${analysis.insights.length}`);
// Detect anomalies in the data
const anomalies = await client.tools.detect_outliers({
spreadsheetId: 'abc123',
range: 'Sales!B1:B1000',
method: 'iqr',
threshold: 1.5
});
console.log(`Found ${anomalies.outliers.length} outliers`);// Create and run an ETL pipeline
const pipeline = await client.tools.create_pipeline({
name: 'Daily Sales ETL',
schedule: '0 2 * * *', // 2 AM daily
steps: [
{
id: 'extract',
type: 'extract',
source: {
type: 'spreadsheet',
spreadsheetId: 'source-id',
range: 'Raw Data!A1:Z'
}
},
{
id: 'transform',
type: 'transform',
operations: [
{ type: 'filter', condition: { column: 'status', equals: 'active' } },
{ type: 'map', mappings: { old_col: 'new_col' } },
{ type: 'aggregate', groupBy: 'region', operations: ['sum', 'avg', 'count'] }
]
},
{
id: 'load',
type: 'load',
destination: {
type: 'spreadsheet',
spreadsheetId: 'dest-id',
sheet: 'Processed'
}
}
]
});
// Run the pipeline
const result = await client.tools.run_pipeline({
pipelineId: pipeline.pipelineId,
inputs: {}
});
console.log(`Processed ${result.rowsProcessed} rows in ${result.duration}ms`);🤝 Contribution
# 1. Fork the repository
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/GAS-MCPSERVER.git
# 3. Create a feature branch
git checkout -b feature/amazing-feature
# 4. Install dependencies
npm install
# 5. Make your changes
# 6. Run tests
npm test
# 7. Build the project
npm run build
# 8. Commit and push
git commit -m 'Add amazing feature'
git push origin feature/amazing-feature
# 9. Open a Pull RequestDevelopment Scripts
Script | Description |
| Compile TypeScript |
| Start production server |
| Start development server |
| Run tests |
| Run tests in watch mode |
📄 License
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.