Rathbones Reconciliation MCP PoC

Rathbones Reconciliation MCP PoC

Emulates Orbus Infinity and ServiceNow CMDB as two MCP endpoints on a shared synthetic dataset to enable a reconciliation agent to compare architectural and operational data.

Category
访问服务器

README

Rathbones Reconciliation MCP PoC (single-server)

A single MCP server exposing 16 tools — 8 emulating Orbus Infinity and 8 emulating ServiceNow CMDB — backed by the same synthetic dataset with intentionally baked-in reconciliation mismatches.

⚠️ Synthetic data only. All object IDs, names, owners and attributes are invented to illustrate reconciliation patterns. Do not load real Rathbones data.


Why one server instead of two?

The original design used two FastMCP instances mounted under /orbus/mcp and /servicenow/mcp on a single Starlette app. That ran into MCP SDK 1.28's DNS rebinding protection (TrustedHostMiddleware) which only allows localhost by default and could not be reliably disabled on a hosted domain.

Collapsing into a single server with prefixed tool names sidesteps the issue entirely while keeping the same architectural clarity for the agent. The orbus_* / snow_* prefix tells the LLM orchestrator which source it is hitting, so the trust hierarchy and routing logic are unchanged.


Tool catalogue (16 total)

Orbus Infinity tools (architectural EA repository)

Tool Purpose
orbus_list_object_types List all object types in the metamodel
orbus_list_objects List objects with optional filters
orbus_get_object Fetch full object by ID
orbus_search_objects Search by name or alias substring
orbus_get_relationships Get inbound/outbound relationships
orbus_get_attribute_schema Get attribute keys for an object type
orbus_get_linked_documents Return HLD/reference document URLs
orbus_find_servicenow_match Cross-lookup: find SN CI for this Orbus object

ServiceNow CMDB tools (operational source of truth)

Tool Purpose
snow_list_classes List CMDB classes available
snow_query_cis Query CIs with filters
snow_get_ci Fetch CI by sys_id with owner resolved
snow_get_ci_relationships Get parent/child relationships
snow_get_user Fetch sys_user by sys_id
snow_search_business_apps Search business apps (incl. retired)
snow_get_class_schema Return attribute list for a class
snow_find_orbus_match Cross-lookup: find Orbus object for this CI

The 10 reconciliation findings baked in

See data/reconciliation_truth.py for the full answer key.

# Finding Type Orbus ServiceNow
F1 MyRathbones Portal — clean match perfect_match orb-app-001 sn-ci-001
F2 ExBO vs Eximius Backoffice name_mismatch orb-app-002 sn-ci-002
F3 3 Orbus components vs 1 SN business app classification_mismatch orb-comp-003a/b/c sn-ci-003
F4 CAMMS ERM approved, not yet in CMDB missing_in_servicenow orb-app-005
F5 Snowflake EDP — owner conflict attribute_conflict orb-app-006 sn-ci-006
F6 Citrix VDI — Live in Orbus, Retired in SN lifecycle_drift orb-app-007 sn-ci-007
F7 Proactis vs Proactis P2P — no ID link ambiguous_match orb-app-009 sn-ci-009
F8 Power BI — two SN candidates ambiguous_name orb-app-010 sn-ci-010a, sn-ci-010b
F9 ExBO→Snowflake feed missing in CMDB relationship_asymmetry orb-int-100
F10 Legacy Citrix Reporting only in SN missing_in_orbus sn-ci-004

Quick start

1. Push to your GitHub repo

git init
git add .
git commit -m "Single-server reconciliation MCP"
git push -u origin main

2. Deploy on Render

  • Web Service → connect repo → Plan: Free
  • Build command: pip install -r requirements.txt
  • Start command: python server.py
  • Set environment variable PYTHON_VERSION = 3.11.0 (Render's runtime.txt detection is unreliable; the env var pins it definitively).

3. Sanity check

After deploy completes, hit https://<service>.onrender.com/mcp in a browser:

{"jsonrpc":"2.0","id":"server-error","error":{"code":-32600,
  "message":"Not Acceptable: Client must accept text/event-stream"}}

That confirms the MCP server is alive.

4. Connect to Copilot Studio

One MCP connection — all 16 tools.

Field Value
Server name Rathbones Reconciliation
Server description Reconciliation MCP exposing Orbus Infinity (orbus_* tools) and ServiceNow CMDB (snow_* tools) emulators backed by a synthetic Rathbones-shaped dataset with 10 intentional mismatches.
Server URL https://<service>.onrender.com/mcp
Auth None

Suggested agent instructions

Paste this into the Copilot Studio agent's Instructions field:

You are the Current State Architecture Reconciliation Agent for Rathbones Group.

You compare two sources via 16 MCP tools:
- Orbus Infinity (architectural EA repository) — call tools prefixed orbus_*
- ServiceNow CMDB (operational source of truth) — call tools prefixed snow_*

Trust hierarchy:
- For lifecycle status, install_status, operational ownership: trust ServiceNow.
- For architectural relationships, capabilities, processes, HLD links: trust Orbus.
- For attribute conflicts: surface BOTH values and flag for SME validation, do not guess a winner.

Reconciliation workflow:
1. Use orbus_search_objects or snow_query_cis to locate candidate records.
2. Use orbus_find_servicenow_match or snow_find_orbus_match to discover the cross-source link.
3. If status is "ambiguous" or "unmatched", clearly say so and list candidates with confidence scores.
4. Use orbus_get_object and snow_get_ci to pull full attributes from each side.
5. Classify mismatches: name, classification, attribute, lifecycle, relationship, missing-source.
6. Produce a structured report with severity (high/medium/low) and recommended action.

Always cite the tool calls. Never invent IDs, names, or attributes.

⚠️ This agent operates on SYNTHETIC data for prototyping. Do not present results as factual Rathbones architecture information.

Project structure

rathbones-reconciliation-mcp-single/
├── data/
│   ├── orbus_metamodel.py         # 12 object types + attribute schemas
│   ├── orbus_objects.py           # 14 synthetic Orbus objects
│   ├── orbus_relationships.py     # 14 relationships
│   ├── snow_schemas.py            # CMDB class definitions
│   ├── snow_users.py              # 6 sys_user records
│   ├── snow_cis.py                # 11 CIs paired with Orbus objects
│   ├── snow_rel_ci.py             # 8 cmdb_rel_ci entries (one asymmetry)
│   └── reconciliation_truth.py    # ANSWER KEY: 10 expected findings
├── tools/
│   ├── orbus_tools.py             # Pure Orbus query functions
│   ├── snow_tools.py              # Pure ServiceNow query functions
│   └── cross_lookup.py            # Bridge tool — Orbus <-> SN
├── server.py                      # Single FastMCP server with 16 prefixed tools
├── requirements.txt               # mcp>=1.12.0
├── runtime.txt                    # python-3.11.0
└── README.md

Upgrade path to real data

When real Orbus / ServiceNow access is wired up, only the files in data/ need to change. Tool function signatures and the server.py decorators stay identical so the consuming agent sees no difference.

  • Orbus: replace ORBUS_OBJECTS / ORBUS_RELATIONSHIPS with httpx GETs against https://rathbones-api.iserver365.com/odata/Objects and /odata/Relationships (OAuth2 implicit flow).
  • ServiceNow: replace SN_CIS / SN_REL_CI / SN_USERS with calls to https://rathbones.service-now.com/api/now/table/cmdb_ci_business_app, cmdb_rel_ci, sys_user (basic auth via service account).

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选