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配置。
添加新工具
添加TypeScript接口 src/types.ts 如有需要
在中创建或编辑文件 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);
}),
);
}
在中注册工具组 src/index.ts:
复制 import { registerMyTools } from "./tools/my-tools.js";
registerMyTools(server, apiClient);
在中添加模拟路线和测试 tests/e2e/
主要惯例:
总是使用 apiClient.buildPath("/resource") --从不硬编码 /api/v1/ 或 /api/v3/
用 withErrorHandling()
使用 jsonResponse() 数据和 textResponse() 用于消息
所有进口必须使用 .js 扩展(ES模块)
发布新版本
要将新版本发布到npm:
确保你的工作树干净,所有测试都通过:
修改版本,创建一个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
验证发布的版本:
复制 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