企业级MCP服务器设计

展示如何设计模型上下文协议(MCP)服务器,以最大化AI代理生产力,同时保持后端系统的完整性、性能、安全性和可扩展性。

  • by workato-devs
  • TypeScript
  • 本地部署
  • 15 星标
  • 更新于
在 GitHub 查看 workato-devs/dewy-resort

使用说明

德威度假酒店-申请示例

面向LLM生产力的企业MCP设计模式

演示如何设计模型上下文协议(MCP)服务器,以最大限度地提高AI代理的生产力,同时保持后端系统的完整性、性能、安全性和规模。


这表明了什么

此示例应用程序展示了 企业级MCP架构模式 在将LLM与后端系统集成时,解决了现实世界的挑战:

问题

大多数MCP实现都允许AI代理直接访问数据库或公开原始API,从而导致:

  • ❌ 表现不佳 -代理为简单任务调用10多次API
  • ❌ 数据完整性问题 -代理创建无效的状态转换
  • ❌ 安全漏洞 -工具访问权限过于宽松
  • ❌ 可扩展性瓶颈 -无缓存、重试或速率限制
  • ❌ 用户体验不佳 -响应缓慢,故障频繁

解决方案:组合式MCP架构

该项目展示了 双层刀具设计 平衡LLM灵活性和企业需求:

🎯 编排器(高级工具) -针对常见场景进行了优化

  • 对业务规则和先决条件进行编码
  • 在3秒内执行多步骤工作流
  • 以正确的依赖顺序处理状态转换
  • 为80%的用例提供出色的用户体验

🧩 原子技能(构建模块) -适用于边缘情况和灵活性

  • 单一责任运营
  • 运行时可由AI代理组合
  • 允许处理意外情况
  • 保持适当的授权边界

关键结果: 人工智能代理为常见任务获得快速、经过验证的工作流程,并具有智能处理边缘情况的灵活性。


为何这很重要


企业MCP架构-基于Persona的服务器,具有编排器和原子技能

真实世界示例:客人入住


签入编排器:<3秒,6个API调用,验证先决条件,确保正确的状态转换

传统方法(具有原始Salesforce访问权限的法学硕士):

Agent makes 15+ separate API calls:
1. Search for guest → 400ms
2. Validate guest exists → 200ms
3. Search for booking → 400ms
4. Check booking status → 200ms
5. Validate room number → 200ms
6. Search for room → 400ms
7. Check room status → 200ms
8. Update booking status → 300ms
9. Update room status → 300ms
10. Update opportunity → 300ms
... error handling, retries ...

Total time: 8-12 seconds
Failure rate: 15-20% (race conditions, validation errors)

企业MCP方法(编排器):

Agent calls one orchestrator:
POST /check-in-guest {guest_email, check_in_date}

Orchestrator internally:
- Validates prerequisites in parallel (3 reads)
- Executes state transitions in order (3 updates)
- Handles errors gracefully
- Ensures data integrity

Total time: < 3 seconds
Failure rate: < 2% (only fails on legitimate business rule violations)

结果: 速度提高3-4x,错误减少90%,用户体验更好。

使用原子技能处理边缘案例

脚本: 客人说“我需要101号房间的毛巾”,但系统中不存在联系

仅限编排者的方法:

  • ❌ 失败,出现“未找到联系人”错误
  • ❌ 代理无法继续
  • ❌ 用户体验不佳

组合方法(编排器+原子技能):

  • ✅ 代理检测到缺少联系人
  • ✅ 代理人组成: create_contact → upsert_case
  • ✅ 使用适当的审批权限处理边缘案例
  • ✅ 出色的用户体验

关键见解: 给代理商 两者 优化的工作流程和灵活性的构建块。


架构原则

1.零直接系统集成

所有数据移动都通过Workato集成中心进行

❌ DON'T: Hotel App → Salesforce (tight coupling)
❌ DON'T: Hotel App → Stripe (security risk)
❌ DON'T: LLM → Salesforce (no validation)

✅ DO: Hotel App → Workato → Salesforce (orchestrated)
✅ DO: LLM Agent → MCP Server → Workato → Backends (validated, secure)

优点:

  • 演出:Workato处理缓存、连接池、重试
  • 安全:具有集中身份验证的单一集成层
  • 可维护性:后端更改不会破坏前端
  • 可观测性:所有集成流量集中在一个地方

2.基于Persona的MCP服务器

按用户角色和“要完成的工作”组织工具

Guest MCP Server:
├── Orchestrators: check_in_guest, checkout_guest, service_request
└── Atomic Skills: search_contact, search_booking, upsert_case

Staff MCP Server:
├── Orchestrators: maintenance_request, assign_room, update_case_status
└── Atomic Skills: create_contact, search_room, update_room_status

优点:

  • 安全:用户只能访问适合其角色的工具
  • 演出:较小的工具上下文=更好的LLM推理
  • 可用性:每个角色的相关工具
  • 规模:独立服务器可以单独优化

3.识别和状态验证

每个编排器都会验证先决条件并检查重复操作

示例:签入编排器验证:

  • ✅ 访客已存在(Contact.id)
  • ✅ 已预订(Booking.status=已预订)
  • ✅ 房间可用(Hotel_Room.status=空置)
  • ✅ 此预订没有现有的入住登记(幂等性)

优点:

  • 数据完整性:没有无效的状态转换
  • 可靠性:重试安全操作
  • 错误处理:清晰、可操作的错误消息
  • 审计跟踪:记录所有验证

4.性能优化

编排器最大限度地减少API调用和延迟

演示的技术:

  • 并行执行:读取操作并发执行
  • 依赖关系排序:更新按正确顺序执行
  • 批量操作:尽可能在单个事务中进行多次更新
  • 缓存:Workato缓存连接池和引用数据
  • 断路器:在下游停机时快速失效

结果: 典型的编排器在<3秒内完成4-6次API调用。


包含内容

MCP服务器实现(Workato)

作为MCP工具组织的33个食谱:

12名编排员 (高级工作流):

  • check_in_guest -多对象状态转换(<3s,6个API调用)
  • checkout_guest -付款处理+房间释放
  • service_request -客户服务案例创建
  • maintenance_request -员工维护工作流程
  • create_booking_orchestrator -完整预订并查看空房情况
  • 用于案例管理、搜索工作流的额外协调器

21原子技能 (构建模块):

  • Salesforce(15):搜索_联系、搜索_预订、搜索_房间、创建_联系、更新_预订_状态、更新_案例等。
  • 条纹(6):create_customer、create_payment_int、confirm_payment、retrieve_status、create_refund

酒店管理应用程序(Next.js)

  • 访客门户:服务请求、房间控制、计费、人工智能助理
  • 经理门户:仪表板、维护管理、房间操作
  • MCP集成:演示如何从应用程序代码调用企业MCP服务器
  • 本地数据库:SQLite用于特定于应用程序的数据(会话、UI状态)

后端系统

  • 赛富时:记录系统(预订、房间、案例、联系人、机会)
  • 条纹:付款处理(可选)
  • 特威里奥:短信通知(可选)

快速开始

单线安装(推荐)

Mac/Linux:

curl -fsSL https://raw.githubusercontent.com/workato-devs/dewy-resort/main/bootstrap.sh | bash

Windows(PowerShell):

powershell -ExecutionPolicy Bypass -Command "Invoke-Expression (curl https://raw.githubusercontent.com/workato-devs/dewy-resort/main/bootstrap.ps1 -UseBasicParsing)"

引导脚本会自动安装所有依赖项(Node.js v20、Git)并设置项目。

然后切换到项目目录:

cd dewy-resort

手动设置

先决条件:

1.初始化项目

# Copy env template
cp .env.example app/.env

# Install app dependencies and initialize local database
cd app
npm install
npm run db:setup
cd ..

2.部署Salesforce元数据⭐

Salesforce是记录系统——先部署它。

# Verify CLIs are installed
make setup

# Authenticate to Salesforce (opens browser)
sf org login web --alias myDevOrg

# Deploy metadata and seed data
make sf-deploy org=myDevOrg

📚 请参阅: Salesforce设置

3.部署Workato MCP服务器⭐

Workato实现了企业MCP架构。

# Authenticate with your Workato workspace
make workato-login

# Initialize Workato project and push recipes
make workato-init
make push

接下来,在Workato UI中配置连接:

  1. 首选 项目→ 工作区连接 并连接您的 赛富时 组织
  2. 可选连接 条纹 (沙盒模式, sk_test_ 按键)
# Start all recipes
make start-recipes

⚠️ 重要: 4个具有动态SOQL查询的配方在开始之前可能需要手动链接其Salesforce连接。有关步骤,请参阅详细指南。

📚 请参阅: Workato设置

4.配置API和MCP

设置API集合、终结点和MCP服务器:

# Create API collections, endpoints, and API client (writes credentials to app/.env)
make setup-api

# Enable all API endpoints
make enable-api-endpoints

# Create MCP servers and write URLs/tokens to app/.env
make setup-mcp

5.启动应用程序

app/scripts/dev-tools/server.sh start

打开 http://localhost:3000


学习路径

研讨会参与者

目标: 了解企业MCP设计模式

  1. 从这里开始: 查看中的架构图 app/docs/architecture/
  2. 探索: 比较编排器与原子技能模式
  3. 观察: 签入编排器流程(先决条件、状态转换、错误处理)
  4. 实验: 尝试边缘情况(联系人丢失、双重入住、无效房间)
  5. 反映: 为什么管弦乐器更快?为什么原子技能很重要?

面向构建MCP服务器的开发人员

目标: 将这些模式应用于您自己的项目

  1. 架构: 学习 系统架构.png
  2. 实施: 在中查看Workato食谱 workato/ 目录
  3. 模式: 阅读 WORKATO_SETUP.md 详细的模式解释
  4. 适应: 考虑如何将编排器+原子技能模式应用于您的领域

关键要点

✅ 常见场景的编排器 -快速、经过验证、出色的用户体验 ✅ 原子技能带来灵活性 -智能处理边缘案例 ✅ 零直接集成 -全部通过中央枢纽 ✅ 基于Persona的服务器 -安全性、性能、可用性 ✅ 识别和验证 -数据完整性、可靠性 ✅ 性能优化 -并行读取,依赖关系排序


其他资源

设置指南

可选功能

技术细节


项目结构

dewy-resort/
├── workato/                      # ⭐ MCP SERVER IMPLEMENTATION
│   ├── recipes/
│   │   ├── atomic-salesforce-recipes/  # 15 atomic skills
│   │   ├── atomic-stripe-recipes/      # 6 payment atomic skills
│   │   ├── orchestrator-recipes/       # 13 high-level orchestrators
│   │   ├── home-assistant/             # Home Assistant integration
│   │   ├── sf-api-collection/          # API Collection definitions
│   │   └── Workspace Connections/      # Connection configs
├── app/                          # Next.js application
│   ├── src/                      # Application source
│   ├── docs/
│   │   └── architecture/         # ⭐ ARCHITECTURE DIAGRAMS
│   │       ├── system-architecture.png
│   │       ├── guest-checkin-flow.png
│   │       ├── guest-checkout-flow.png
│   │       ├── guest-service-request-flow.png
│   │       └── maintenance-request-flow.png
│   └── public/                   # Static assets
├── vendor/
│   ├── workato/                  # Workato docs & scripts
│   │   ├── docs/
│   │   │   └── WORKATO_SETUP.md
│   │   └── scripts/
│   ├── salesforce/               # Salesforce metadata & deployment
│   │   ├── force-app/            # Custom objects, fields, app
│   │   ├── data/                 # Seed data
│   │   ├── docs/
│   │   │   └── SALESFORCE_SETUP.md
│   │   └── scripts/
│   │       └── deploy.sh
│   ├── aws/                      # CloudFormation templates
│   └── okta/                     # Okta auth config

CLI命令

# Setup
make setup                        # Verify CLI installations
make workato-login                # Authenticate wk CLI with API token

# Workato (MCP Server) — requires wk CLI (brew install workato-devs/tap/wk)
make workato-init                 # Initialize wk project & pull recipes
make validate                     # Lint all recipes
make push                         # Push recipes to workspace
make pull                         # Pull recipes from workspace
make start-recipes                # Start all recipes
make stop-recipes                 # Stop all recipes
make setup-api                    # Create API collections, endpoints & client
make enable-api-endpoints         # Enable API endpoints
make setup-mcp                    # Create MCP servers & write config to app/.env

# Salesforce (Backend)
make sf-deploy org=<alias>        # Deploy metadata and seed data

# Diagnostics
make status                       # Check all CLI status
make doctor                       # Verify CLI installations

模拟模式(仅限开发)

对于没有后端设置的前端开发:

# In .env
WORKATO_MOCK_MODE=true

# Restart server
npm run dev

⚠️ 注: 模拟模式模拟MCP响应。仅用于前端工作,不用于学习MCP架构模式。


可选功能

Cognito身份验证(车间便利性)

对于参与者没有自己身份的研讨会:

AUTH_PROVIDER=cognito
# Deploy Cognito User Pool
cd aws/cloudformation
./deploy.sh dev http://localhost:3000/api/auth/cognito/callback http://localhost:3000 dewy-hotel

Bedrock AI聊天(可选)

人工智能聊天助手(演示LLM+MCP集成):

# Deploy Identity Pool
cd aws/cloudformation
./deploy-identity-pool.sh dev <user-pool-id> <client-id>

# Configure in .env
COGNITO_IDENTITY_POOL_ID=your_pool_id

技术栈

  • MCP服务器:Workato(33个食谱,以编排者和原子技能的形式组织)
  • 后端系统:Salesforce(客户关系管理)、Stripe(支付)、Twilio(短信)
  • 应用:Next.js 14、React、TypeScript、顺风CSS
  • 数据库:SQLite(仅限本地应用程序数据)
  • 认证:Amazon Cognito(可选)或模拟模式
  • 人工智能:Amazon Bedrock(可选聊天助手)

为什么选择Workato?

此示例使用 计算机 作为MCP服务器实现,但架构模式适用于任何集成平台:

✅ 可视化配方生成器 -易于理解的工作流程 ✅ 内置连接器 -Salesforce、Stripe、Twilio开箱即用 ✅ API集合 -本机REST API公开 ✅ 企业特性 -错误处理、重试、日志记录、监控 ✅ 车间友好 -视觉表现有助于学习

这些模式适用于: 自定义API、无服务器功能、其他编排系统等。


许可证

麻省理工学院


问题?

这是一个 企业MCP设计模式教学示例应用目标是演示如何构建MCP服务器,以最大限度地提高LLM生产率,同时保持后端完整性、性能、安全性和规模。

重点领域:

  • 为什么管弦乐器对性能和用户体验很重要
  • 何时使用原子技能与管弦乐器
  • 如何设计基于角色的MCP服务器
  • 幂等性和状态验证模式
  • 零直接系统集成架构

有关实现的详细信息,请参阅中的设置指南 vendor/workato/docs/ 和 vendor/salesforce/docs/.