跳过安装。2 分钟内即可运行。
在 cloud.anythingmcp.com 开始免费试用,一键添加 weclapp Cloud ERP,然后将你的 AI 客户端(Claude、ChatGPT、Copilot 或 Cursor)指向生成的 MCP 端点。无需 Docker,无需 git clone,无需任何工程经验。
摘要
读写 weclapp Cloud ERP 数据:客户、供应商、联系人和潜在客户、报价单、销售订单、发票、商品、库存、采购订单、任务和工时记录。在德国中小企业中广受欢迎的 ERP。
试试这样问
weclapp Cloud ERP 的示例提示
点击任意提示即可复制,然后粘贴到 Claude、ChatGPT、Cursor、Gemini、Copilot 或 OpenClaw 中,在该连接器上运行。
Claude 是 AI,可能会出错。请核对回答。
💡 无需安装? 直接使用 cloud.anythingmcp.com。 登录、点击 Connectors → weclapp Cloud ERP、粘贴凭证、生成 MCP API key,即可完成。无 Docker、无
git clone、无本地服务器。
weclapp Cloud ERP + Microsoft Copilot
读写 weclapp Cloud ERP 数据:客户、供应商、联系人和潜在客户、报价单、销售订单、发票、商品、库存、采购订单、任务和工时记录。在德国中小企业中广受欢迎的 ERP。
前提条件
完整的设置说明已内置在连接器中 (在 store 中选择连接器时可见)。所需环境变量:
WECLAPP_TENANT, WECLAPP_API_TOKEN
步骤 1 — 获取凭证
- 在 weclapp 中打开你的用户菜单 → My settings → API,将 API 令牌复制到
WECLAPP_API_TOKEN。每个用户只有一个令牌,生成新令牌后旧令牌即失效。 - 在
WECLAPP_TENANT中只填写你的 weclapp 地址的第一部分:对于acme.weclapp.com,填写acme。 - 安装连接器。它使用 weclapp 的 REST API v2,其中客户和供应商都归在 parties 下。
权限跟随用户:令牌以其所属的 weclapp 用户身份操作。该用户角色看不到的记录不会出现在结果中,角色不允许的写入会以 403 被拒绝。请使用对销售、CRM 和商品有读取权限、并对 AI 需要修改的内容有写入权限的用户。
功能:60 个工具,可读取客户、供应商、联系人和潜在客户、报价单、销售订单、销售发票、定期发票、商机、商品和库存,并写回 weclapp:
- 创建和编辑客户、供应商、联系人和潜在客户;
- 创建和编辑报价单和销售订单及其行项目,更改其状态,取消订单,并为订单创建发票;
- 编辑销售发票,例如负责用户或到期日;
- 创建和编辑任务,为任意记录添加评论,并登记工时;
- 创建和编辑商品及其销售价格,并登记入库和出库;
- 向供应商创建采购订单。
定期发票和商机为只读。
先确认:每次写入都会改动你正在使用的 ERP,因此 AI 会先读取记录,告诉你将要改动什么,并等你确认。编辑只修改所发送的字段,试运行(dryRun)可让 weclapp 检查改动而不保存。带上记录的 version 后,如果期间有其他人编辑过该记录,weclapp 会拒绝改动。库存登记立即生效,从订单创建的每张发票都是一张新的发票草稿。六个删除工具(客户及其他 parties、报价单、销售订单、任务、评论和工时记录)安装时默认关闭。
已经安装? 之前安装的连接器可通过目录更新获得新工具:在 AnythingMCP 中打开该连接器,在 Catalog update available 下查看新工具列表,然后点击 Apply update。你的凭据和你自己添加的工具保持不变,删除工具添加后为关闭状态,与新安装时一致。
查找记录:get 工具需要 weclapp 的内部 id。要按编号查找单据,AI 会筛选列表,例如 orderNumber-eq=SO-1042 或 invoiceNumber-eq=RE-1042。未付发票为 paymentStatus-eq=OPEN,汇总收入时不计入贷项通知单。只请求所需字段,可让大型列表保持精简和快速。
限制:列表每页最多返回 1,000 行。weclapp 没有固定的速率限制,但在高负载时会将请求排队,在队列中等待 30 秒后返回 429。
定期发票:该资源不在 weclapp 公开的 API 说明中。如果在你的租户上列出定期发票返回 404,说明该租户不提供此资源。
步骤 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 — 在 Microsoft Copilot 中添加连接器
你的服务器 URL: 在 AnythingMCP 中打开 MCP Servers → 此连接器所在的服务器,复制它的 URL(
https://cloud.anythingmcp.com/mcp/…)。本指南中出现YOUR_SERVER_ID的地方都用它替换。
Microsoft Copilot 通过在 Copilot Studio 中构建的智能体使用 MCP 服务器:把 AnythingMCP 作为工具添加到智能体,然后把智能体发布到 Microsoft 365 Copilot 和 Teams。Copilot Studio 从 Microsoft 的云端通过 Streamable HTTP 连接,AnythingMCP 支持这种方式。
- 在 Copilot Studio 中打开你的智能体(或新建一个),进入 Tools,选择 Add a tool → New tool → Model Context Protocol。
- 填写 Server name(例如
AnythingMCP)、说明连接器用途的 Server description,以及 Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID。Copilot Studio 根据描述决定何时调用该服务器。 - 身份验证选择 API key,把 Type 设为 Header,请求头名称填
X-API-Key,然后选择 Create。 - 在 Add tool 中选择 Create a new connection,粘贴 AnythingMCP 的 MCP API 密钥(MCP Servers → 你的服务器 → API keys),然后选择 Add to agent。
- 在智能体的 Test 窗格中试一试:提出需要用到
weclapp Cloud ERP的工具的请求。 - 选择 Publish,然后进入 Channels → Microsoft 365 and Microsoft Teams,保持勾选 Make agent available in Microsoft Copilot,再选择 Add channel。See agent in Teams 会为你安装该智能体;在 Microsoft 365 Copilot 中输入 @ 并选择该智能体。
希望每个用户各自登录?请选择 OAuth 2.0 → Dynamic discovery 代替 API 密钥:每个用户会在智能体首次调用时登录 AnythingMCP。
自托管?请用你实例的公网 HTTPS 地址替换 https://cloud.anythingmcp.com。Copilot Studio 从 Microsoft 的云端连接,因此 localhost 无法使用。
可用工具
| Tool | What it does |
|---|---|
weclapp_list_customers | List parties (customers/suppliers/contacts) from weclapp ERP |
weclapp_get_customer | Get a specific party (customer/supplier/contact) by ID |
weclapp_list_sales_orders | List sales orders from weclapp ERP |
weclapp_list_invoices | List sales invoices from weclapp ERP |
weclapp_list_articles | List articles (products) from weclapp ERP |
weclapp_get_article | Get a specific article (product) by ID, including stock, pricing, and warehouse data |
weclapp_list_quotations | List sales quotations (Angebote) from weclapp ERP |
weclapp_get_quotation | Get a single sales quotation (Angebot) by ID, including positions, amounts and status |
weclapp_list_recurring_invoices | List recurring invoices (wiederkehrende Rechnungen / Abo-Rechnungen) from weclapp ERP: the templates that periodically generate sales… |
weclapp_get_recurring_invoice | Get a single recurring invoice (wiederkehrende Rechnung) by ID, including its interval, next execution date and template positions |
weclapp_list_opportunities | List sales opportunities (Verkaufschancen) from weclapp CRM |
weclapp_list_reference_data | Look up the records other weclapp records point to by id, to turn a name into the id a write tool needs: users (responsibleUserId, task… |
weclapp_list_comments | List the comments on one weclapp record (sales order, quotation, invoice, party, task, ticket...), newest first with sort='-createdDate' |
weclapp_add_party | Create a customer or supplier (a party) in weclapp |
weclapp_add_contact_person | Create a contact person (a party of type PERSON) in weclapp |
weclapp_add_lead | Create a lead in weclapp: a party with a lead status that is not a customer yet |
weclapp_edit_party | Change fields of a customer, supplier, contact person or lead; fields you do not send keep their values (weclapp partial update… |
weclapp_add_quotation | Create a sales quotation (Angebot) for a customer, with its positions in the same call. weclapp assigns the quotation number and fills… |
weclapp_edit_quotation | Change fields of a sales quotation; fields you do not send keep their values (weclapp partial update) |
weclapp_set_quotation_status | Set the status of a sales quotation through weclapp's own status action: OPEN, ENTRY_COMPLETED, INQUIRED, ACCEPTED, REJECTED or CANCELLED |
weclapp_add_sales_order | Create a sales order (Auftrag) for a customer, with its positions in the same call. weclapp assigns the order number and takes addresses… |
weclapp_edit_sales_order | Change fields of a sales order; fields you do not send keep their values (weclapp partial update), e.g. set the responsible user, the… |
weclapp_set_sales_order_status | Set the status of a sales order: ORDER_CONFIRMATION_PRINTED marks it as confirmed, ORDER_ENTRY_IN_PROGRESS reopens it for changes. weclapp… |
weclapp_cancel_sales_order | Cancel a sales order, or close it manually when parts of it were already shipped or invoiced (weclapp's cancelOrManuallyClose action) |
weclapp_invoice_sales_order | Create a sales invoice from a sales order (weclapp's createSalesInvoice action), optionally combining further orders of the same customer… |
weclapp_edit_sales_invoice | Change fields of a sales invoice; fields you do not send keep their values (weclapp partial update), e.g. set the responsible user or the… |
weclapp_add_task | Create a task (Aufgabe) in weclapp, optionally assigned to users and linked to a customer or a record such as a sales order |
weclapp_edit_task | Change fields of a task; fields you do not send keep their values (weclapp partial update), e.g. mark it done with {"taskStatus"… |
weclapp_add_comment | Add a comment to a weclapp record (sales order, quotation, sales invoice, party, task, ticket...) |
weclapp_add_time_record | Book working time (Zeiterfassung) for a user in weclapp, optionally on a customer, a sales order, a task or a ticket |
weclapp_add_article | Create an article (product or service) in weclapp, optionally with its sales prices |
weclapp_edit_article | Change fields of an article (product); fields you do not send keep their values (weclapp partial update), e.g. name, EAN, manufacturer part… |
weclapp_set_article_prices | Change the sales prices of an article. weclapp keeps them as one list (articlePrices) and replaces it as a whole, so read the article first… |
weclapp_book_stock_in | Book stock into a storage place (weclapp's bookIncomingMovement), e.g. goods received without a purchase order or an upward inventory… |
weclapp_book_stock_out | Book stock out of a storage place (weclapp's bookOutgoingMovement), e.g. breakage, own use or a downward inventory correction |
weclapp_add_purchase_order | Create a purchase order (Bestellung) to a supplier, with its positions in the same call. weclapp assigns the number and takes the… |
weclapp_delete_party | Delete a customer, supplier, contact person or lead. weclapp refuses when documents still refer to the party; block or deactivate it with… |
weclapp_delete_quotation | Delete a sales quotation |
weclapp_delete_sales_order | Delete a sales order. weclapp refuses once the order has shipments or invoices; use weclapp_cancel_sales_order then |
weclapp_delete_task | Delete a task |
weclapp_delete_comment | Delete a comment from a record |
weclapp_delete_time_record | Delete a time record. weclapp refuses once the time is invoiced |
weclapp_list_sales_open_items | List the open items (Offene Posten) of sales invoices and credit notes: amount, amountOpen, amountPaid, amountDiscount, cleared… |
weclapp_get_current_user | Return the weclapp user the API token belongs to: id, name, e-mail, username, status and roles |
weclapp_get_property_translations | Read the translated texts of one record, e.g. an article's name and descriptions in English or French as maintained in weclapp |
weclapp_list_warehouse_stock_movements | List warehouse stock movements (Lagerbewegungen): which article moved, how much, in or out, when, from or to which storage place, and the… |
weclapp_list_production_orders | List production orders (Fertigungsaufträge): number, article, target and actual quantity, target and actual start and end dates, status… |
weclapp_set_sales_invoice_responsible | Set the responsible user (e.g. the field sales rep) of a sales invoice and nothing else; every other field keeps its value (partial PUT… |
weclapp_set_sales_order_responsible | Set the responsible user (e.g. the field sales rep) of a sales order and nothing else; every other field keeps its value (partial PUT with… |
weclapp_set_party_responsible | Set the responsible user (e.g. the field sales rep) of a customer, supplier or lead and, optionally, its fixed-responsible flag… |
weclapp_add_supply_source | Create a supply source (Lieferquelle) for purchasing: which supplier sells the article, under which number, at which purchase price |
weclapp_add_manufacturer | Create a manufacturer (Hersteller) in the master data |
weclapp_add_article_item_group | Create an item group (Positionsgruppe): a named set of articles with quantities that is added to quotations and orders in one step |
weclapp_set_party_emails | Maintain a customer's or supplier's e-mail addresses for documents (master data, E-Mail-Adressen) and choose which entry weclapp uses for… |
weclapp_set_sales_open_item_payment_state | Mark one sales open item as paid (PAID, with the payment date) or back to unpaid (UNPAID), through weclapp's updatePaymentState action |
weclapp_get_reference_record | Read one record of a weclapp reference list by its id, for an id another record points to: e.g. resource=tax with the taxId of an order… |
weclapp_list_notifications | List the weclapp notifications the API token can see: title, description, priority (NORMAL or CRITICAL), read flag and the record they are… |
weclapp_list_external_connections | List the external connections set up in weclapp (shops, marketplaces, shipping, payment and other integrations such as Shopify, Shopware… |
weclapp_get_external_connection | Get one weclapp external connection (shop, marketplace or service integration) by id: name and connectionType |
weclapp_list_active_sales_channels | List the sales channels active in this weclapp tenant: key (GROSS1, NET1 and so on) and the name shown in weclapp |
示例提示
- “列出所有金额超过 1,000 欧元且已过到期日的未付发票。”
- “为 Müller GmbH 创建一份报价单,包含 20 件商品 A5101,按标价计算,保存前先给我看。”
- “今天在销售订单 SO-1042 上为我登记 3 小时,备注:现场安装。”
- “给 Anna 添加一个任务:周五前就未结报价单给 ACME 打电话。”
FAQ
这适用于哪个 Copilot? 适用于工作中的 Microsoft 365 Copilot,通过 Copilot Studio 的智能体实现。面向个人账户的 Microsoft Copilot 应用无法添加自己的 MCP 服务器。
我需要什么? 一个可以使用 Copilot Studio 的工作账户(许可证或试用版),用于构建智能体。在 Microsoft 365 Copilot 或 Teams 中使用它的人需要拥有该智能体的访问权限:把它共享给他们,或请管理员为整个组织发布。如果你的组织对 Power Platform 连接器设置了数据策略,这些策略同样适用于 MCP 服务器。
智能体不调用工具。 检查请求头名称是否正好是 X-API-Key,密钥是否属于与 URL 相同的 MCP 服务器,并把 Server description 写得具体:Copilot Studio 根据它决定何时调用服务器。每次修改后重新发布智能体;在已打开的对话中输入 "start over" 即可使用新版本。
下一步
这份指南对你有帮助吗?