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 works | Claude gets 8 dedicated tools that query the knowledge base in real-time | Claude reads the GitHub repo files directly during execution |
| Speed | Instant lookups — no need to re-read files each session | Must re-read knowledge files every new conversation |
| Best for | Repeated dashboard work, multiple instances, ongoing PPlus projects | One-off dashboard builds or quick trials |
| Knowledge access | Always available — tools are loaded at startup | Per-session — Claude must be told to read the repo each time |
| Requires | Node.js installed locally | GitHub 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.
Method A: The MCP Server (Recommended)
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
| Tool | What It Does |
|---|---|
search_knowledge | Natural language search across all 38 knowledge chunks — architecture, APIs, frontend, backend, admin, data models, instances, integrations |
read_chunk | Read the full content of a specific knowledge chunk by ID, with optional section filtering |
list_chunks | List all available chunks, optionally filtered by category |
get_related | Graph traversal of related chunks — follow cross-references 1-3 levels deep |
get_api_endpoint | Find API endpoint documentation by HTTP method and path |
get_instance_config | Get instance-specific configuration (Masar, Cruise Saudi, C2/Cluster2, G-PMO, Diwan, MHC JOSOUR) — levels, dashboards, branding, logs |
get_admin_config | Query admin panel config across all 12 tabs — level settings, cards management, log properties, lookups, permissions, process builder |
get_dashboard_guide | Get 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 buildOr if you already have it locally:
cd ~/OneDrive/Desktop/PPlus-Agent
npm install && npm run buildStep 2: Clone the knowledge base (if you haven't already)
git clone https://github.com/MasterteamSA/pplus-knowledge.gitStep 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 propertiesYou: 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 definitionsYou: Show me the admin settings for Cards Management
Claude: [Uses get_admin_config("cards management")]
→ Returns all 7 config sections with 50+ progress togglesThe 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:
- Logging into the source instance and manually inspecting every chart configuration
- Documenting each chart's data source, property keys, filters, and layout positions
- Logging into the target instance and discovering its unique level hierarchy and property keys
- Manually creating each widget through the admin UI, mapping source properties to target equivalents
- Debugging why half the charts show no data because property keys are instance-specific
- Fixing labels — "Programs" in one instance is "Departments" in another
- 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:
- Claude Code — installed and running with the Chrome browser extension for browser automation
- Admin access to both the source and target PPlus instances
- The knowledge repository — clone the pplus-knowledge repo for API reference and dashboard structure documentation
- 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:1Required Files
| # | Resource | Purpose | Notes |
|---|---|---|---|
| 1 | Knowledge Repository | API reference, chart type mappings, configuration patterns | Clone locally or let Claude read directly from GitHub |
| 2 | Source instance access | Dashboard to replicate | Must have admin access and be logged in |
| 3 | Target instance access | Where the dashboard will be created | Must 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/LinkWith 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 Type | Service Config | Handler Function | Component |
|---|---|---|---|
| KPI Card | CardViewV2Chart | handleOverviewCard | cardsStatistic |
| Donut | PieV2Chart | handleDonutChart | chart |
| Bar Chart | BarV2Chart | handleBarChart | chart |
| Stacked Bar | StackBarV2Chart | handleBarChart | chart |
| Table | TableView | handleTableView | phaseGateTable |
| Timeline | TimelineChart | handleTimelineMultiViewChart | timelineMultiViewChart |
| Gauge | GaugeV2Chart | handleGaugeChart | chart |
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:
- Read the authentication tokens from localStorage
- Call GET /api/dashboards/id to fetch the complete dashboard configuration
- Parse the charts.configration JSON string to extract all chart objects
- 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:
- Calling GET /api/levels to get the level hierarchy
- Using POST /api/dashboards/Chart with TableView type to fetch sample records from each level
- Extracting the actual property keys from the returned data
- Building a property mapping table
Example discovery on MHC (JOSOUR):
| Level | Name | ID | Property Prefix |
|---|---|---|---|
| Portfolio | K_Portfolio_fPYxTWzhD0FmZp19 | 3 | K_Portfolio_fPYxTWzhD0FmZp19_ |
| Department | K_Program_uK0V04UuJHSzk_ul | 2 | K_Program_uK0V04UuJHSzk_ul_ |
| Project | Project | 1 | project_ |
Phase 3: Build Charts One by One
Claude constructs each chart by:
- Copying the source chart structure — grid position, dimensions
- Replacing property keys — using the mapping from Phase 2
- Updating module IDs — matching the target level/log IDs
- Fixing labels — adapting terminology to the target instance
- 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:
- Saves the configuration via POST /api/Dashboards/Charts/Link
- Navigates to the user-facing URL (/remote3/id)
- Takes screenshots of each section to verify rendering
- Tests popup interactions by clicking chart elements
- 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
- Always start with the knowledge repo — Clone the pplus-knowledge repo and tell Claude to reference it. The documentation dramatically reduces trial-and-error.
- 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.
- Build one chart at a time — Don't try to replicate all 14+ charts in a single save. Build and test incrementally.
- Test with the Chart API first — Before committing a chart to the dashboard, use POST /api/dashboards/Chart to verify the query returns data.
- 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.
- 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:
- The knowledge base grows — Each new instance adds property mappings to the repo
- Claude learns patterns — Similar instances (same PPlus version) share common structures
- Templates emerge — Standard executive dashboards become reusable starting points
- 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 configsAccess 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
| Category | Chunks | Highlights |
|---|---|---|
| Architecture | 3 | Full-stack overview, data pipeline, level drilldown navigation |
| API Reference | 7 | Every endpoint, replication guide, property mappings, dashboard building with Claude |
| Frontend | 7 | Dashboard builder, 17 field types, Gantt, tasks center, executive widgets |
| Backend | 2 | 7-stage ChartBuilder pipeline, token auth flow |
| Admin Panel | 10 | 12 admin tabs, 50+ toggles, process builder, 52 lookups, RBAC tree |
| Data Models | 2 | Entity relationships, 17 property types, dynamic aggregations |
| Integrations | 1 | Webpack module federation, micro-frontend architecture |
| Instances | 6 | Full 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:
| Check | What to Verify |
|---|---|
| Chart count | All source charts have been replicated |
| KPI cards | Each card shows correct count from the target instance |
| Bar charts | Correct series data with proper labels |
| Donut charts | Correct grouping and color mapping |
| Phase gates | Table populated with project phase data |
| Timelines | All portfolio/department bars visible with correct dates |
| Risk matrix | Heatmap cells populated with correct classification data |
| Popups | Clicking any chart navigates to the correct filtered module |
| Labels | All English and Arabic labels match target terminology |
| Layout | Charts positioned correctly in the 36-column grid |
| Responsiveness | Dashboard renders correctly at different screen widths |
| Admin view | Dashboard editable in the admin interface |
Summary
| Step | What Happens | Time |
|---|---|---|
| Phase 1: Extract | Claude reads the source dashboard configuration | ~2 min |
| Phase 2: Discover | Claude maps the target instance's property keys | ~5 min |
| Phase 3: Build | Claude constructs each chart with correct mappings | ~15 min |
| Phase 4: Complex | Claude handles multi-source charts and special types | ~5 min |
| Phase 5: Verify | Claude saves, screenshots, and tests all interactions | ~3 min |
| Total | Production-ready executive dashboard | ~30 min |
Method Comparison
| Aspect | MCP Server | Manual Prompt |
|---|---|---|
| Setup | One-time install (~2 min) | None |
| Per-session overhead | Zero — tools are always loaded | Must point Claude to repo each time |
| Knowledge queries | Instant structured lookups via 8 tools | Claude reads entire files sequentially |
| Instance config lookup | get_instance_config("cruise") — instant | Read the full instance markdown file |
| API endpoint search | get_api_endpoint("dashboards") — filtered results | Search through all API files manually |
| Cross-referencing | get_related traverses the knowledge graph | Claude must manually follow related: frontmatter links |
| Best for | Teams doing regular PPlus work | One-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
- Quickest path: Copy the manual prompt from Method B above, clone the knowledge repo, and start building
- Best long-term path: Install the MCP server (Method A) — 2 minutes of setup saves hours over repeated dashboard builds
- Contribute back: Push new property mappings and instance discoveries to the knowledge repository so the entire team benefits
Read more
Getting Started: PPlus MCP Setup Guide (From Zero to Running)
A complete beginner-friendly guide to setting up Claude Code and the PPlus Knowledge MCP server — from downloading your first tools to running your first AI-powered query. No prior experience needed.
[BETA] AI-Powered Group Permissions Automation for PPlus
Automate user group permission mapping on PPlus instances using Claude Code, the PPlus Knowledge MCP, and an Excel accessibility matrix — turning hours of manual checkbox toggling into seconds of API-driven automation.
P+ Notification Configuration Automation
Configure every notification on a live P+ instance from a single Claude Code prompt — point Claude at the client URL, paste the prompt, optionally drop in a branded HTML email template, and the script discovers all notification scopes (Levels, Logs, Manage Approvals, Process Builder), creates templates for every event, and wires receivers automatically.
