No articles match
MCP Server: Design and Implementation16 days ago
The Problem | Design Principles | Compute where compute belongs | Visualization: interactive HTML first, static PNG fallback | Outcome-oriented tools | Progressive disclosure | Server instructions | Architecture | Persistent workspace | Output directory | Smart result formatting | Column summary helper | Response helpers | Size guard | Defensive execution | Tool Reference | Discovery tools | Analysis tools | Types of Analysis | Enrollment analytics | Grade performance | Student engagement | Course health | Cross-dataset joins | Reporting and dashboards | Typical Conversation Flow | PII Field Policy | Policy file | Default policy | Custom policy | Where filtering happens | ID Pseudonymisation | How it works | Which columns are hashed | Where it runs | Combined effect with field policy | Audit Logging | Security Considerations
Privacy Compliance and De-identification Standards4 months ago
Standards Reference | ENISA — Pseudonymisation Techniques and Best Practices | NIST SP 800-188 — De-Identifying Government Datasets | NIST IR 8053 — De-Identification of Personal Information | ISO 25237:2017 — Health Informatics: Pseudonymization | GDPR Article 4(5) + EDPB Guidelines 01/2025 on Pseudonymisation | FERPA — De-Identification of Education Records | HIPAA Safe Harbor and Expert Determination | Compliance Summary | What the MCP Server Does Automatically | Applying Privacy Protections in R Scripts | Step 1: Suppress direct identifiers | Step 2: Pseudonymise person-referencing IDs | Step 3: Apply minimum cell sizes (for FERPA compliance) | Step 4: Generalise dates (optional, for stronger de-identification) | Step 5: Audit trail | Complete Example: FERPA-Aligned Analysis Script | Key Principles | Further Reading
MCP Server Setup4 months ago
Prerequisites | Locating the server script | Claude Desktop setup | Step 1: Find your config file | Step 2: Add the brightspaceR server | Step 3: Restart Claude Desktop | Step 4: Verify the connection | Claude Code (CLI) setup | Option A: Global configuration (~/.claude.json) | Option B: Project-level configuration (.mcp.json) | Verify in Claude Code | Environment variables | Available tools | Example conversation | Security | Troubleshooting | Server not starting | Authentication failures | No tools appearing in Claude Desktop | Visualisations not appearing
MCP Server Test Script4 months ago
Test 1: Auth check | Test 2: Dataset discovery | Test 3: Keyword search | Test 4: Dataset description with column stats | Test 5: Simple execute_r -- scalar result | Test 6: execute_r -- data frame result | Test 7: execute_r -- persistent workspace | Test 8: Interactive Chart.js chart | Test 8b: Static ggplot fallback | Test 9: get_data_summary -- basic | Test 10: get_data_summary -- with filter | Test 11: get_data_summary -- with group_by | Test 12: execute_r -- join and analyze | Test 13: execute_r -- error handling | Test 14: Multi-step analysis (integration test) | Test 15: Removed tools are gone | Test 16: list_schemas | Test 17: AST code inspection -- blocked code | Test 18: AST code inspection -- blocked package access | Test 19: AST code inspection -- safe code passes | Test 20: PII field policy -- Users dataset | Test 21: PII field policy -- Grade Results | Test 22: Audit log exists | Test 23: ID pseudonymisation — UserId is hashed | Troubleshooting
OAuth2 Setup for Brightspace Data Sets5 months ago
Step 1: Register an OAuth2 Application | About the Redirect URI | About Scopes | Tier 1: BDS only (minimum) | Tier 2: BDS + ADS (recommended) | Verifying scopes | Scope reference | Step 2: Configure Your R Environment | Option A: Config file (recommended) | Option B: Environment variables | Credential resolution order | Step 3: Authenticate | Token Caching and Refresh | Non-interactive Environments (Scheduled Scripts) | Step 4: Verify It Works | Troubleshooting | "No client ID found" | Browser doesn't open | "No authorization code found in the redirect URL" | 403 Forbidden errors | Token expired and won't refresh | References
Getting Started with brightspaceR5 months ago
Overview | Prerequisites | Discovering Datasets | Downloading Datasets | Joining Datasets | Column Types and Schemas | Advanced Data Sets (ADS) | Configuration | Cleaning Up
Building an Interactive Dashboard5 months ago
Strategy | Step 1: Create the Rmd template | Step 2: Data preparation chunk | Step 3: HTML layout with inline R | Step 4: Chart.js with inline R data | Step 5: CSS styling | Rendering | Parameterised reports | Using with the MCP server | Why Chart.js instead of plotly?
Convenience Functions: Joins, Schemas, and Data Wrangling5 months ago
Fetching datasets | Single dataset by name | Discovery | Bulk download | Joining datasets | Smart join: bs_join() | Named join functions | Chaining joins | Schemas and column types | Why schemas matter | Registered schemas | Inspecting a schema | Unknown datasets | Column name conversion | Common patterns | Enrollment counts by role | Grade summary for a course | Active users in the last 90 days | Content completion rates
Shiny App Example: LMS Explorer5 months ago
Prerequisites | The complete app | Running the app | How it works | Data loading | Filtering | Chart rendering | Extending the app | Adding authentication | Adding a download button | Scheduled data refresh | Deploying to Posit Connect / shinyapps.io