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: v3.1.1 · Changelog
Main chat UI.
- App Portal — Chats, Skills, Prompts, AI Provider, NetSuite, Web Search, Timezone, and Account in one panel
- SuiteCloud Agent Skills — Oracle pack + custom
SKILL.md; toggle into the system prompt per session - Companion Prompt Library — Browse, fill placeholders, send into chat
- NetSuite MCP — Multi-account connect (DCR), status chip, live tool calls
- BYOLLM — Your API keys; no shared multi-tenant model account in this app
Open Skills from the App Portal (or the sidebar). Enable Oracle SuiteCloud Agent Skills and/or your own custom skills. Enabled skills are injected into the system prompt for new messages — useful for finance analyst workflows, SuiteScript / SDF guidance, OWASP patterns, and more.
Oracle skills are not vendored in git. One shared on-disk pack is the source of truth for every user:
pnpm skills:syncThat downloads SKILL.md files from Oracle’s agent-skills pack into .data/oracle-skills (or ORACLE_SKILLS_DIR). Run it after setup, on deploy (production entrypoint does this), 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.
Custom skills: add a SKILL.md-style document in the portal; toggle it like any Oracle skill.
Skills panel — Oracle pack and custom skills.
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 18+ 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 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
- Skills — Enable Oracle and/or custom skills for new messages
- 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 |
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 (also at /docs/upgrades when self-hosting).
- 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



