Skip to main content
Glama
RitwijParmar

O2C Deployment Workbench MCP Server

by RitwijParmar

O2C Deployment Workbench

一套完整的、显然是合成的 ERP 应收账款客户实施:源数据接入、标准数据、现金核销、扣减、催收、控制、KPI 基准、MCP 访问、多智能体异常审查、可观测性、UAT、切换及 hypercare。

此仓库中的所有 SAP S/4HANA 风格、Oracle Fusion 风格和 NetSuite 风格文件均为生成的模拟文件。它们不是真实的导出文件或实时集成。KPI 变动是受控的合成数据实施基准,而非客户影响。

为什么这是一个实施项目

该工作台从客户配置和三种不兼容的源数据布局开始,而不是一张干净的分析表。它应用验证门禁、保留付款余款、路由异常、确定催收优先级、显示未达成的目标,并生成部署团队从发现到上线所需的工件。

该架构刻意保持财务匹配的确定性和可审计性。智能体处理判断密集型工作:异常调查、数据质量诊断、催收规划和上线监控。它们不能向 ERP 过账、不能退款、不能核销债务,也不能更改主数据。

flowchart LR
    A["Three simulated ERP export sets"] --> B["Configuration-driven adapters"]
    B --> C["Seven canonical receivables tables"]
    C --> D["Validation control gate"]
    D --> E["Deterministic cash matching"]
    E --> F["Exception and collections queues"]
    F --> G["MCP evidence tools"]
    G --> H["Supervisor agent"]
    H --> I["Cash Application Agent"]
    H --> J["Data Quality Agent"]
    H --> K["Collections Agent"]
    I --> L["Human approval gate"]
    J --> L
    K --> L
    E --> M["Controlled KPI benchmark"]
    M --> N["Go Live Monitor Agent"]
    O["OpenTelemetry traces"] -.-> B
    O -.-> E
    O -.-> H
    O -.-> N

Related MCP server: finance-engines-mcp

运行

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
o2c-workbench --project-root .
streamlit run app.py

可重现的 seed-42 运行会创建 1,908 条标准记录,将 18 次故意的重复银行交易检测为警告,并且不留下任何验证错误。打开静态仪表板或使用 Streamlit 应用。

MCP 服务器

该服务器使用当前的 MCP Python SDK,并公开结构化的工具、资源和提示。本地客户端应使用 stdio;已部署的客户端可使用 Streamable HTTP。

o2c-mcp --transport stdio
o2c-mcp --transport streamable-http --port 8000

工具:get_implementation_summary、investigate_payment、get_collection_priority 和 run_controlled_benchmark。资源:o2c://configuration、o2c://benchmark 和 o2c://observability。

多智能体路径

默认路径是离线和确定性的,因此审查者无需账户或 API 密钥即可复现交接和控制。它生成 output/agent_decisions.csv、output/agent_control_summary.json 和 OpenTelemetry 跨度。

可选的基于模型的审查使用 OpenAI Agents SDK,包含专家交接和结构化输出:

pip install -e ".[ai]"
export OPENAI_API_KEY="..."
o2c-agent-review SAP-P001-09 --project-root .

模型路径有意不作为基准 KPI 的必要条件。它可以提出建议,但不能执行受控的财务操作。

仓库结构

  • config/ — 实施配置、映射、容差、权重、路由、控制、KPI 目标、智能体限制。

  • data/raw/ — 生成的、带有明显标签的模拟 ERP 导出数据。

  • data/canonical/ — 标准化的客户、发票、付款、汇款、扣减、承诺和活动。

  • src/o2c_workbench/ — 适配器、匹配、催收、控制、智能体、MCP、可观测性、KPI 逻辑。

  • output/ — 基准证据、队列、追踪和仪表板。

  • docs/ — 流程设计、映射、控制、RTM、28 个 UAT 用例、切换、监控、培训和研究基础。

  • deliverables/ — 实施工作簿。

  • demo/ — 五分钟带讲解的实施演示和脚本。

Seed-42 基准

KPI

当前状态

配置的未来状态

变动

自动匹配率

10.0%

80.7%

+70.7 pp

人工审核率

90.3%

21.9%

-68.5 pp

未分配现金

$2,192,667

$550,209

-$1,642,459

DSO

115.9 天

51.6 天

-64.3 天

CEI

8.7%

75.7%

+67.0 pp

逾期应收账款

69.5%

44.9%

-24.6 pp

处理时间

67.7 小时

13.0 小时

-54.7 小时

四个延伸目标仍未达成,因此监控器建议 有条件放行,而非庆祝胜利。这是刻意的实施现实感:只有在人工审批控制和对未分配现金及剩余超额付款的专项 hypercare 到位后才能继续。

验证

pytest -q

参见研究基础,了解为付款案例、MCP 传输选择、智能体交接和遥测约定提供依据的主要来源。

Available Tools

4 tools
get_collection_priorityA

Return the configured collection score evidence for one synthetic invoice.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates it returns read-only evidence, so side effects are not impliedasi. No annotations are present, but as a getter, the behavior is somewhat inferable. It does not specify errors, auth, or configuration dependencies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single precise sentence with no filler. It conveys the operation, target, and scope efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple getter and the output schema exists, but it lacks usage guidance, alternatives, and explanation of what 'configured collection score evidence' actually contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though the parameter schema is only a raw string, the description ties the operation to 'one synthetic invoice', which effectively identifies the invoice_id parameter and explains its scope.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the operation ('Return'), the resource ('configured collection score evidence'), and the scope ('for one synthetic invoice'). This distinguishes it from the sibling tools, which target implementation summaries and payment investigation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for one synthetic invoice' gives a clear invocation context. However, it does not explicitly describe when to choose this tool over the sibling tools or mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_implementation_summaryA

Return controlled benchmark KPIs, data-quality status, disclaimers, and agent readiness.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the behavioral burden. It states that the tool returns a summary, implying a read-only operation, and lists the types of content returned. However, it does not disclose prerequisites (e.g., whether a benchmark must already exist), data freshness, or any side effects, which leaves some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence conveys the tool's purpose with no filler. Every phrase earns its place by naming a distinct output category.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there are no parameters and an output schema exists, the description is largely complete. It lists the key output categories and indicates the tool's role as a summary provider. It could be slightly stronger by explicitly linking it to run_controlled_benchmark, but that is not essential for calling it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is trivially 100%. The description correctly avoids inventing parameter semantics and instead focuses on what the output contains, which is appropriate for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and identifies a precise set of resources: controlled benchmark KPIs, data-quality status, disclaimers, and agent readiness. This clearly differentiates it from siblings like run_controlled_benchmark, which is the execution counterpart rather than the summary retrieval tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to call this tool versus its siblings. There is no explicit statement such as 'use after running a controlled benchmark' or 'use instead of investigate_payment'; the intended usage must be inferred from the name and resource list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

investigate_paymentC

Return matching evidence and exception routing for one synthetic payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It says the tool returns evidence and exception routing, but it does not disclose whether this is a read-only operation, whether it requires special permissions, or what side effects (if any) exist. The presence of an output schema mitigates some ambiguity, but the description alone is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple one-parameter tool, though it could have added a brief usage note without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter and an output schema, so the description does not need to explain return values. However, it lacks any context about when to use this tool, what 'exception routing' means, or how it relates to the sibling tools. For a tool with no annotations, this is a moderate gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It names the single parameter implicitly ('one synthetic payment' maps to payment_id) but does not explain the expected format, constraints, or how the parameter affects the result. With only one parameter, the gap is small, but the description adds minimal semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and resource ('matching evidence and exception routing for one synthetic payment'), which clearly identifies the tool's function. It does not explicitly distinguish it from siblings, but the resource is specific enough that an agent can infer its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_implementation_summary or run_controlled_benchmark. The description implies it is for investigating a single synthetic payment, but it does not state exclusions or conditions that would route an agent to a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_controlled_benchmarkA

Regenerate synthetic source exports and controlled benchmark outputs; never connects to a genuine ERP.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a key behavioral trait: it never connects to a genuine ERP, which is valuable context beyond the schema. However, with no annotations provided, the description carries the full burden and doesn't disclose other behaviors like whether it overwrites existing outputs, how long it takes, or what the output schema contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and resource, and the critical safety qualifier ('never connects to a genuine ERP') is included. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and an output schema, the description is mostly adequate. However, it doesn't explain what 'controlled benchmark outputs' means in practice, what the output schema contains, or any side effects (e.g., overwriting files). The sibling tools suggest this is part of a larger workflow, but the description doesn't position it within that workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions 'seed' implicitly through 'regenerate' (deterministic regeneration), but doesn't explain the seed parameter's role or how it affects outputs. The single parameter is simple, so the gap is minor, but the description adds no explicit parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('regenerate') and resource ('synthetic source exports and controlled benchmark outputs'), and distinguishes itself from a genuine ERP connection. It is clear what the tool does, though it doesn't explicitly name sibling tools for differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for synthetic/controlled benchmark scenarios and explicitly notes it never connects to a genuine ERP, which suggests when it should be used. However, it doesn't explicitly state when to use it versus alternatives like get_implementation_summary or investigate_payment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedget_collection_priority
    • First observedget_implementation_summary
    • First observedinvestigate_payment
    • First observedrun_controlled_benchmark

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a clearly distinct function: summary/KPIs, payment investigation, collection priority, and benchmark regeneration. There is no meaningful overlap or ambiguity between them.

Naming Consistency4/5

All names use lowercase snake_case and follow a verb_object pattern, but the verb set is mixed (get, investigate, run). This is still predictable and readable, with only minor stylistic variance.

Tool Count5/5

Four tools is a tight, well-scoped surface for a synthetic O2C benchmark workbench. Each tool serves a distinct purpose without unnecessary bloat or missing core functionality.

Completeness4/5

The tool set covers the main workflows: viewing benchmark status, investigating a payment, checking collection priority, and regenerating outputs. A minor gap is the lack of explicit discovery tools for available synthetic payment or invoice identifiers, but this may be addressed through the summary.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language supply-chain analysis over synthetic datasets through governed SQL/Python tools, providing supplier scorecards, forecast accuracy, risk detection, landed-cost comparisons, capacity planning, and quality trend insights without the LLM performing quantitative calculations.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Provides AI agents with deterministic, offline finance tools for commodity margin analysis, loan covenant compliance, invoice auditing, AP exception classification, and five-day close readiness.
    14
    1 npm
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to generate synthetic ERP datasets, download the generated packages, and read labelled fraud answer keys using plain language.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to query and reconcile electronic invoicing cases across multiple editors using six standardized MCP tools, with synthetic data and conformance checks.
    MIT