Planview MCP Server
Provides Okta passwordless authentication for accessing Planview Enterprise One, allowing users to authenticate via Okta Verify without passwords.
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., "@Planview MCP Serverlist my work items"
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.
Planview MCP Server
MCP server for Planview Enterprise One with Okta passwordless authentication and automated timesheet completion.
What This Does
🔐 Authenticate to Planview using Okta Verify (no passwords)
📊 Access Planview API (work items, projects, users)
🤖 Auto-complete timesheets with
/complete-timesheetscommand
Related MCP server: Timesheet MCP Server
Quick Start
Step 1: Clone and Install
git clone <your-repo-url>
cd planview-mcp
npm install
npx playwright install chromiumStep 2: Configure
Linux/macOS:
cp .mcp.json.example .mcp.json
nano .mcp.json # or use any text editorWindows:
copy .mcp.json.windows.example .mcp.json
notepad .mcp.json # or use any text editorEdit the env section in .mcp.json with your Planview details:
PLANVIEW_BASE_URL: Your company's Planview URLOKTA_USERNAME: Your email address
Step 3: Authenticate
npm run okta-loginThis opens a browser and waits for you to approve the Okta Verify notification on your phone.
Step 4: Build and Restart Claude
npm run buildThen restart Claude Code to load the MCP server.
Usage
Available Commands
Command | Description |
| Auto-fills all overdue timesheets (8h/day, 40h/week) |
Available Tools
Use these directly in Claude:
planview_get_work_items- List work itemsplanview_get_projects- List projectsplanview_get_current_user- Get your user infoplanview_update_work_item- Update a work itemplanview_execute_request- Make custom API calls
More Examples
See EXAMPLES.md for detailed usage examples including:
Timesheet automation workflows
Work item management
Custom API requests
Creating your own commands
Troubleshooting tips
How It Works
This setup uses two MCP servers:
Planview MCP (this repo) - Handles Planview API and authentication
Playwright MCP (auto-installed) - Handles browser automation for timesheets
Both are configured in your .mcp.json file. Playwright MCP downloads automatically when Claude starts.
Authentication flow:
You run
npm run okta-loginonceCreates
planview-auth.jsonwith your sessionBoth MCP servers use this session file
Re-authenticate when session expires
Troubleshooting
Problem | Solution |
"Authentication error" | Run |
"Can't see browser during login" | Add |
Windows npx warning | Use |
"Timesheet automation fails" | Check |
"Missing PLANVIEW_BASE_URL" | Check the |
Configuration
Local Setup (Recommended)
Use .mcp.json in this repo directory.
Linux/macOS: Uses npx directly
{
"mcpServers": {
"planview": {
"command": "node",
"args": ["dist/index.js"],
"env": {
"PLANVIEW_BASE_URL": "https://yourcompany.pvcloud.com/planview",
"PLANVIEW_STORAGE_STATE": "planview-auth.json",
"OKTA_USERNAME": "your.email@company.com"
}
},
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
}
}
}Windows: Requires cmd /c wrapper
{
"mcpServers": {
"planview": {
"command": "node",
"args": ["dist/index.js"],
"env": {
"PLANVIEW_BASE_URL": "https://yourcompany.pvcloud.com/planview",
"PLANVIEW_STORAGE_STATE": "planview-auth.json",
"OKTA_USERNAME": "your.email@company.com"
}
},
"playwright": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@playwright/mcp@latest"]
}
}
}Global Setup (All Projects)
Add to Claude Code MCP settings with absolute paths.
Linux/macOS:
{
"mcpServers": {
"planview": {
"command": "node",
"args": ["/full/path/to/planview-mcp/dist/index.js"],
"env": {
"PLANVIEW_BASE_URL": "https://yourcompany.pvcloud.com/planview",
"PLANVIEW_STORAGE_STATE": "/full/path/to/planview-mcp/planview-auth.json",
"OKTA_USERNAME": "your.email@company.com"
}
},
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
}
}
}Windows:
{
"mcpServers": {
"planview": {
"command": "node",
"args": ["C:\\full\\path\\to\\planview-mcp\\dist\\index.js"],
"env": {
"PLANVIEW_BASE_URL": "https://yourcompany.pvcloud.com/planview",
"PLANVIEW_STORAGE_STATE": "C:\\full\\path\\to\\planview-mcp\\planview-auth.json",
"OKTA_USERNAME": "your.email@company.com"
}
},
"playwright": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@playwright/mcp@latest"]
}
}
}Why Clone Instead of Direct Install?
This MCP requires cloning because:
Authentication creates
planview-auth.jsonlocallyBoth MCP servers need access to the same auth file
Each company has different Planview URLs
Configuration is set in
.mcp.json(committed to repo)
Direct GitHub URL installation won't work due to these local file requirements.
Development
npm run dev # Watch mode (auto-rebuild)
npm run build # Build once
npm start # Run server manuallyAPI Documentation
View Planview API docs at: https://yourcompany.pvcloud.com/planview/swagger/index.html
Security
Never commit these files (already in .gitignore):
.mcp.json- Your configuration with credentialsplanview-auth.json- Your session
License
MIT
This server cannot be installed
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JosiahSiegel/planview-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server