跳过安装。2 分钟内即可运行。
在 cloud.anythingmcp.com 开始免费试用,一键添加 Oracle NetSuite,然后将你的 AI 客户端(Claude、ChatGPT、Copilot 或 Cursor)指向生成的 MCP 端点。无需 Docker,无需 git clone,无需任何工程经验。
摘要
让你的 AI 处理 Oracle NetSuite:对客户、供应商、货品、交易和总账运行只读的 SuiteQL 查询,读取客户、供应商、员工、货品、销售订单、发票、采购订单、供应商账单和日记账分录及其明细行,查看记录类型和字段,并创建客户和销售订单。使用 NetSuite OAuth 2.0 登录,支持正式账户或沙盒账户。
试试这样问
Oracle NetSuite 的示例提示
点击任意提示即可复制,然后粘贴到 Claude、ChatGPT、Cursor、Gemini、Copilot 或 OpenClaw 中,在该连接器上运行。
Claude 是 AI,可能会出错。请核对回答。
💡 无需安装? 直接使用 cloud.anythingmcp.com。 登录、点击 Connectors → Oracle NetSuite、粘贴凭证、生成 MCP API key,即可完成。无 Docker、无
git clone、无本地服务器。
Oracle NetSuite + ChatGPT
让你的 AI 处理 Oracle NetSuite:对客户、供应商、货品、交易和总账运行只读的 SuiteQL 查询,读取客户、供应商、员工、货品、销售订单、发票、采购订单、供应商账单和日记账分录及其明细行,查看记录类型和字段,并创建客户和销售订单。使用 NetSuite OAuth 2.0 登录,支持正式账户或沙盒账户。
前提条件
完整的设置说明已内置在连接器中 (在 store 中选择连接器时可见)。所需环境变量:
NETSUITE_ACCOUNT_ID, NETSUITE_CLIENT_ID, NETSUITE_CLIENT_SECRET
步骤 1 — 获取凭证
管理员只需设置一次,大约 20 分钟。
- 开启功能:Setup → Company → Enable Features。在 SuiteCloud 子标签页上勾选 REST Web Services,并在 Manage Authentication 下勾选 OAuth 2.0。在 Analytics 子标签页上勾选 SuiteAnalytics Workbook,SuiteQL 就是从这里读取数据。然后保存。
- 为 AI 创建角色:Setup → Users/Roles → Manage Roles → New。添加权限 REST Web Services(Full)和 Log in using OAuth 2.0 Access Tokens(Full),对 AI 可以读取的列表和交易(客户、供应商、货品、员工、科目、销售订单、发票、采购订单、账单、日记账分录和 Find Transaction)授予 View,对它可以写入的对象(客户、销售订单)授予 Create。把该角色分配给将要登录的用户。专用角色比 Administrator 更安全:AI 只能看到角色允许的内容。
- 创建集成记录:Setup → Integration → Manage Integrations → New。把状态设为 Enabled,取消勾选 Token-Based Authentication 和 TBA: Authorization Flow,在 OAuth 2.0 下勾选 Authorization Code Grant,保持 Public Client 不勾选,填入重定向 URI
https://cloud.anythingmcp.com/api/mcp-oauth/callback(如果你自行托管 AnythingMCP:<your AnythingMCP URL>/api/mcp-oauth/callback),并勾选权限范围 REST Web Services。保存后,NetSuite 会在页面底部显示 Client ID 和 Client Secret,且只显示一次。把它们填入NETSUITE_CLIENT_ID和NETSUITE_CLIENT_SECRET。 - 账户 ID:Setup → Company → Company Information。
NETSUITE_ACCOUNT_ID需要按它在 NetSuite 网址中的形式填写:全部小写,并用连字符代替下划线,因此1234567_SB1应写作1234567-sb1。如果使用沙盒,请直接在该沙盒中创建集成记录。 - 安装连接器,点击 Authorize with Provider,登录 NetSuite 并选择第 2 步中的角色。
- 运行
netsuite_list_record_types检查连接,然后用netsuite_suiteql_query运行第一个查询,例如SELECT id, companyname FROM customer。
每周重新授权一次:对于这类集成,NetSuite 的刷新令牌有效期为七天,并且不会续期,因此请至少每周点击一次 Authorize with Provider。在此期间,访问令牌会自动续期。停用集成记录、角色或用户会立即终止访问。
SuiteQL 承担主要工作:netsuite_suiteql_query 对 NetSuite 的分析数据运行一条只读 SQL 查询,涵盖客户、供应商、货品、科目、子公司,以及交易及其明细行和过账金额。AI 正是借此回答诸如每个客户的未结发票、按货品统计的销售额或按供应商统计的支出等问题。结果按每页最多 1,000 行返回,一次查询总共最多返回 100,000 行,因此较大的问题会用汇总数据而不是逐行数据来回答。角色无权查看的行会被直接略去,不会报错,所以返回空结果可能意味着缺少权限。
记录:专用工具可读取客户、供应商、员工、货品、销售订单、发票、采购订单、供应商账单和日记账分录及其明细行,netsuite_get_record 可读取任何其他记录类型。netsuite_describe_record_type 会列出某个记录类型的所有字段,包括自定义字段。
写入前先确认:netsuite_create_customer 会在你确认后创建客户。netsuite_create_sales_order(将订单创建为 Pending Approval 状态,在有人批准之前不会发货)和 netsuite_update_record 在安装时默认关闭;如有需要,可按工具逐个打开。修改已过账的交易会影响账簿。
常见错误:INVALID_LOGIN 表示每周授权已过期,或者集成、角色或用户已被停用:请重新授权。403 或 INSUFFICIENT_PERMISSION:角色缺少某项权限。CONCURRENCY_LIMIT_EXCEEDED:该账户上的并行请求过多,请稍候再试。如果出现未知主机错误,说明 NETSUITE_ACCOUNT_ID 没有按网址形式填写。
连接器只通过 OAuth 2.0 登录,不支持 Token-Based Authentication(TBA)。它不会删除记录,不运行已保存搜索或报表,不调用 RESTlet,也不使用文件柜(file cabinet)。
步骤 2 — 安装 adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
步骤 3 — 在 ChatGPT 中添加连接器
你的服务器 URL: 在 AnythingMCP 中打开 MCP Servers → 此连接器所在的服务器,复制它的 URL(
https://cloud.anythingmcp.com/mcp/…)。本指南中出现YOUR_SERVER_ID的地方都用它替换。
ChatGPT 通过开发者模式(Developer mode)将 MCP 服务器作为自定义应用接入,仅付费套餐可用,免费套餐不可用。在 Business 和 Enterprise 工作区中,可能需要管理员先开启。
- 在 ChatGPT 中打开 Settings → Security and login,开启 Developer mode。
- 前往 chatgpt.com/plugins,点击 +。
- 填写名称和简短描述,例如 Name:
Oracle NetSuite。 - 在 Connection 下填入 MCP 服务器 URL
https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID,然后创建连接。 - ChatGPT 提示时,登录 AnythingMCP(OAuth)并允许访问。
可用工具
| Tool | What it does |
|---|---|
netsuite_suiteql_query | Run one read-only SuiteQL query (NetSuite's SQL over the analytics schema), e.g. "SELECT id, companyname, email FROM customer WHERE… |
netsuite_list_record_types | List the record types the REST record API offers in this account (standard and custom, e.g. customer, salesOrder, inventoryItem… |
netsuite_describe_record_type | Describe one record type as JSON Schema: every field with its type, title and whether it is read-only, the sublists and their line fields… |
netsuite_list_records | List the internal ids of one record type, optionally filtered with the record API's q syntax (field, operator, value), e.g. q = email… |
netsuite_get_record | Read any record by type and internal id (or eid:<external id>), e.g. contact, account, subsidiary, location, estimate, creditMemo… |
netsuite_get_customer | Read one customer by internal id (or eid:<external id>): entityId, companyName or person name, email, phone, subsidiary, currency, terms… |
netsuite_get_vendor | Read one vendor by internal id (or eid:<external id>): entityId, companyName, email, phone, subsidiary, currency, terms, balance, category… |
netsuite_get_employee | Read one employee by internal id: entityId, name, email, title, department, location, subsidiary, supervisor, hireDate, isInactive and the… |
netsuite_get_item | Read one item by its record type and internal id: itemId, displayName, description, prices, cost, units, quantities on hand where tracked… |
netsuite_get_sales_order | Read one sales order by internal id: tranId, entity (customer), tranDate, status, orderStatus, currency, subtotal, total, shipping address… |
netsuite_get_invoice | Read one customer invoice by internal id: tranId, entity, tranDate, dueDate, status, currency, subtotal, taxTotal, total, amountRemaining… |
netsuite_get_purchase_order | Read one purchase order by internal id: tranId, entity (vendor), tranDate, status, currency, total, dueDate and, expanded by default… |
netsuite_get_vendor_bill | Read one vendor bill by internal id: tranId, entity (vendor), tranDate, dueDate, status, currency, total, approvalStatus and, expanded by… |
netsuite_get_journal_entry | Read one journal entry by internal id: tranId, tranDate, postingPeriod, subsidiary, currency, approved, memo and, expanded by default… |
netsuite_create_customer | Create a customer, a company (company_name) or a person (is_person true with first_name and last_name) |
netsuite_create_sales_order | Create a sales order for an existing customer, by default in status Pending Approval (A) so nothing is fulfilled before someone approves it |
netsuite_update_record | Change fields of an existing record of any type (PATCH): only the fields given are changed |
示例提示
- “哪些客户有超过 60 天的未结发票?每个客户各欠多少?”
- “按货品显示上个季度的销售额,按金额列出前 20 名。”
- “根据供应商账单,我们今年在每个供应商上各花了多少钱?”
- “在英国子公司为 Harbor Supplies Ltd. 创建一个客户,保存前先把详细信息给我看。”
FAQ
ChatGPT 免费套餐能用自定义 MCP 连接器吗? 不能。自定义 MCP 连接需要开发者模式,只有付费套餐提供。
下一步
这份指南对你有帮助吗?