# @chrischall/concur-mcp 中文文档

规范地址：https://npmcn.com/package/%40chrischall/concur-mcp/

版本：0\.5\.0
npm 元数据更新时间：2026-11-07T12:05:53.879Z
中文译文更新时间：2026-11-09T16:07:08.386Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40chrischall/concur-mcp
原文对照：https://npmcn.com/package/%40chrischall/concur-mcp/?lang=original
项目主页：https://github.com/chrischall/concur-mcp#readme
源码仓库：https://github.com/chrischall/concur-mcp

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：3.7 MB，54 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22\.5\.0
- 运行依赖：5 个
- 首次发布：2026-10-08T19:17:31.448Z
- 最新版本发布：2026-11-07T12:05:53.555Z
- 近 30 天下载量：2256（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 13 个）

## 中文简介

Claude的非官方SAP协议MCP服务器——支出报告、支出、收据和出行——由AI(Claude代码)开发和维护

## 安装

```sh
npm install @chrischall/concur-mcp
```

也可以使用：`pnpm add @chrischall/concur-mcp`、`yarn add @chrischall/concur-mcp`、`bun add @chrischall/concur-mcp`

## README

# SAP 商定 MCP

[![CI](https://github.com/chrischall/concur-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/chrischall/concur-mcp/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/@chrischall/concur-mcp)](https://www.npmjs.com/package/@chrischall/concur-mcp) [![license](https://img.shields.io/npm/l/@chrischall/concur-mcp)](https://npmcn.com/package/%40chrischall/concur-mcp/LICENSE)

A 类 [示范背景协议](https://modelcontextprotocol.io/) 连接克劳德的服务器 [SAP 已商定](https://www.concur.com/):您的支出报告、支出、可用(未记账)支出、收据和旅行旅行——读作: **财务报告和审定财务报表** 写,每写确认.

> \[尖叫声\] **AI开发的项目.** 这个代码库是完全建成的,并且由 [克劳德](https://www.anthropic.com/claude)没有任何人对执行情况进行过审计。 在使用前审查所有代码和工具权限 .

> \[叹息\] **非官方而无所支持.** 此服务器不使用 Concur 所记录的伙伴 API 。 它将内部 GraphQL API 称为 Concur 网络应用程序本身, 由您自己签名的浏览器会话认证 。 它可能在不事先通知的情况下中断,自动使用可能会与SAP Concour或你的雇主的条款相冲突. 仅供自用,自酌取用.

## 尽你所能

问克洛德什么的:

-   _"我的协和会的哪些报告仍未提交,什么阻碍着它们?"_
-   _"给我看看还没有上报的卡片交易"_
-   _"创造一份叫做"奥斯汀离地"的报告,并将上星期的"Uber"和"酒店收费"移至其中_
-   _"上载~/下载/餐饮.pdf 并附入餐饮费用"_
-   _"我下次旅行是什么时候出发的 我住哪家酒店?"_

## 所需资源

-   [克劳德桌面](https://claude.ai/download), Claude 代码或任何 MCP 主机
-   [节点.js](https://nodejs.org/) 22.5年或以后
-   这个 [上下文闪烁桥](https://github.com/nullnet-app/contextmint-bridge/releases) 浏览器扩展和一个已签名的 Concur 标签( )`https://<dc>.concursolutions.com/…`(中文(简体) )

## 安装

### Claude 代码插件

```bash
claude plugin marketplace add chrischall/concur-mcp
claude plugin install concur@chrischall
```

### 任意 MCP 主机( npx)

```json
{
  "mcpServers": {
    "concur": {
      "command": "npx",
      "args": ["-y", "@chrischall/concur-mcp"],
      "env": { "CONCUR_DC": "us2" }
    }
  }
}
```

### 克洛德桌面 (. mcpb)

安装 `.mcpb` 从 [最新发布](https://github.com/chrischall/concur-mcp/releases)。安装器请求您的数据中心(默认) `us2`) (中文(简体) ).

## 如何认证

Concour的网络应用认证了它的API 调用 Http `JWT` 饼干,页面本身无法读取。 此服务器使用 [获取代理](https://github.com/chrischall/fetchproxy) 桥 **仅读取 三场曲奇** 您的签名标签: `JWT`,加上 Concour 遗留的会话饼干 `OTSESSIONAABQRD` 财务报告和审定财务报表 `OTSESSIONAABQRN`,然后从节点调用 `Authorization: Bearer <jwt>` (单位:千美元) `Cookie` 带有标签上的任何OTSESSION cookie的页眉——Concour的部分仍然由其遗留的服务(报告密钥,货币,可用收件,权限)来回答一个没有它们的错误. 饼干只被保存在记忆中,从不出现在出错或日志中;您家目录下所写的唯一东西就是桥的配对身份.

信物活了60分钟 服务器从您的标签中重新读取饼干( 全部一起) , 当符号在过期后两分钟内, 或者一次在 a `401` (每通电话重读一通并重试一通,绝无回环. 读取失败的方式 一个 Stale OTSESSION cookie 失败 获得相同的单重读和再试。 在打开标签时,Concor要保持饼干新鲜,所以 **继续打开已签名的标签** 当你使用工具. `concur_healthcheck` 报告哪一个来源提供了信使,它还剩了多少分钟,是否找到遗留的会话 cookie —— 从来不是一个 cookie 值.

> **从早先的建筑升级?** 桥梁范围从 `JWT` 单独到 `JWT` +两个口味饼干。 双倍给付是透视的,所以一个已经发售的服务器必须是 **重新核准一次**:下个调用答案并带有新的一对代码(或范围更改后的通知)——在上下文Mint Bridge弹出中批准.

### 配对(一次)

1.  安装 [上下文闪烁桥](https://github.com/nullnet-app/contextmint-bridge/releases) (Chrome:装入解开的放出拉链) 并在浏览器中签入 Concure.
2.  叫克劳德跑 `concur_healthcheck`。第一个呼叫答案是 **配对代码**。 。 。 .
3.  批准上下文Mint桥的代码 这种信任贯穿于重启期间(它生活在 `~/.fetchproxy/identity/`) (中文(简体) ).

**不止一个浏览器?** 如果在几个浏览器中安装了ContextMint Bridge,则每个浏览器都会拨打同一个本地端口,其中任何一个都可以批准对接码. **在您的 Concure 会话的浏览器中批准** ——服务器在批准哪个扩展时标出,只有浏览器的分页才能提供cookie. 线条类 `refusing an extension whose identity is not the one this MCP paired with` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}在石刻上是 _其他项目_ 浏览器被转走,是无害的.

**错误的浏览器, 还是改变浏览器 ?** 撤销 `concur-mcp` 在上下文Mint Bridge弹出时,用 `fpx trust clear concur-mcp` (从) [`@fetchproxy/cli`](https://www.npmjs.com/package/@fetchproxy/cli);或删除 `~/.fetchproxy/identity/concur-mcp.extension-trust.json`),重新启动服务器,并从右侧浏览器再次对齐.

## 配置

| 新闻 var | 默认 | 目的 |
| --- | --- | --- |
| `CONCUR_DC` | `us2` | 您的数据中心: 您登录标签主机的第一个标签( Name`us2` 页:1 `us2.concursolutions.com`, (中文(简体) ), `eu2`(中文(简体) ). 必须匹配会话令牌的发件人, 或者每一次通话都出现错误, 显示要使用哪个值 . |
| `CONCUR_WS_PORT` | `37149` | 接接接接接通的桥口 整个接取代理机队和背景明通桥共享 `37149`; 仅针对本地测试(或当一个主机注入每个注册端口时)进行超标. |
| `CONCUR_OUTPUT_DIR` | `~/Downloads/concur-mcp` | 何处 `concur_get_receipt` 保存已下载的收据( 绝不覆盖已有文件) . |
| `CONCUR_UPLOAD_ROOTS` | `~/Downloads`, (中文(简体) ), `~/Documents`, (中文(简体) ), `~/Desktop`,加上当它是您家目录中的文件夹时的 cwd(绝不) `/` 或家本身 – Claude 桌面在 `/`(中文(简体) ) | 唯一的文件夹 `concur_upload_receipt` 将从(一个分隔路径的列表)读取; `~` 页:1 主机服务器拒绝每次 `path` (使用时 `concur_upload_slots` 或者说 `inline`) (中文(简体) ). |
| `CONCUR_INLINE_RECEIPTS` | 本地关闭, 当主机运行时 | `true` 制造 `concur_get_receipt` 返回结果中的图像,而不是写入一个文件(超过 10 MiB 被本地保存,或主机时的签名链接). |
| `MCP_USER_TZ` | 服务器区域 | 您的 IANA 时区( 如 . `America/New_York`),用于“今天” `concur_create_report` 默认 `reportDate`. 设定为主机时——主机服务器运行于协调世界时,否则明天将会有一份晚报. |
| `CONCUR_DEBUG` | 关 | 将桥上的角色和寿命周期记录为 stderr. |
| `MCP_CONFIRM_MODE` | `ask-user` | 无法显示确认提示的客户端的写作——见下文. |
| `MCP_CONFIRM_ELICITATION` | `on` | `off` 从不显示确认提示, 所以每个客户端都拿走 `MCP_CONFIRM_MODE` 路径(对于声明提示但从未给出提示的客户). |

## 确认写入

每个改变Concoun(或电子邮件某人)内容的工具都会被确认:

-   **支持MCP诱导的客户端** 显示真实的确认提示, 准确描述将发送什么 .
-   **其他地方(Claude.ai、克洛德桌面)** 第一通电话 **没有** 更改: 它返回一个精确的预览, 将会发送什么, 加上一个单一用途, 短寿命 `confirmToken`。如果请求中有任何变化,则拒绝.

`MCP_CONFIRM_MODE` 决定谁可以使用该标志:

| 数值 | 行为 |
| --- | --- |
| `ask-user` (默认) | 模型必须显示预览,并在重用符号前在聊天中获得您的批准. |
| `auto` | 模型在看到预览后可能使用符号本身. |
| `refuse` | 拒绝给客户写作,没有立即确认。 未识别值作为 `refuse`。 。 。 . |

来自Concure的文本——卖主名,评论,出行细节,电子邮件——被作为不信任的数据处理:它永远不能授权写作.

## 工具

大部分读取工具 `view: compact | full | raw` (默认) `compact`: `compact` 放弃你很少需要的字段, `full` 全部留着, `raw` 是未预测的 Concor 响应.

### 会话和浏览

| 工具 | 它会做什么 |
| --- | --- |
| `concur_healthcheck` | 哪个来源提供了代号, API是否接受, 往返时间, 过期分钟 |
| `concur_whoami` | 您的用户身份、 数据中心、 符号分钟和启用的特性 |
| `concur_list_expense_types` | 报告政策允许的开销( ID、 名称、 组) |
| `concur_list_payment_types` | 支付类型,您可以支付费用(现金,公司卡,.) |
| `concur_list_currencies` | 接受,可选择过滤 |
| `concur_search_locations` | 按城市分列的支出地点(可选的国家/分区) |

### 报告和开支(阅读)

| 工具 | 它会做什么 |
| --- | --- |
| `concur_list_reports` | 按状况分列的报告`ALL`, (中文(简体) ), `ACTIVE`, (中文(简体) ), `UNSUBMITTED`, (中文(简体) ), `SENT_FOR_PAYMENT`)和日期范围 |
| `concur_get_report` | 一份报告:标题、每个支出条目及其例外`blocking` 防止提交) |
| `concur_get_report_timeline` | 报告的时间表(评论和工作流程活动)和审计线索 |
| `concur_get_expense` | 一项费用:按标签、项目、收货、评论、例外情况列出表格字段 |
| `concur_list_available_expenses` | 尚未上报的卡片交易、电子收发和移动抓取 |

### 报告和开支(写——全部确认)

| 工具 | 它会做什么 | 可逆转? |
| --- | --- | --- |
| `concur_create_report` | 创建未提交的报告 | 对(`concur_delete_report`(中文(简体) ) |
| `concur_update_report` | 更改标题字段; 只发送更改 | 对 |
| `concur_delete_report` | 删除未提交的报告 **和一切费用** | **没有** |
| `concur_add_report_comment` | 增加一个评论批准人 | **没有** (无法删除评论) |
| `concur_submit_report` | 向您的审批人发送报告 | **没有** 达到一个人; `concur_recall_report` 在批准前可以收回 |
| `concur_recall_report` | 回顾已提交的未经核准的报告 | 对 |
| `concur_create_expense` | 在未提交的报表中添加一个费用; 任何可按标签编辑的表格字段( 海关、 车票号码、 从/ 到位置,...); 外币获得日期的汇率 | 对 |
| `concur_update_expense` | 改变开支,包括这些表格字段和汇率;只发送变化 | 对 |
| `concur_delete_expenses` | 从报告中删除支出(卡片交易返回现有支出) | **没有** |
| `concur_copy_expense` | 复制费用 | 对 |
| `concur_move_available_expenses_to_report` | 将可用费用移至报告 | **没有** (双方没有退后) |
| `concur_delete_available_expenses` | 删除现有费用 | **没有** |

### 参与者

| 工具 | 它会做什么 | 可逆转? |
| --- | --- | --- |
| `concur_search_attendees` | 通过名称或电子邮件搜索参与者目录( 同事、 已保存的来宾) | 读取 |
| `concur_set_attendees` | **替换** 费用参与者列表(您先默认),平分金额——确认额 | **没有** (没有工具读取以前的列表, 或清除它) |

### 收款

| 工具 | 它会做什么 | 甘地吗? |
| --- | --- | --- |
| `concur_list_available_receipts` | 在您的收货店中接收不计入支出的图像 | 读取 |
| `concur_get_receipt` | 下载一个收件图像(%% 25 MB): 至 `CONCUR_OUTPUT_DIR` 本地、内联网或10个以上的MiB的签名下载链接,有效期为1小时 | 无( 商定不变) |
| `concur_upload_slots` | 已签名的上传 URL( 已准备好) `curl`)将接收文件发送给主机服务器 | 无( 只签名 URL) |
| `concur_upload_receipt` | 从允许的本地文件夹上传 png / jpg / pdf (%% 25 MB) (`path`,仅本地安装),作为 base64 (`inline`),或从上传槽(`blobKey`(中文(简体) ) | 对 |
| `concur_attach_receipt` | 将存储的图像附加到一个没有成本的成本中 | 对 |
| `concur_append_receipt` | 添加已存储的图像作为支出收据的额外页面 | 对 |
| `concur_detach_receipt` | 把图像从开支中取出 | 对 |
| `concur_add_missing_receipt_declaration` | 缺少收据申报表(ffidavit),用于没有收据的开支 -- **您证明收据丢失**;预览会显示您的策略声明文本。 没有工具删除一个( 附加一个收件替换它) | 对 |
| `concur_delete_receipt` | 删除一个未附带的收件图像 —— **无法被撤销** | 对 |

### 旅费

| 工具 | 它会做什么 |
| --- | --- |
| `concur_list_trips` | 您的旅行( 默认即将进行; 过去或全部), 可过滤 |
| `concur_get_trip` | 搭乘飞机、旅馆、汽车和铁路的一程 |
| `concur_get_trip_history` | 旅行历史:变更、批准、行程电子邮件 |
| `concur_send_itinerary` | 发送旅行行程 **发送真实的电子邮件**,确认 |

### 逃生舱

| 工具 | 它会做什么 |
| --- | --- |
| `concur_list_operations` | GraphQL 操作 Concur Web 应用程序使用的名称、 终点、 目的, 以及已经运行的专用工具 |
| `concur_graphql_query` | 运行原始的只读查询( E)`spend` 或者说 `cds` 结束点);拒绝任何可以写入的内容 |
| `concur_graphql_mutation` | 运行一个原始的突变, 在预览中以完整的文档确认; 拒绝包含提交在内的范围外的操作( 使用) `concur_submit_report`(中文(简体) ) |

## 范围外

这些在Concure中存在,但是是故意的 **没有** 已经建成。 未建成与被拒绝不同:生出逃生舱口仍能到达警卫不取名的下方.

被拒绝 `concur_graphql_mutation` (按操作名称和字段匹配网络应用程序的文本选择,所以重命名或化名无法通路): `processApproval`, (中文(简体) ), `updateWorkItemStatus`, (中文(简体) ), `startSearch`, (中文(简体) ), `saveBookingSelections`, (中文(简体) ), `holdTrip`, (中文(简体) ), `confirmTrip`, (中文(简体) ), `commitChange`, (中文(简体) ), `tryCancelTripOrBooking`,以及 `SubmitExpenseReport` (使用时 `concur_submit_report`) (中文(简体) ).

-   **核准** ——批准或退回他人报告(`contextRole: MANAGER`) (中文(简体) ). 未构建: `approvalsportal.asp` 页 次 `GetApproversList` 财务报告和审定财务报表 `loadApprovalDetails` 读取,和 `UpdateTimelineWorkflow` 电话 拒绝: CDS `processApproval`,以及 `updateWorkItemStatus` (单位:千美元)`updateDelegatesDashboardWorkItemStatus`) (中文(简体) ). 此服务器只操作您自己的数据 .
-   **卡片交易管理** ——卡片账户页面及其操作: `/Expense/Client/cardtransactions.asp`, (中文(简体) ), `GetCardAccounts`, (中文(简体) ), `GetCardTransaction`, (中文(简体) ), `MoveCCTransactionsToReport`, (中文(简体) ), `CreateCBSReportAndMoveCCTransactionsToReport`, (中文(简体) ), `RefreshYodleeTransactions`. (已作为可用支出出现的信用证费用) _为:_ 已涵盖——列表,移到报告,删除。 )
-   **预订或取消旅行** - 搜索、价格、帐簿、持有、确认或取消(`startSearch`, (中文(简体) ), `saveBookingSelections`, (中文(简体) ), `holdTrip`, (中文(简体) ), `confirmTrip`, (中文(简体) ), `commitChange`, (中文(简体) ), `tryCancelTripOrBooking`) (中文(简体) ). 除了通过电子邮件发送行程之外,旅行只读.

## 升级

**0.5.0 - (中文(简体) ) `concur_get_receipt` 内置输出.** 返回的非图像收件内置( a PDF) 是一个嵌入式资源, 其 URI 现在 `attachment:///receipt-<imageId>.<ext>` (这是 `concur-receipt:<imageId>`) (中文(简体) ). JSON区块也有收益 `via` (单位:千美元)`image`, (中文(简体) ), `resource`, (中文(简体) ), `link` 或者说 `disk`),并在主机服务器上 `downloadUrl` + 键 `expiresAt` 用于签名链接。 和以前一样的电话 `concur-receipt:` URI 应改为: `via` 换句话说.

## 发展

```bash
npm install
npm run build        # tsc → dist/, then esbuild → dist/bundle.js (the .mcpb entry)
npm test             # typecheck + vitest
npm run test:coverage
```

API的表面是建立在 —— 主机、 认证器、 使用的每个操作, 以及经过验证的活件上 [`docs/CONCUR-API.md`](https://npmcn.com/package/%40chrischall/concur-mcp/docs/CONCUR-API.md),有逐字记录文本 [`docs/api/`](https://npmcn.com/package/%40chrischall/concur-mcp/docs/api/)。 。 。 .

## 许可证

麻省理工学院

## 常见问题

### @chrischall/concur-mcp 是什么？

Claude的非官方SAP协议MCP服务器——支出报告、支出、收据和出行——由AI\(Claude代码\)开发和维护

### 如何安装 @chrischall/concur-mcp？

在项目目录运行 npm install @chrischall/concur-mcp，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 concur-mcp，可以用 npx concur-mcp 直接运行。

### @chrischall/concur-mcp 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/chrischall\_\_concur-mcp 是否存在。

### @chrischall/concur-mcp 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @chrischall/concur-mcp 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.5\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @chrischall/concur-mcp 可以商用吗？

@chrischall/concur-mcp 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @chrischall/concur-mcp 的下载量有多少？

根据 npm 官方下载统计，@chrischall/concur-mcp 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,256 次，日均约 75 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @chrischall/concur-mcp 还在维护吗？

最新版本 0\.5\.0 发布于 2026/11/07（2 天前）；至今共发布 13 个版本，其中过去 12 个月发布了 13 个；首次发布于 2026/10/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

