Skip to main content
Glama
russelenriquez-agile

Tableau MCP Server

README.md
# Tableau MCP Server

A Model Context Protocol (MCP) server for Tableau Cloud and Tableau Server operations.

## Project Status

**Current Phase: Phase 6 Complete** ✅ - **Ready for Cloud Run Deployment**

### Completed Phases
- ✅ Phase 1: Project Setup
- ✅ Phase 2: Tableau API Client (13 methods)
- ✅ Phase 3: MCP Server Core (SSE transport, authentication)
- ✅ Phase 4: Core MCP Tools (6 tools)
- ✅ Phase 5: Advanced MCP Tools (3 tools)
- ✅ **Phase 6: Cloud Run Deployment Infrastructure** ✨ NEW!

### Phase 6 Deliverables
- ✅ Optimized multi-stage Dockerfile
- ✅ Staging and production Cloud Run configurations
- ✅ Automated deployment scripts (`deploy-staging.sh`, `deploy-production.sh`)
- ✅ Secrets management automation (`create-secrets.sh`)
- ✅ Comprehensive deployment documentation (2,000+ lines)
- ✅ Automated testing script (`smoke-test.sh`)
- ✅ Monitoring and logging guides

### Next Steps
1. **Deploy to staging**: Run `./deploy-staging.sh` (requires Google Cloud project)
2. **Test deployment**: Run `./smoke-test.sh staging`
3. **Phase 7**: Create Cursor MCP configuration file
4. **Phase 8**: Comprehensive testing and documentation

See `PHASE_6_LOG.md` for detailed Phase 6 implementation notes.  
See `PASS_OFF.md` for complete project roadmap.

## Project Structure

```
tableau-mcp-project/
├── src/
│   ├── server.ts              # Main MCP server (Phase 3)
│   ├── tableau-client.ts      # Tableau API client (Phase 2)
│   ├── tools/                 # MCP tool implementations (Phase 4-5)
│   │   ├── list-workbooks.ts
│   │   ├── list-views.ts
│   │   ├── query-view.ts
│   │   ├── refresh-extract.ts
│   │   ├── search-content.ts
│   │   └── get-metadata.ts
│   └── types.ts               # TypeScript type definitions
├── package.json
├── tsconfig.json
├── Dockerfile                 # Cloud Run deployment (Phase 6)
└── env.example               # Environment variable template
```

## Development Scripts

```bash
# Install dependencies
npm install

# Run in development mode with hot reload
npm run dev

# Build for production
npm run build

# Run production build
npm start

# Clean build artifacts
npm run clean
```

## Quick Start - Cloud Run Deployment (Phase 6)

### Prerequisites
- Google Cloud Project with billing enabled
- gcloud CLI installed and authenticated
- Docker installed locally
- Tableau Personal Access Token

### Deploy to Staging

1. **Create secrets**:
```bash
chmod +x create-secrets.sh
./create-secrets.sh staging
```

2. **Deploy service**:
```bash
chmod +x deploy-staging.sh
./deploy-staging.sh
```

3. **Test deployment**:
```bash
chmod +x smoke-test.sh
./smoke-test.sh staging
```

### Deploy to Production (When Ready)

```bash
# Create production secrets
./create-secrets.sh production

# Deploy to production
chmod +x deploy-production.sh
./deploy-production.sh

# Test production deployment
./smoke-test.sh production
```

### Comprehensive Guides

- **Deployment**: See `DEPLOYMENT_GUIDE.md`
- **Secrets**: See `SECRETS_SETUP.md`
- **Testing**: See `TEST_DEPLOYMENT.md`
- **Monitoring**: See `MONITORING_GUIDE.md`
- **Phase 6 Log**: See `PHASE_6_LOG.md`

## Environment Configuration

Copy `env.example` to `.env` and configure:

```env
TABLEAU_SERVER_URL=https://your-server.tableau.com
TABLEAU_SITE_ID=your-site
TABLEAU_TOKEN_NAME=your-token-name
TABLEAU_TOKEN_VALUE=your-token-value
MCP_API_KEY=secure-random-key-here
PORT=8080
TABLEAU_API_VERSION=3.21
```

## Dependencies

### Core Dependencies
- `@modelcontextprotocol/sdk` (^1.0.4) - MCP Server SDK
- `express` (^4.21.2) - HTTP server for SSE transport
- `axios` (^1.7.9) - HTTP client for Tableau REST API
- `zod` (^3.24.1) - Schema validation
- `dotenv` (^16.4.7) - Environment variable management

### Development Dependencies
- `typescript` (^5.7.2) - TypeScript compiler
- `tsx` (^4.19.2) - TypeScript execution and hot reload
- `@types/node` & `@types/express` - Type definitions

## Phase 1 Implementation Log

See `PHASE_1_LOG.md` for detailed implementation steps.

## Next Implementation Phase

See `PASS_OFF.md` for Phase 2-8 implementation details.

---

**License**: MIT  
**Author**: Agile Market Intelligence