Source-available NetSuite MCP client — chat UI for NetSuite’s AI Connector Service, MCP Standard Tools, Companion prompt library, and SuiteCloud Agent Skills.
Bring your own LLM keys (Google Gemini, Anthropic Claude, or OpenAI GPT). Self-host for internal use. Commercial rights reserved by Unstacked Apps, LLC.
Star this repo if it helps your NetSuite team — it makes the project discoverable.
Current release: v4.1.0 · Changelog
Main chat UI.
- Personas — Six built-in NetSuite specialists (admin, SuiteQL analyst, controller, SuiteScript dev, auditor, inventory analyst) plus custom personas via the interview builder
- SuiteCloud Agent Skills — Oracle + Community packs, custom
SKILL.md, and Connected GitHub packs (slash-invoked with inline badges) - App Portal — Chats, Personas, Skills, Prompts, AI Provider, NetSuite, Web Search, Timezone, and Account in one panel
- Multiple AI providers — named Google / Anthropic / OpenAI (or a custom OpenAI-compatible endpoint) keys; Speed / Reasoning per chat
- Companion Prompt Library — Browse, fill placeholders, send into chat
- NetSuite MCP — Multiple connected accounts, per-account tools, encrypted OAuth tokens
- BYOLLM — Your API keys; no shared multi-tenant model account in this app
Open Personas from the App Portal or the header badge on a new chat. Pick a built-in specialist or Create my own… to run the interview builder (guided chat that drafts a custom persona playbook).
Built-in personas ship in .personas/*.md in this repo. Custom personas are stored per user in Postgres.
Open Skills from the App Portal (or the sidebar). Four sources:
| Source | How it works |
|---|---|
| Oracle | Shared pack; opt-in toggles; injected when enabled |
| Community | Shared pack from opensuitemcp-community-skills; opt-in toggles |
| Connected | Paste a public GitHub repo/folder URL; invoke with /skill-name in chat (one skill, this turn only) |
| Custom | Paste/import custom SKILL.md; per-skill enable |
Enabled Oracle/Community/custom skills are injected into the system prompt for new messages. Connected skills are not toggled on — type / in the composer to pick one for that message.
Shared packs are not vendored in git. Sync them with:
pnpm skills:syncThat downloads Oracle’s agent-skills into .data/oracle-skills (or ORACLE_SKILLS_DIR) and Community skills into .data/community-skills (or COMMUNITY_SKILLS_DIR). Run after setup, on deploy (production entrypoint), and on a weekly cron. New upstream skills appear as new toggles (off by default); removed upstream skills are pruned. Optional: GITHUB_TOKEN for higher GitHub API limits.
Connected examples:
https://github.com/mattpocock/skills/tree/main/skills/productivityowner/reposhorthand
Public repos only in v1. Synced files live under .data/connected-skills/<userId>/….
Skills panel — Oracle, Community, Connected, and Custom.
Open Prompts for the Companion SuiteApp library (requires NetSuite connected with Companion available). Filter by category, industry, or role; open a template; fill required placeholders; then use it in chat.
Companion prompt library — browse and fill-in.
Docs: Companion SuiteApp
With AI Connector + MCP Standard Tools connected, chat can run SuiteQL, records, reports, saved searches, and related MCP tools against your account.
NetSuite MCP tools in a conversation.
- Node.js 22+ and pnpm
- Docker (Docker Desktop on macOS/Windows, or Docker Engine on Linux) for local PostgreSQL, Redis, and SearXNG via
pnpm setup:backend - A NetSuite account with:
- AI Connector Service enabled
- MCP Standard Tools SuiteApp
- Companion SuiteApp if you want the prompt library
- An API key from Google, Anthropic, or OpenAI
-
Install dependencies
pnpm install
-
Run automated setup
pnpm setup:backend
Generates secrets and writes:
.env.local— app / migrate vars (POSTGRES_URL,REDIS_URL, auth, etc.)docker/.env— Compose vars (PROJECT_NAME,POSTGRES_PW,REDIS_PW); gitignored
It can also start Docker services (PostgreSQL, Redis, SearXNG). If Docker was not running during setup, start Docker Desktop/Engine, then:
docker compose --env-file docker/.env -f docker/docker-compose.yml -p opensuitemcp up -d
Use your project name instead of
opensuitemcpif you chose a custom name during setup. -
Sync Oracle + Community skills
pnpm skills:sync
-
Migrate the database
pnpm db:migrate
-
Start the dev server
pnpm dev
Uses webpack by default (Turbopack can fail resolving
@ai-sdk/provider-utilsdynamic imports). Optional:pnpm dev:turboif you want to try Turbopack. -
Configure in the App Portal (sidebar icons open the same portal)
- AI Provider — Choose Google / Anthropic / OpenAI and enter your API key (stored encrypted)
- NetSuite — Add an account ID, complete Integration / DCR setup, connect
- Personas — Pick a built-in specialist or create a custom persona
- Skills — Enable Oracle, Community, and/or custom skills; connect GitHub packs for
/slash skills - Prompts — Browse Companion templates when NetSuite + Companion are available
- In NetSuite, ensure AI Connector and the MCP Standard Tools SuiteApp are available for your account.
- In OpenSuiteMCP → NetSuite, add your account ID (e.g.
1234567or1234567-sb1). - Follow the in-app Integration instructions (admin once per account), then Connect.
- Confirm the header status chip shows connected before running SuiteQL / record tools.
Official references:
Self-host defaults are generous. Override with env vars if needed:
| Variable | Default (OSS) | Purpose |
|---|---|---|
MAX_MESSAGES_PER_DAY_REGULAR |
100 |
Signed-in user messages / 24h |
MAX_MESSAGES_PER_DAY_GUEST |
20 |
Guest messages / 24h |
CHAT_BURST_LIMIT_PER_MINUTE |
unset / 0 (off) |
Redis burst cap; fail-open if Redis is down |
Third-party libraries and templates are listed in ATTRIBUTION.md.
Free: your organization may self-host for its own internal use. Paid: commercial delivery, paid implementation, or paid support of this product — only via Unstacked Apps (support@unstackedapps.com). Third parties may not charge to implement or commercially support this codebase.
After go-live, update via release tags — see docs/upgrades.
- LICENSE — Sustainable Use License
- NOTICE.md — Usage notice
- ATTRIBUTION.md — Third-party credits
- CHANGELOG.md — Release history
Hosted product (separate from this repo): opensuitemcp.com



