Master Team
Back to all articles
PPlusDashboardMCP

[BETA] AI-Powered Dashboard Building with Claude Code

Build complete executive dashboards on the MasterTeam PPlus platform using Claude Code and a knowledge repository — turning days of manual configuration into minutes of AI-driven automation. Now with MCP server support for instant knowledge access.

Choose Your Method

There are now two ways to use the PPlus knowledge base with Claude Code for dashboard building. Pick the one that fits your workflow:

Method A: MCP Server (Recommended)Method B: Manual Prompt
Setup time~2 minutes (one-time install)None — copy-paste the prompt each session
How it worksClaude gets 8 dedicated tools that query the knowledge base in real-timeClaude reads the GitHub repo files directly during execution
SpeedInstant lookups — no need to re-read files each sessionMust re-read knowledge files every new conversation
Best forRepeated dashboard work, multiple instances, ongoing PPlus projectsOne-off dashboard builds or quick trials
Knowledge accessAlways available — tools are loaded at startupPer-session — Claude must be told to read the repo each time
RequiresNode.js installed locallyGitHub access or local clone

Both methods use the same underlying knowledge base and produce identical results. The MCP server simply gives Claude permanent, structured access to the knowledge without re-reading files every time.


What is the PPlus Knowledge MCP?

The PPlus-Agent is a Model Context Protocol server that gives Claude Code 8 specialized tools for querying the PPlus v4 knowledge base. Instead of Claude reading raw markdown files, it can search, filter, cross-reference, and retrieve exactly the information it needs — instantly.

MCP Tools Available

ToolWhat It Does
search_knowledgeNatural language search across all 38 knowledge chunks — architecture, APIs, frontend, backend, admin, data models, instances, integrations
read_chunkRead the full content of a specific knowledge chunk by ID, with optional section filtering
list_chunksList all available chunks, optionally filtered by category
get_relatedGraph traversal of related chunks — follow cross-references 1-3 levels deep
get_api_endpointFind API endpoint documentation by HTTP method and path
get_instance_configGet instance-specific configuration (Masar, Cruise Saudi, C2/Cluster2, G-PMO, Diwan, MHC JOSOUR) — levels, dashboards, branding, logs
get_admin_configQuery admin panel config across all 12 tabs — level settings, cards management, log properties, lookups, permissions, process builder
get_dashboard_guideGet dashboard building guides — chart types, replication process, API payloads, property mapping

Installation (One-Time Setup)

Step 1: Clone the MCP server

git clone https://github.com/MasterteamSA/PPlus-Agent.git
cd PPlus-Agent
npm install
npm run build

Or if you already have it locally:

cd ~/OneDrive/Desktop/PPlus-Agent
npm install && npm run build

Step 2: Clone the knowledge base (if you haven't already)

git clone https://github.com/MasterteamSA/pplus-knowledge.git

Step 3: Configure Claude Code

Create or edit the file ~/.mcp.json (in your home directory):

{
  "mcpServers": {
    "pplus-knowledge": {
      "command": "node",
      "args": ["/full/path/to/PPlus-Agent/dist/index.js"],
      "env": {
        "PPLUS_KNOWLEDGE_PATH": "/full/path/to/pplus-knowledge/knowledge"
      }
    }
  }
}

Replace the paths with your actual directories. On Windows:

{
  "mcpServers": {
    "pplus-knowledge": {
      "command": "node",
      "args": ["C:\\Users\\YourName\\PPlus-Agent\\dist\\index.js"],
      "env": {
        "PPLUS_KNOWLEDGE_PATH": "C:\\Users\\YourName\\pplus-knowledge\\knowledge"
      }
    }
  }
}

Step 4: Restart Claude Code

Close and reopen Claude Code. You should see the pplus-knowledge MCP server connect on startup. Claude now has permanent access to all 38 knowledge chunks across 8 categories.

Using the MCP Server for Dashboard Building

Once installed, you can simply tell Claude what you need. No need to point it at files or paste long prompts. The MCP tools are always available.

Example conversations:

You: Replicate dashboard 5 from Cruise Saudi to MHC JOSOUR instance.
     Source: https://cruise.example.com
     Target: https://mhc.example.com

Claude: [Uses search_knowledge to find replication guide]
        [Uses get_instance_config for both Cruise and MHC]
        [Uses get_api_endpoint to find the save mechanism]
        [Uses get_dashboard_guide for chart type mappings]
        [Proceeds with extraction, mapping, building, saving]
You: What log modules does the G-PMO instance have?

Claude: [Uses get_instance_config("g-pmo", aspect="logs")]
        → Returns all 17 log types with 239 total properties
You: How do I build a financial performance bar chart?

Claude: [Uses search_knowledge("financial bar chart")]
        [Uses get_related to find connected API and frontend docs]
        → Returns the exact serviceConfig structure with multi-source
          setup, sourceLinks, and series definitions
You: Show me the admin settings for Cards Management

Claude: [Uses get_admin_config("cards management")]
        → Returns all 7 config sections with 50+ progress toggles

The MCP server handles all the knowledge retrieval. Claude can focus entirely on the actual dashboard building work.

MCP Prompt for Dashboard Replication

When using the MCP method, your prompt is much simpler because Claude already has the knowledge tools:

Replicate executive dashboard from one PPlus instance to another.

Source Instance: [https://source-instance.example.com]
Target Instance: [https://target-instance.example.com]
Source Dashboard ID: [5]
Target Dashboard ID: [5]

Use the pplus-knowledge MCP tools to:
1. Look up the dashboard replication guide (search_knowledge)
2. Get the API endpoint documentation (get_api_endpoint)
3. Check instance configs if available (get_instance_config)
4. Reference chart type mappings (get_dashboard_guide)

Then follow the 6-phase process:
- Phase 1: Extract source dashboard config via API
- Phase 2: Discover target instance structure (levels, properties, logs)
- Phase 3: Build each chart with correct property key mappings
- Phase 4: Handle multi-source and special chart types
- Phase 5: Save via POST /api/Dashboards/Charts/Link and verify
- Phase 6: Screenshot, test popups, document results

Remember: "configration" and "fuctionName" are intentionally misspelled in the API.
DashboardId must be a string. Only use the Charts/Link endpoint to save.

Method B: Manual Prompt (No Installation Required)

If you prefer not to install the MCP server, or you're doing a one-off dashboard build, you can use the original manual prompt method. Claude reads the knowledge repository files directly during execution.


The Problem

You have a project management platform with dozens of dashboard widgets — KPI cards, donut charts, bar charts, phase gates, timelines, risk matrices — and a client asks you to replicate a working dashboard from one instance to another.

Traditionally, this means:

  1. Logging into the source instance and manually inspecting every chart configuration
  2. Documenting each chart's data source, property keys, filters, and layout positions
  3. Logging into the target instance and discovering its unique level hierarchy and property keys
  4. Manually creating each widget through the admin UI, mapping source properties to target equivalents
  5. Debugging why half the charts show no data because property keys are instance-specific
  6. Fixing labels — "Programs" in one instance is "Departments" in another
  7. Testing every popup, filter, and drill-down interaction

For a 14-chart executive dashboard, this takes 2-3 days of meticulous manual work.

With Claude Code and a structured knowledge repository, the entire process takes under 30 minutes.


What You'll Build

A fully functional executive dashboard replicated from a source PPlus instance to a target instance, including:

  • KPI overview cards — portfolio count, department count, project count, risks, issues, support needed
  • SPI indicator — average schedule performance index
  • Performance bar charts — progress performance with actual/planned/baseline series
  • Financial bar charts — budget/spent/remaining stacked by portfolio
  • Action tracker donut — task breakdown by category
  • Status donuts — portfolios and projects grouped by status
  • Phase gates table — project phase completion matrix
  • Timeline views — Gantt-style portfolio and department timelines
  • Risk matrix — classification heatmap
  • All popup interactions — clicking any chart navigates to the correct filtered module

Prerequisites

Before you start, you need:

  1. Claude Code — installed and running with the Chrome browser extension for browser automation
  2. Admin access to both the source and target PPlus instances
  3. The knowledge repository — clone the pplus-knowledge repo for API reference and dashboard structure documentation
  4. A logged-in browser session on the target instance (Claude reads the JWT token from localStorage)

Prompt

Copy and paste the following prompt into Claude Code. Make sure you have the knowledge repository cloned and a logged-in browser session on the target instance before running.

────────────────────────────────────────────────────────
CONFIGURATION (change these values per engagement)
────────────────────────────────────────────────────────
Knowledge Repo   : https://github.com/MasterteamSA/pplus-knowledge
Source Instance   : [https://source-instance.example.com]
Target Instance   : [https://target-instance.example.com]
Source Dashboard ID : [5]           ← the dashboard ID to replicate
Target Dashboard ID : [5]           ← the dashboard ID to save to on target
Source Instance Name : [Cruise]     ← human-readable name for reference
Target Instance Name : [MHC JOSOUR] ← human-readable name for reference
Language          : [AR/EN]         ← bilingual labels (Arabic + English)
────────────────────────────────────────────────────────

I need you to replicate an executive dashboard from one PPlus v4 instance
to another. The source and target instances have different property keys,
level names, and module IDs — so this is NOT a simple copy-paste.

IMPORTANT: Before you begin, read the knowledge repository at:
https://github.com/MasterteamSA/pplus-knowledge

Specifically read these files in order:
1. knowledge/api-reference/dashboards-api.md — for all API endpoints
2. knowledge/api-reference/dashboard-replication-guide.md — for the save
   mechanism, chart type mappings, and configuration patterns
3. knowledge/api-reference/dashboard-building-with-claude.md — for the
   end-to-end process and common pitfalls
4. knowledge/frontend/executive-dashboard-widgets.md — for widget type
   documentation and handler function mappings

PHASE 1 — EXTRACT SOURCE DASHBOARD
───────────────────────────────────
1. Navigate to the source instance: [Source Instance URL]
2. Open the browser DevTools or use localStorage to read the JWT auth token
3. Call GET /api/dashboards/[Source Dashboard ID] with the auth token
4. Parse the response — the dashboard configuration is in the "configration"
   field (note: misspelled in the API, this is intentional)
5. The configration field contains a JSON string. Parse it to get the
   charts array
6. For EACH chart in the array, document:
   - Chart index and title (clientConfig.title.en / title.ar)
   - Chart type (serviceConfig.chartType)
   - Handler function (clientConfig.fuctionName — note: misspelled, intentional)
   - Component name (clientConfig.componentName)
   - Grid position (x, y, cols, rows)
   - Data sources (serviceConfig.selection — moduleType, moduleId)
   - Source links (serviceConfig.sourceLinks — for multi-source charts)
   - Query series (serviceConfig.query.series — valueProperty, aggregateFunction,
     groupByProperties)
   - Popup configuration (clientConfig.popUpModule, popUpModuleId)
   - Colors and icons (clientConfig.color, clientConfig.icon)
7. Save this as a structured reference — you will use it to build the
   target dashboard

PHASE 2 — DISCOVER TARGET INSTANCE STRUCTURE
─────────────────────────────────────────────
1. Navigate to the target instance: [Target Instance URL]
2. Read the JWT auth token from localStorage
3. Call GET /api/levels to discover the level hierarchy
4. For EACH level returned, note:
   - Level ID (the numeric ID used in moduleId)
   - Level Name (the internal key like "K_Portfolio_fPYxTWzhD0FmZp19")
   - Level Display Name (the human-readable name)
5. For EACH level, call POST /api/dashboards/Chart with a TableView query
   to fetch sample records:
   {
     "chartType": "TableView",
     "selection": [{"id": 1, "moduleType": "Level", "moduleId": "[LEVEL_ID]"}],
     "query": {"series": [{"valueProperty": "*"}]}
   }
6. From the returned records, extract ALL property keys and their prefixes
   Example: if Level 3 returns records with keys starting with
   "K_Portfolio_fPYxTWzhD0FmZp19_", that is the property prefix for Level 3
7. Build a COMPLETE property mapping table:
   Source Property Key → Target Property Key
   Example:
     portfolio_Name → K_Portfolio_fPYxTWzhD0FmZp19_Name
     portfolio_status → K_Portfolio_fPYxTWzhD0FmZp19_status
     portfolio_Id → K_Portfolio_fPYxTWzhD0FmZp19_Id
     program_Name → K_Program_uK0V04UuJHSzk_ul_Name
     project_Name → project_Name (sometimes unchanged)
8. Also discover Log modules (Risks, Issues, Tasks, etc.):
   - Test Log module IDs 0 through 10 with Count queries
   - Identify which Log ID contains Risks, Issues, Tasks, etc.
   - Map source Log IDs to target Log IDs

PHASE 3 — BUILD EACH CHART
───────────────────────────
For EACH chart from the source dashboard, construct the target version:

1. COPY the grid position (x, y, cols, rows) exactly from the source
2. KEEP the same chartType, fuctionName, componentName, and chartTypeId
3. REPLACE all property keys using the mapping table from Phase 2:
   - valueProperty in each series
   - groupByProperties in each series
   - extraProperties if present
   - source1LinkProperty and source2LinkProperty in sourceLinks
   - lookupProperty if present (for phase gates)
4. REPLACE all moduleId values:
   - Level moduleIds: map source level IDs to target level IDs
   - Log moduleIds: map source log IDs to target log IDs
5. UPDATE labels if terminology differs:
   - If source says "Programs" but target uses "Departments", update
     both title.en and title.ar
   - Check popUpModule and popUpModuleId match the target structure
6. PRESERVE all visual configuration:
   - Colors (clientConfig.color)
   - Icons (clientConfig.icon)
   - Chart dimensions and styling
7. GENERATE new unique IDs:
   - Each chart needs a unique dashboardId in serviceConfig
   - Each series needs a unique key
   - Use UUID v4 format or similar unique strings
8. TEST each chart BEFORE adding it to the final configuration:
   - Call POST /api/dashboards/Chart with the chart's serviceConfig
   - Verify the response contains data (not empty arrays)
   - If no data returns, check:
     a. Is the moduleId correct for the target?
     b. Are the property keys valid?
     c. Are the sourceLinks connecting the right levels?
     d. Does the aggregateFunction match an existing property type?

PHASE 4 — HANDLE SPECIAL CHART TYPES
─────────────────────────────────────
Some charts need extra attention:

OVERVIEW CARDS (CardViewV2Chart):
- Must use fuctionName: "handleOverviewCard"
- Must use componentName: "cardsStatistic"
- The popUpModuleId must match the target level/log ID
- Count queries need the _Id property (e.g., K_Portfolio_..._Id)

DONUT CHARTS (PieV2Chart):
- Must use fuctionName: "handleDonutChart"
- groupByProperties must reference a valid property in the target
- Status grouping: use the _status property for the correct level

BAR CHARTS (BarV2Chart / StackBarV2Chart):
- Multi-series charts need each series correctly mapped
- Financial charts: budget, spent, remaining properties may have
  different names per instance
- groupByProperties determine the X-axis labels

TIMELINE CHARTS (TimelineChart):
- Must use componentName: "timelineMultiViewChart"
- Must use fuctionName: "handleTimelineMultiViewChart"
- Requires _startDate, _finishDate, _Name, _status in extraProperties
- The moduleId must point to the correct level (portfolio or department)

PHASE GATES TABLE (TableView):
- Must use componentName: "phaseGateTable"
- Must use fuctionName: "handleTableView"
- lookupProperty should be "Phase_LevelId"
- selectedProperties must include "project_allPhasesCompleted"

MULTI-SOURCE CHARTS:
- Financial performance, action trackers, and some bar charts pull from
  multiple levels/logs
- Each source in the selection array needs the correct moduleId
- sourceLinks connect sources via parent-child relationships:
  source1LinkProperty: the parent's _Id property
  source2LinkProperty: "parentLevelId" (for level-to-level links)
  or "LevelId" (for level-to-log links)

PHASE 5 — ASSEMBLE AND SAVE
────────────────────────────
1. Combine ALL chart objects into a single charts array
2. Wrap in the configuration structure:
   {"charts": [chart0, chart1, chart2, ...]}
3. JSON-stringify the entire object to create the configration string
4. Save via POST /api/Dashboards/Charts/Link with body:
   {
     "DashboardId": "[Target Dashboard ID]",  ← MUST be a string
     "configration": "[double-serialized JSON string]"
   }
   CRITICAL: DashboardId must be a STRING (e.g., "5" not 5)
   CRITICAL: configration is the JSON.stringify() of the charts object
   CRITICAL: Do NOT use PUT /api/dashboards/{id} — it does NOT save charts
5. Navigate to the user-facing URL to verify:
   [Target Instance URL]/#/en/remote3/[Target Dashboard ID]
6. Take a screenshot of the full dashboard
7. Click on each chart to verify popup navigation works
8. If any chart shows no data or wrong data:
   - Go back to Phase 3 for that specific chart
   - Re-check property keys and module IDs
   - Fix and re-save the entire configuration

PHASE 6 — VERIFY AND DOCUMENT
──────────────────────────────
After the dashboard is working:
1. Screenshot the complete dashboard from the user view
2. List all charts with their status (working / needs attention)
3. Document any property mappings that were discovered
4. Note any terminology differences between source and target
5. If possible, push the new property mappings back to the knowledge
   repository for future use

IMPORTANT REMINDERS:
- The API field is "configration" (misspelled) — do NOT correct it
- The API field is "fuctionName" (misspelled) — do NOT correct it
- DashboardId in the save endpoint MUST be a string
- Always test individual charts before saving the full configuration
- If a chart returns empty data, the issue is ALWAYS property keys or
  module IDs — never assume the data doesn't exist
- The 36-column grid means x + cols should not exceed 36
- Header charts typically span the full width: x:0, cols:36, rows:1

Required Files

#ResourcePurposeNotes
1Knowledge RepositoryAPI reference, chart type mappings, configuration patternsClone locally or let Claude read directly from GitHub
2Source instance accessDashboard to replicateMust have admin access and be logged in
3Target instance accessWhere the dashboard will be createdMust have admin access and be logged in

Architecture: How the Dashboard Builder Works

The PPlus Dashboard System

Every PPlus v4 dashboard is stored as a single JSON configuration string in the database. This configuration contains an array of chart objects, each with:

  • Grid position — x, y, cols, rows (36-column grid)
  • Service config — data source selection, source links, chart type, query with series definitions
  • Client config — visual settings, chart handler function, component name, title, colors, popup behavior

The Save Mechanism

This is the most critical discovery. The dashboard is saved via a specific endpoint:

POST /api/Dashboards/Charts/Link

With the body:

{
  "DashboardId": "5",
  "configration": "{\"charts\":[...]}"
}

Key gotchas:

  • DashboardId must be a string, not a number
  • configration is double-serialized — the charts array is JSON-stringified inside the JSON body
  • The PUT /api/dashboards/id endpoint does not save the chart configuration
  • Only this specific POST endpoint works

Chart Type Mapping

Each chart type requires a specific combination of handler function and component:

Chart TypeService ConfigHandler FunctionComponent
KPI CardCardViewV2CharthandleOverviewCardcardsStatistic
DonutPieV2CharthandleDonutChartchart
Bar ChartBarV2CharthandleBarChartchart
Stacked BarStackBarV2CharthandleBarChartchart
TableTableViewhandleTableViewphaseGateTable
TimelineTimelineCharthandleTimelineMultiViewCharttimelineMultiViewChart
GaugeGaugeV2CharthandleGaugeChartchart

Using the wrong combination causes the chart to render as an empty box with no errors — making it extremely difficult to debug without documentation.


The Process (Step-by-Step)

Phase 1: Extract Source Dashboard Configuration

Open Claude Code and navigate to the source instance. Claude uses the browser automation to:

  1. Read the authentication tokens from localStorage
  2. Call GET /api/dashboards/id to fetch the complete dashboard configuration
  3. Parse the charts.configration JSON string to extract all chart objects
  4. Document each chart's data sources, property keys, and layout

What Claude discovers:

Chart 0:  Header — "Executive Dashboard" (36 cols, dark blue)
Chart 1:  SPI card — Level:1, Avg(project_actualProgress)
Chart 2:  Portfolio count — Level:3, Count
Chart 3:  Programs count — Level:2, Count
Chart 4:  Projects count — Level:1, Count
Chart 5:  Risks count — Log:4, Count
Chart 6:  Issues count — Log:5, Count
...

Phase 2: Discover Target Instance Structure

This is where most manual approaches fail. Property keys are instance-specific. The same "Portfolio" level might use portfolio_ in one instance and K_Portfolio_fPYxTWzhD0FmZp19_ in another.

Claude discovers the target structure by:

  1. Calling GET /api/levels to get the level hierarchy
  2. Using POST /api/dashboards/Chart with TableView type to fetch sample records from each level
  3. Extracting the actual property keys from the returned data
  4. Building a property mapping table

Example discovery on MHC (JOSOUR):

LevelNameIDProperty Prefix
PortfolioK_Portfolio_fPYxTWzhD0FmZp193K_Portfolio_fPYxTWzhD0FmZp19_
DepartmentK_Program_uK0V04UuJHSzk_ul2K_Program_uK0V04UuJHSzk_ul_
ProjectProject1project_

Phase 3: Build Charts One by One

Claude constructs each chart by:

  1. Copying the source chart structure — grid position, dimensions
  2. Replacing property keys — using the mapping from Phase 2
  3. Updating module IDs — matching the target level/log IDs
  4. Fixing labels — adapting terminology to the target instance
  5. Testing each chart — calling the Chart API to verify data returns

Phase 4: Handle Complex Charts

Some charts require special handling:

Multi-Source Charts (Financial Performance)

Financial charts pull data from multiple levels through source links, connecting portfolios to departments to projects via parent-child relationships.

Action Tracker (Tasks)

Tasks live in Log modules, not Level modules. The connection requires linking the project Level to the task Log via the project ID and LevelId properties.

Timeline Multi View

Timeline charts need the timelineMultiViewChart component and date-range properties including start date, finish date, name, and status fields.

Phase 5: Save and Verify

After building all charts, Claude:

  1. Saves the configuration via POST /api/Dashboards/Charts/Link
  2. Navigates to the user-facing URL (/remote3/id)
  3. Takes screenshots of each section to verify rendering
  4. Tests popup interactions by clicking chart elements
  5. Fixes any issues — empty charts, wrong labels, missing data

Common Issues and How Claude Handles Them

Property Key Mismatch

Symptom: Chart renders but shows no data or wrong values.

How Claude fixes it: Fetches a TableView of the target module to see actual property keys, then updates the chart configuration with correct keys.

Label Mismatch

Symptom: Cards show "Programs" when the instance uses "Departments."

How Claude fixes it: Scans all chart configurations for terminology mismatches and updates both English (title.en) and Arabic (title.ar) labels.

Module ID Mismatch

Symptom: Risk or Issue charts show 0 when data exists.

How Claude fixes it: Tests each Log module ID (0-10) with a simple Count query to find which contains the target data, then updates the chart selection.

Timeline Not Fetching Data

Symptom: Timeline chart renders but shows no bars.

How Claude fixes it: Verifies the Level moduleId matches the portfolio/department level, confirms the date property keys exist (_startDate, _finishDate), and updates the query accordingly.

Phase Gates Table Empty

Symptom: Phase gates table shows row numbers but no data.

How Claude fixes it: Ensures the lookupProperty is set to Phase_LevelId and the selectedProperties include project_allPhasesCompleted.


Best Practices

  1. Always start with the knowledge repo — Clone the pplus-knowledge repo and tell Claude to reference it. The documentation dramatically reduces trial-and-error.
  2. Use the SKILL.md file — The repository includes a comprehensive SKILL.md that Claude can reference for chart type mappings, API endpoints, and configuration patterns.
  3. Build one chart at a time — Don't try to replicate all 14+ charts in a single save. Build and test incrementally.
  4. Test with the Chart API first — Before committing a chart to the dashboard, use POST /api/dashboards/Chart to verify the query returns data.
  5. Check both admin and user views — The admin view (/manageDashboardPage3/id) shows the builder interface. The user view (/remote3/id) shows the final rendered dashboard.
  6. Save property discoveries — Push any new property mappings back to the repo so future dashboard builds are faster.

Scaling This Across Clients

Once you've replicated a dashboard for one client, the process becomes even faster for subsequent clients:

  1. The knowledge base grows — Each new instance adds property mappings to the repo
  2. Claude learns patterns — Similar instances (same PPlus version) share common structures
  3. Templates emerge — Standard executive dashboards become reusable starting points
  4. Verification is automated — Claude can screenshot and verify all charts without manual checking

The Knowledge Repository

The pplus-knowledge repository is structured as a RAG (Retrieval-Augmented Generation) knowledge base for AI agents. It contains 38 knowledge chunks across 8 categories:

knowledge/
  architecture/        (3 chunks) System design, data flow, level drilldown
  api-reference/       (7 chunks) Dashboards, levels, lookups, replication guides
  frontend/            (7 chunks) Dashboard builder, entity info, Gantt, tasks center
  backend/             (2 chunks) ChartBuilder pipeline, authentication
  admin-panel/         (10 chunks) All 12 admin tabs, 50+ card toggles, process builder
  data-models/         (2 chunks) Level hierarchy, dynamic property system
  integrations/        (1 chunk)  Module federation, micro-frontend setup
  instances/           (6 chunks) Masar, Cruise Saudi, C2/Cluster2, G-PMO, Diwan, MHC JOSOUR configs

Access Methods

With MCP Server (recommended): The pplus-knowledge MCP server provides 8 dedicated tools for searching, reading, cross-referencing, and querying the knowledge base. Claude gets instant, structured access to any chunk without re-reading files. See the MCP installation section above.

Without MCP Server: Clone the repository and tell Claude to read the files directly from the /knowledge directory. Each file is a self-contained chunk with YAML frontmatter metadata including ID, category, tags, and cross-references.

Knowledge Base Stats

CategoryChunksHighlights
Architecture3Full-stack overview, data pipeline, level drilldown navigation
API Reference7Every endpoint, replication guide, property mappings, dashboard building with Claude
Frontend7Dashboard builder, 17 field types, Gantt, tasks center, executive widgets
Backend27-stage ChartBuilder pipeline, token auth flow
Admin Panel1012 admin tabs, 50+ toggles, process builder, 52 lookups, RBAC tree
Data Models2Entity relationships, 17 property types, dynamic aggregations
Integrations1Webpack module federation, micro-frontend architecture
Instances6Full configs for 6 client deployments with level hierarchies, branding, log modules

Each file follows a structured format with YAML frontmatter, making it ideal for AI agent consumption. The more you use it and contribute back, the more powerful the automation becomes.


Expected Results

After following this guide with Claude Code:

  • 14+ chart executive dashboard fully replicated and functional
  • All KPI cards showing correct counts from the target instance
  • All charts rendering with target-specific data
  • All labels matching the target instance terminology
  • All popups navigating to correct filtered modules
  • All timelines displaying project/portfolio schedules
  • Phase gates showing project phase completion status
  • Risk matrices displaying classification heatmaps

What used to take 2-3 days of careful manual configuration now takes less than 30 minutes of AI-assisted automation — and the results are more accurate because every property key is programmatically verified.


Quality Checklist

After building the dashboard, verify the following:

CheckWhat to Verify
Chart countAll source charts have been replicated
KPI cardsEach card shows correct count from the target instance
Bar chartsCorrect series data with proper labels
Donut chartsCorrect grouping and color mapping
Phase gatesTable populated with project phase data
TimelinesAll portfolio/department bars visible with correct dates
Risk matrixHeatmap cells populated with correct classification data
PopupsClicking any chart navigates to the correct filtered module
LabelsAll English and Arabic labels match target terminology
LayoutCharts positioned correctly in the 36-column grid
ResponsivenessDashboard renders correctly at different screen widths
Admin viewDashboard editable in the admin interface

Summary

StepWhat HappensTime
Phase 1: ExtractClaude reads the source dashboard configuration~2 min
Phase 2: DiscoverClaude maps the target instance's property keys~5 min
Phase 3: BuildClaude constructs each chart with correct mappings~15 min
Phase 4: ComplexClaude handles multi-source charts and special types~5 min
Phase 5: VerifyClaude saves, screenshots, and tests all interactions~3 min
TotalProduction-ready executive dashboard~30 min

Method Comparison

AspectMCP ServerManual Prompt
SetupOne-time install (~2 min)None
Per-session overheadZero — tools are always loadedMust point Claude to repo each time
Knowledge queriesInstant structured lookups via 8 toolsClaude reads entire files sequentially
Instance config lookupget_instance_config("cruise") — instantRead the full instance markdown file
API endpoint searchget_api_endpoint("dashboards") — filtered resultsSearch through all API files manually
Cross-referencingget_related traverses the knowledge graphClaude must manually follow related: frontmatter links
Best forTeams doing regular PPlus workOne-off builds or quick trials

The combination of Claude Code's browser automation capabilities and a structured knowledge repository transforms dashboard building from a tedious, error-prone manual process into a fast, reliable automated workflow.

Every dashboard you build adds to the knowledge base, creating a compounding advantage that scales across all your PPlus client deployments.


Getting Started Today

  1. Quickest path: Copy the manual prompt from Method B above, clone the knowledge repo, and start building
  2. Best long-term path: Install the MCP server (Method A) — 2 minutes of setup saves hours over repeated dashboard builds
  3. Contribute back: Push new property mappings and instance discoveries to the knowledge repository so the entire team benefits

Try this automation now with Claude AI

BC Automations