home / mcp / csg portal mcp server

CSG Portal MCP Server

Provides secure access to the CSG Veracross portal, including directory search, calendar events, and lunch volunteer info via MCP clients.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "bradgriffith-csg-portal-mcp": {
      "command": "npx",
      "args": [
        "@bradgriffith/csg-portal-mcp@latest"
      ],
      "env": {
        "MONGODB_URI": "mongodb://localhost:27017",
        "VERACROSS_BASE_URL": "https://portals.veracross.com/csg",
        "LS_LUNCH_SIGNUP_URL": "https://www.signupgenius.com/go/10C084BADAA2BA2FFC43-57722061-lslunch#/",
        "ENCRYPTION_MASTER_KEY": "your-secure-encryption-key-here"
      }
    }
  }
}

You can use this MCP server to securely access CSG Veracross portal features such as directory search, calendar events, and lunch volunteer information from Claude Desktop and other MCP-compatible assistants. It authenticates via a secure browser flow, keeps data isolated per user, and caches results to improve performance.

How to use

Authenticate once with your Veracross account to enable all features. After authentication, you can ask for directory lookups, upcoming events, and volunteer slots using natural prompts. You can also set a default user to avoid providing your email with every request.

How to install

Prerequisites: Node.js and npm installed on your machine.

npm install -g @bradgriffith/csg-portal-mcp

Add the MCP configuration to Claude Desktop so it can launch the server as an MCP source.

{
  "mcpServers": {
    "csg-portal": {
      "command": "npx",
      "args": ["@bradgriffith/csg-portal-mcp@latest"]
    }
  }
}

Restart Claude Desktop after adding the MCP source.

# Quick start without installation
{
  "mcpServers": {
    "csg-portal": {
      "command": "npx",
      "args": ["@bradgriffith/csg-portal-mcp@latest"]
    }
  }
}

Additional sections

Security and data handling are designed to protect your Veracross credentials. Authentication happens in a secure browser flow; no credentials are stored in Claude. Credentials are encrypted and user data is isolated by email.

CSG grade terminology is supported by the server so you can refer to Forms I–XII and the Lower, Middle, and Upper School divisions in prompts.

If you encounter issues, verify authentication status, ensure you have portal access, and refresh results if necessary.

Developer notes: environment variables and local setup are described in the Developer Setup section to help you run a local instance or customize the deployment.

Security

No credential storage in Claude. All credentials are encrypted and sessions are stored securely. Each user’s data remains isolated to prevent cross-user access.

CSG Grade System

The server understands Columbus School for Girls forms: PYC, Lower School Forms I–V, Middle School Forms VI–VIII, and Upper School Forms IX–XII.

Troubleshooting

If you see authentication or calendar lookup errors, re-authenticate via the secure browser flow and check your portal access. Use the refresh option to bypass cache if calendar results seem out of date.

Developer Setup

Note: This section is for developers who want to modify or contribute to the MCP server.

Required environment variables are defined for production use and encryption: MongoDB connection, encryption key, and Veracross base URL. Optional values include SignUpGenius URLs for lunch signups.

Available tools

login

Log in to the Veracross portal through a secure browser flow; no credentials are stored in Claude.

search_directory

Query the school directory for students, parents, and staff with optional filters such as firstName, lastName, city, postalCode, and gradeLevel.

school_events

Fetch upcoming school events within a specified number of months; supports default 3 months with an auto-fallback to 12 months.

lunch_volunteers

Check Lower School lunch volunteer opportunities; shows only days with open slots and supports date/week filtering.

set_default_user

Set a default user email to avoid repeatedly providing it in prompts.

check_authentication

Verify if a valid stored authentication session exists.