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