采购管理协议服务器

一个基于Model Context Protocol(MCP)的服务器,为LLMs提供访问ProcurementExpress API的能力,通过自然语言管理采购订单、发票、预算、供应商和采购流程。

  • by przbadu
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 przbadu/procurementexpress-mcp

使用说明

ProcurementExpress MCP服务器

A. 模型上下文协议(MCP) 为LLM提供访问权限的服务器 采购快递 API通过自然语言管理采购订单、发票、预算、供应商和采购工作流程。

特性

  • 100+工具 覆盖整个ProcurementExpress API表面
  • 双API版本支持 --V1(基于令牌)和V3(OAuth2)身份验证
  • 版本无关的工具层 -所有工具在API版本中的工作方式相同
  • 类型安全 -适用于所有API实体的全面TypeScript接口
  • 文件上传 --支持PO、注释和数字发票的多部分文件上传
  • 政府采购 --SAM.gov检查、政策、供应商批准
  • 零外部运行时依赖关系 --只有 @modelcontextprotocol/sdk 和 zod

快速开始

先决条件

  • Node.js 18+
  • 具有API访问权限的ProcurementExpress帐户

安装

无需安装--直接使用运行 npx:

npx -y @procurementexpress.com/mcp

使用Claude Desktop

将此添加到您的Claude Desktop配置中(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "procurementexpress": {
      "command": "npx",
      "args": ["-y", "@procurementexpress.com/mcp"],
      "env": {
        "PROCUREMENTEXPRESS_API_VERSION": "v1",
        "PROCUREMENTEXPRESS_AUTH_TOKEN": "your_token",
        "PROCUREMENTEXPRESS_COMPANY_ID": "your_company_id"
      }
    }
  }
}

使用Claude代码

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "procurementexpress": {
      "command": "npx",
      "args": ["-y", "@procurementexpress.com/mcp"],
      "env": {
        "PROCUREMENTEXPRESS_API_VERSION": "v1",
        "PROCUREMENTEXPRESS_AUTH_TOKEN": "your_token",
        "PROCUREMENTEXPRESS_COMPANY_ID": "your_company_id"
      }
    }
  }
}

配置

服务器完全通过环境变量配置(在 env 块上面)。

V1身份验证(推荐)

静态令牌身份验证。令牌永远不会过期。

变量 值
PROCUREMENTEXPRESS_API_VERSION v1
PROCUREMENTEXPRESS_AUTH_TOKEN 您的身份验证令牌
PROCUREMENTEXPRESS_COMPANY_ID 您的公司ID

V3身份验证(OAuth2)

OAuth2密码授予。代币有时间限制,需要 client_id/client_secret.

变量 值
PROCUREMENTEXPRESS_API_VERSION v3
PROCUREMENTEXPRESS_CLIENT_ID 您的OAuth2客户端ID
PROCUREMENTEXPRESS_CLIENT_SECRET 您的OAuth2客户端机密

认证

服务器支持两种身份验证模式,由 PROCUREMENTEXPRESS_API_VERSION 环境变量。

V1——基于令牌(默认)

集 PROCUREMENTEXPRESS_API_VERSION=v1。通过环境变量提供您的静态令牌和公司ID,或将它们传递给 authenticate 工具在运行时。

  • 发送 authentication_token 和 app_company_id 每个请求上的标头
  • 令牌永不过期——无需刷新逻辑
  • 环境变量: PROCUREMENTEXPRESS_AUTH_TOKEN, PROCUREMENTEXPRESS_COMPANY_ID

V3--OAuth2

集 PROCUREMENTEXPRESS_API_VERSION=v3。需要 PROCUREMENTEXPRESS_CLIENT_ID 和 PROCUREMENTEXPRESS_CLIENT_SECRET 环境变量。打电话给 authenticate 使用电子邮件/密码获取Bearer令牌的工具。

  • 发送 Authorization: Bearer <token> 每个请求的标题
  • 令牌有刷新支持的时间限制
  • 验证后,使用 set_active_company 选择一家公司

可用工具

身份验证(3个工具)

工具 说明
authenticate V1:设置令牌+公司ID。V3:使用电子邮件/密码登录OAuth2
validate_token V1:获取当前用户以验证令牌。V3:获取令牌元数据
revoke_token V1:清除本地令牌。V3:撤销OAuth2令牌

用户(4个工具)

工具 说明
get_current_user 获取经过身份验证的用户的个人资料和公司成员资格
update_current_user 更新个人资料(电子邮件、姓名、电话、密码)
list_currencies 列出当前公司启用的货币
list_all_currencies 列出全球所有可用货币

公司(12种工具)

工具 说明
list_companies 列出当前用户所属的所有公司
get_company 按ID获取公司详细信息,包括设置和货币
get_company_details 获取当前活跃公司的详细信息
set_active_company 为后续API调用设置活动公司ID
list_approvers 列出按部门筛选的审批人
list_all_approvers 列出所有审批人,无论其路线如何
list_employees 列出所有具有角色的在职员工
invite_user 邀请用户(角色:公司管理员、审批人、财务、团队成员)
get_invite_limit 获取公司的剩余邀请时段
list_pending_invites 列出待处理的用户邀请
cancel_invite 取消挂起的用户邀请
resend_invite 重新发送待处理的用户邀请电子邮件

预算(4种工具)

工具 说明
list_budgets 按页码列出预算,按部门/已存档/活动进行筛选
get_budget 获取预算详细信息,包括剩余金额
create_budget 创建新预算
update_budget 更新现有预算

部门(4个工具)

工具 说明
list_departments 列出具有可选存档过滤器的部门
get_department 找一个特定的部门
create_department 创建新部门
update_department 更新部门

供应商(7种工具)

工具 说明
list_suppliers 使用分页和过滤器列出供应商
get_top_suppliers 通过支出获得顶级供应商
get_supplier 找到一个特定的供应商
create_supplier 创建供应商(名称必须唯一)
update_supplier 更新供应商
check_sam_gov 根据SAM.gov数据库检查供应商
list_supplier_approvals 列出待处理的供应商审批请求

产品(6工具)

工具 说明
list_products 列出带有供应商/存档过滤器的产品
get_product 获取特定产品
create_product 创建新产品
update_product 更新产品
bulk_create_products 在一次通话中批量创建多个产品
list_product_skus 列出所有产品SKU

采购订单(19个工具)

工具 说明
list_purchase_orders 列出具有分页、搜索和过滤器的PO
get_purchase_order 获取订单详细信息,包括行项目、评论、批准
create_purchase_order 创建采购订单(提交=“发送”以提交,“草稿”以保存)
update_purchase_order 更新现有采购订单
approve_purchase_order 使用审批者请求中的接受令牌进行审批
reject_purchase_order 使用审批者请求中的拒绝令牌拒绝
override_and_approve_purchase_order 财务优先审批(无需令牌)
cancel_purchase_order 取消采购订单
archive_purchase_order 切换采购订单的存档状态
delete_purchase_order 永久删除采购订单
generate_purchase_order_pdf 生成PDF并返回下载链接
get_pending_request_count 获取待处理审批请求的计数
receive_purchase_order_items 将行项目标记为已收到(部分或全部交付)
cancel_receiving_items 取消订单的所有已收货
complete_purchase_order_delivery 将订单标记为已完全交付
bulk_save_purchase_orders 批量创建/更新多个PO
get_po_auto_approvers 获取采购订单的自动分配审批人
get_po_available_approvers 预览采购订单的可用审批人
get_po_approval_flow_link 获取审批流链接以与供应商共享

发票(13个工具)

工具 说明
list_invoices 列出带有分页和过滤器的发票
get_invoice 获取发票详细信息
create_invoice 创建新发票
update_invoice 更新现有发票
accept_invoice 接受等待审核的发票
approve_invoice 批准发票
reject_invoice 拒绝发票
cancel_invoice 取消发票
archive_invoice 将发票存档
dearchive_invoice 恢复已存档的发票
rerun_invoice_approval_flow 重新运行特定发票的审批流
list_invoice_purchase_orders 列出可链接到发票的PO
list_invoice_purchase_order_items 列出可链接到发票的采购订单项目

自定义字段(6个工具)

工具 说明
list_custom_fields 列出公司的所有自定义字段
get_custom_field 按ID获取自定义字段
create_custom_field 创建自定义字段(文本、下拉列表、日期、数字等)
update_custom_field 更新现有自定义字段
delete_custom_field 删除(存档)自定义字段
update_custom_field_positions 重新排序自定义字段

合规性(10个工具)

工具 说明
check_compliance 对采购订单或发票触发合规性检查(异步)
bulk_check_compliance 触发对多个PO的批量合规性检查
get_bulk_check_status 获取批量合规性检查的状态
justify_compliance_violation 为特定的合规违规行为辩护
generate_compliance_memo 生成AI合规备忘录
list_compliance_scan_history 列出合规性扫描历史记录
get_compliance_scan_details 获取特定合规性扫描的详细信息
create_evidence_pack 为合规性检查创建证据包
get_evidence_pack 按ID获取证据包
download_evidence_pack 下载证据包ZIP文件

上传(3个工具)

工具 说明
upload_file_to_purchase_order 将文件附件上传到采购订单(多部分)
upload_file_to_comment 将文件上传到注释(多部分)
get_upload_status 通过令牌检查上传状态

政策(6个工具)

工具 说明
list_policies 列出带筛选器的公司政策
get_policy 通过ID和版本历史获取策略
create_policy 制定新的公司政策
update_policy 更新现有策略
delete_policy 删除(软删除)策略
list_policy_templates 列出可用策略模板

聊天信息(3个工具,仅限V3)

工具 说明
list_chat_messages 列出文档的聊天消息
create_chat_message 在采购订单/发票上创建聊天消息
delete_chat_message 删除聊天消息

数字发票(1个工具)

工具 说明
create_digital_invoice 根据扫描的文档上传创建发票

审批流程(13个工具)

工具 说明
list_approval_flows 列出具有搜索和分页功能的审批流
get_approval_flow 获取流程详细信息,包括步骤、审批人、条件
create_approval_flow 创建流程(文档类型:0=采购订单,1=发票)
update_approval_flow 更新现有审批流
delete_approval_flow 永久删除审批流
archive_approval_flow 存档审批流(软删除)
publish_approval_flow 发布审批流以使其处于活动状态
unpublish_approval_flow 取消发布审批流以将其停用
list_approval_flow_runs 使用状态和日期筛选器运行列表
get_approval_flow_entity 获取通过流的实体的详细信息
list_approval_flow_versions 列出审批流的所有版本历史记录
get_approval_flow_version_details 获取特定版本的完整详细信息
rerun_approval_flows 重新运行特定PO和/或发票的审批流

付款(3种工具)

工具 说明
get_payment 通过ID获得特定付款
create_payment 创建付款(类型:银行转账、卡、支票、现金等)
create_po_payment 为采购订单创建项目级付款

税率(4个工具)

工具 说明
list_tax_rates 列出所有税率(单一和组合)
get_tax_rate 获取特定税率
create_tax_rate 创建新的税率
update_tax_rate 更新税率

Webhooks(5个工具)

工具 说明
list_webhooks 列出带有可选存档过滤器的Webhook
get_webhook 获取特定的webhook
create_webhook 创建一个webhook(事件:new_po、po_approved、po_deliver、po_paid、po_canceled、po_update)
update_webhook 更新webhook
delete_webhook 删除webhook

评论(2个工具)

工具 说明
add_purchase_order_comment 向采购订单添加注释
add_invoice_comment 在发票上添加注释

补充(8个工具)

工具 说明
list_chart_of_accounts 带搜索的科目表(总账代码)列表
get_chart_of_account 获取特定的会计科目表
list_qbo_customers 通过搜索列出QuickBooks客户
get_qbo_customer 获取特定的QuickBooks客户
list_qbo_classes 列出带搜索的QuickBooks类
get_qbo_class 获取特定的QuickBooks类
list_send_to_supplier_templates 列出用于发送PO的电子邮件模板
forward_purchase_order 通过电子邮件向供应商发送采购订单

AI代理技能

服务器附带10个特定模块 Claude代码技能 在 .claude/skills/ 它将AI代理路由到正确的MCP工具调用,而无需读取整个源文件。技能使用 pex: 命名空间:

技能 工具 描述
pex:auth 5 身份验证(V1/V3)、令牌管理、用户配置文件
pex:companies 12 公司详细信息、员工、邀请函、审批人
pex:budgets 4 支持自定义字段的预算CRUD
pex:departments 4 原油部门
pex:suppliers 9 供应商和产品管理
pex:purchase-orders 18 PO生命周期、交付、PDF、转发、评论
pex:invoices 12 发票生命周期、审批、评论
pex:payments 3 付款创建和检索
pex:approval-flows 13 审批流配置、运行、版本
pex:settings 17 税率、挂钩、货币、会计科目表、QBO

复杂模式的技能包括 references/ 用于逐步披露的子目录(例如,行项目模式、审批条件、工作流)。

在项目中安装技能

要在您自己的项目中与MCP服务器一起使用这些技能,请复制 .claude/skills/pex-* 项目中的目录:

# From your project root
mkdir -p .claude/skills

# Copy all PEX skills from the package
cp -r node_modules/@procurementexpress.com/mcp/.claude/skills/pex-* .claude/skills/

或者只挑选你需要的技能:

# Example: only purchase orders and invoices
cp -r node_modules/@procurementexpress.com/mcp/.claude/skills/pex-purchase-orders .claude/skills/
cp -r node_modules/@procurementexpress.com/mcp/.claude/skills/pex-invoices .claude/skills/

一旦安装,Claude Code将自动发现技能并使用它们来路由到正确的MCP工具调用(例如。, /pex:purchase-orders, /pex:invoices).

项目结构

src/
  index.ts              # Entry point — MCP server setup, auth tools, tool registration
  api-client.ts         # HTTP client with versioned path building, auth headers, multipart support
  auth.ts               # Dual auth manager (V1 token / V3 OAuth2)
  tool-helpers.ts       # Shared response helpers and error handling wrapper
  types.ts              # TypeScript interfaces for all API entities
  schemas.ts            # Shared Zod schemas (custom field values, line items, nested attributes)
  tools/
    approval-flows.ts   # Approval flow CRUD, publish/unpublish, runs, versions, rerun
    budgets.ts          # Budget CRUD
    chat-messages.ts    # Chat messages (V3 only) — list, create, delete
    comments.ts         # PO and invoice comments
    companies.ts        # Company details, employees, approvers, invitations, pending invites
    compliance.ts       # Compliance checks, bulk checks, justifications, memos, evidence packs
    custom-fields.ts    # Custom field CRUD + position reordering
    departments.ts      # Department CRUD
    digital-invoices.ts # Digital invoice creation from scanned documents
    invoices.ts         # Invoice CRUD, approve/reject/cancel/archive, rerun approval, PO linking
    payments.ts         # Payment creation (standalone, PO-linked, NPayment) and get
    policies.ts         # Policy CRUD + policy templates
    products.ts         # Product CRUD + bulk create + SKU listing
    purchase-orders.ts  # PO CRUD, approve/reject/cancel/archive/delete, delivery, PDF, bulk save
    supplementary.ts    # Chart of accounts, QBO integration, email forwarding
    suppliers.ts        # Supplier CRUD + top suppliers + SAM.gov check + supplier approvals
    tax-rates.ts        # Tax rate CRUD
    uploads.ts          # File uploads (PO attachments, comment files, upload status)
    users.ts            # Current user profile and currency listing
    webhooks.ts         # Webhook CRUD + delete
tests/
  e2e/
    setup.ts            # MockApiServer with version-agnostic route registration
    *.test.ts           # E2E tests for each tool group (211 tests)

发展

对于希望在服务器上工作的贡献者:

git clone https://github.com/przbadu/procurementexpress-mcp.git
cd procurementexpress-mcp
npm install

构建

npm run build      # Compile TypeScript to dist/
npm run dev        # Watch mode for development

测试

npm test                                    # Run all tests
npm run test:e2e                            # Run E2E tests only
npx vitest run tests/e2e/auth.test.ts       # Run a single test file
npm run test:watch                          # Watch mode

测试使用a MockApiServer -模拟ProcurementExpress API的轻量级HTTP服务器。模拟路由使用与版本无关的正则表达式模式(/api/v[13]/)因此测试适用于V1和V3配置。

添加新工具

  1. 添加TypeScript接口 src/types.ts 如有需要
  2. 在中创建或编辑文件 src/tools/ 遵循现有模式:
import { z } from "zod";
import type { ApiClient } from "../api-client.js";
import type { Server } from "../tool-helpers.js";
import { jsonResponse, withErrorHandling } from "../tool-helpers.js";

export function registerMyTools(server: Server, apiClient: ApiClient): void {
  server.registerTool(
    "my_tool_name",
    {
      description: "What this tool does",
      inputSchema: {
        id: z.number().int().positive().describe("Resource ID"),
      },
    },
    withErrorHandling(async (args) => {
      const result = await apiClient.get(apiClient.buildPath(`/my_resource/${args.id}`));
      return jsonResponse(result);
    }),
  );
}
  1. 在中注册工具组 src/index.ts:
import { registerMyTools } from "./tools/my-tools.js";
registerMyTools(server, apiClient);
  1. 在中添加模拟路线和测试 tests/e2e/

主要惯例:

  • 总是使用 apiClient.buildPath("/resource") --从不硬编码 /api/v1/ 或 /api/v3/
  • 用 withErrorHandling()
  • 使用 jsonResponse() 数据和 textResponse() 用于消息
  • 所有进口必须使用 .js 扩展(ES模块)

发布新版本

要将新版本发布到npm:

  1. 确保你的工作树干净,所有测试都通过:

    npm test
    
  2. 修改版本,创建一个git标签,然后发布:

    # Choose one: patch (bug fixes), minor (new features), major (breaking changes)
    npm version patch -m "v%s"   # or minor / major
    
    # Push the commit and tag
    git push && git push --tags
    
    # Publish to npm (auto-builds via prepublishOnly)
    npm publish
    
  3. 验证发布的版本:

    npm view @procurementexpress.com/mcp version
    

该包发布为 @procurementexpress.com/mcp 在npm上。

环境变量引用

变量 必填 默认 描述
PROCUREMENTEXPRESS_API_BASE_URL 没有 https://app.procurementexpress.com API基本URL
PROCUREMENTEXPRESS_API_VERSION 没有 v1 API版本(v1 或 v3)
PROCUREMENTEXPRESS_COMPANY_ID V1 -- V1身份验证的公司ID
PROCUREMENTEXPRESS_AUTH_TOKEN V1 -- V1的静态身份验证令牌
PROCUREMENTEXPRESS_CLIENT_ID V3 -- V3的OAuth2客户端ID
PROCUREMENTEXPRESS_CLIENT_SECRET V3 -- V3的OAuth2客户端机密

许可证

ISC