Initial Release
AI-powered ticket management built on InterSystems IRIS, Angular, and the Model Context Protocol (MCP). SpectraSight lets both humans and AI agents manage tickets through the same REST API — the Angular SPA for humans, an MCP server for AI assistants like Claude.

┌──────────────┐ ┌─────────────┐
│ Angular SPA │ │ MCP Server │
│ (frontend/) │ │(mcp-server/)│
└──────┬───────┘ └──────┬──────┘
│ │
└────────┬───────────┘
│ REST / JSON
┌───────▼─────────┐
│ IRIS REST API │
│ (src/) │
└───────┬─────────┘
│
┌───────▼─────────┐
│ IRIS %Persistent│
│ Data Layer │
└─────────────────┘
src/) — ObjectScript classes: %Persistent ticket model (Bug, Task, Story, Epic), %CSP.REST dispatch, activity tracking, code referencesfrontend/) — Angular 18 SPA with Angular Material, communicates with IRIS REST APImcp-server/) — TypeScript MCP server exposing ticket operations as tools for AI agents. See https://github.com/jbrandtmse/SpectraSight/blob/main/mcp-server/README.md_bmad/) — Build Method for AI-Driven Development workflow engine used to develop SpectraSight itselfnpm install -g @angular/cli)Import the ObjectScript classes from src/ into your IRIS instance:
Do $SYSTEM.OBJ.LoadDir("/path/to/SpectraSight/src/", "ck", .errors, 1)
Create the /api REST web application:
Do ##class(SpectraSight.Util.Setup).ConfigureWebApp()
By default this targets the HSCUSTOM namespace. To use a different namespace:
Do ##class(SpectraSight.Util.Setup).ConfigureWebApp("USER")
Create the default project and backfill any existing tickets:
Do ##class(SpectraSight.Util.Setup).EnsureDefaultProject()
The REST API is now available at http://localhost:52773/api/.
SpectraSight maps IRIS system usernames to display names. You must create at least one user mapping before tickets can be assigned.
In the Angular app, go to Settings > Users and click Add User. Provide:
_SYSTEM, SuperUser)You can also create user mappings via the REST API:
curl -u _SYSTEM:SYS http://localhost:52773/api/users \
-H "Content-Type: application/json" \
-d '{"irisUsername": "_SYSTEM", "displayName": "Josh"}'
Or via the MCP server (if configured):
create_user_mapping with irisUsername="_SYSTEM", displayName="Josh"
Users can be deactivated (toggled inactive) without deleting them. A user cannot be deleted while assigned to any tickets.
Every ticket belongs to a project. Each project has a name and a unique uppercase prefix (2-10 characters) used in ticket IDs (e.g., SS-1, DATA-42).
The setup utility creates a default “SpectraSight” project with prefix SS:
Do ##class(SpectraSight.Util.Setup).EnsureDefaultProject()
To create additional projects, go to Settings > Projects in the Angular app and click Add Project. Provide:
DATA)You can also create projects via the REST API:
curl -u _SYSTEM:SYS http://localhost:52773/api/projects \
-H "Content-Type: application/json" \
-d '{"name": "Data Pipeline", "prefix": "DATA"}'
When creating tickets, you must select which project the ticket belongs to. The ticket ID will use that project’s prefix (e.g., DATA-1).
cd frontend
npm install
ng serve
Open http://localhost:4200. The app proxies API requests to IRIS at localhost:52773.
cd mcp-server
npm install
npm run build
Add the server to your MCP client config (e.g., Claude Desktop). See https://github.com/jbrandtmse/SpectraSight/blob/main/mcp-server/README.md for full configuration details.
Copy .mcp.json.example to .mcp.json and fill in your IRIS credentials:
cp .mcp.json.example .mcp.json
By default, SpectraSight connects to IRIS at localhost:52773. If your IRIS instance runs on a different host or port, update these three locations:
Edit frontend/proxy.conf.json and change the target:
{
"/api": {
"target": "http://your-iris-host:52773",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
}
}
The MCP server reads its connection from environment variables. Set these in your MCP client config (e.g., .mcp.json or Claude Desktop settings):
{
"mcpServers": {
"spectrasight": {
"type": "stdio",
"command": "node",
"args": ["mcp-server/build/index.js"],
"env": {
"SPECTRASIGHT_URL": "http://your-iris-host:52773",
"SPECTRASIGHT_USERNAME": "_SYSTEM",
"SPECTRASIGHT_PASSWORD": "your-password"
}
}
}
}
| Variable | Default | Description |
|---|---|---|
SPECTRASIGHT_URL |
http://localhost:52773 |
IRIS REST base URL |
SPECTRASIGHT_USERNAME |
_SYSTEM |
IRIS authentication username |
SPECTRASIGHT_PASSWORD |
SYS |
IRIS authentication password |
If you follow the curl examples in this README, replace localhost:52773 with your actual host and port.
SpectraSight/
├── src/ # IRIS ObjectScript backend
│ └── SpectraSight/
│ ├── Model/ # %Persistent ticket classes
│ ├── REST/ # %CSP.REST dispatch & handlers
│ ├── Util/ # Setup, validation, helpers
│ └── Test/ # %UnitTest classes
├── frontend/ # Angular SPA
├── mcp-server/ # MCP server (TypeScript)
├── _bmad/ # BMAD development framework
├── _bmad-output/ # Generated planning & implementation artifacts
└── docs/ # Project documentation
This project is licensed under the MIT License — see https://github.com/jbrandtmse/SpectraSight/blob/main/LICENSE for details.