多协议服务器集成平台

MCP Servers Hub是一个集成多种企业系统(如Workday、ServiceNow、Salesforce和Jira)的Python项目,通过统一的Model Context Protocol (MCP)服务器提供任务管理、审批流程和数据分析功能,适用于企业资源管理和自动化工作流场景。

  • by scadam
  • HTML
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 scadam/MCPServers

使用说明

MCP服务器中心

此存储库将多个模型上下文协议(MCP)服务器打包在一个单独的存储库中 Python项目,并将它们部署到一个具有基于路径的路由的Azure容器应用程序中。 每台服务器都安装在自己的路径上:

服务器 路径 描述
TaskServer /taskserver/mcp 跨所有系统的统一任务/审批聚合
工作日 /workday/mcp 员工简介、休假、薪酬、学习
立即服务 /servicenow/mcp 事件、批准、服务目录
Salesforce /salesforce/mcp 客户关系管理、合规案例、管道管理
吉拉 /jira/mcp 问题、项目、董事会

A共享 /healthz 端点返回 200 OK 对于所有活性探针。


目录


服务器和工具

TaskServer(6个工具)

整合任务、审批和学习任务的统一编排器 Workday、ServiceNow、Salesforce和Jira集成到一个带有随机数门控的单一视图中 批准决定。

工具 类型 描述
list_items read 汇总所有连接系统中的任务/批准/学习
prepare_approval_review read 获取审批详细信息并发布一次性随机数以供审核
execute_approval_decision write 使用随机数验证批准或拒绝
get_item_detail read 任务或案例的完整细节、注释和转换
add_item_comment write 内联添加评论(Salesforce/Jira)
execute_item_transition write 内联更新状态

工作日(12个工具)

人力资源和员工管理——员工档案、休假申请、工资单、学习、, 以及企业名称的变更。支持匿名模式进行本地测试。

工具 类型 描述
get_worker read 当前员工资料
get_leave_balances read 假期余额、符合条件的缺勤类型和预订的休假时间
get_direct_reports read 列出直接下属
get_inbox_tasks read 收件箱任务(批准和不批准)
get_learning_assignments 阅读 所需学习作业
get_pay_slips read 最近的工资单
get_time_off_entries read 休假条目
prepare_request_leave 阅读 准备请假申请表
book_leave 写 提交休假申请
prepare_change_business_title 阅读 准备企业名称变更表
change_business_title write 提交标题更改
search_learning_content 阅读 按技能或主题搜索学习目录

ServiceNow(25工具)

IT服务管理——事件生命周期、任务和审批管理,以及完整的 支持购物车的服务目录订购。

事件管理

工具 类型 描述
list_incidents read 按编号、文本、类别、状态、优先级、受让人搜索
show_create_incident_form read 填写创建事件表单
create_incident write 创建事件
show_update_incident_form read 加载更新表单的当前值
get_incident 阅读 完整的日志事件(评论和工作笔记)
update_incident write 更新字段,添加注释或工作笔记

任务与审批管理

工具 类型 描述
list_tasks read 任务表中的活动任务
list_approvals read 待批准
get_approval 阅读 完整的审批细节和源文档
approve_reject write 批准或拒绝批准

服务目录

工具 类型 描述
list_catalog_items read 使用筛选器按名称/描述搜索目录项
list_catalog_categories read 浏览目录类别
get_catalog_item read 包含动态订单变量的完整项目
order_catalog_item write 提交一次性订单
add_to_cart write 将商品添加到购物车
get_cart read 查看购物车内容和价格
checkout_cart write 提交购物车订单
delete_cart write 清空购物车
remove_cart_item write 从购物车中删除一行
list_my_requests read 用户的服务请求和状态
search_reference_values read 查找引用字段值(例如cmdb_ci、sys_user)

Salesforce(20个工具)

客户关系管理和合规案例管理——客户、联系人、机会、渠道 仪表板、14种合规案例类型和审批工作流。

任务管理

工具 类型 描述
list_tasks read 按状态、优先级、所有者筛选
get_task read 完整任务详细信息
update_task write 更新状态、优先级、描述、主题

审批

工具 类型 描述
list_approvals read 待审批工作项
approve_reject wrote 批准或拒绝

合规案例

工具 类型 描述
list_cases read 按状态、优先级、合规类型、搜索文本筛选
get_case 阅读 完整案例及评论
show_compliance_case_form read 创建表单预填充
create_case write 创建合规案例(支持14种类型)
update_case write 更新字段并添加注释

客户关系管理

工具 类型 描述
list_accounts read 按搜索、行业、所有者筛选
list_contacts read 适用于帐户或自由文本搜索
list_opportunities read 带阶段、所有者、帐户筛选器的管道视图
get_account_360 read 帐户的联系人、机会、事件、任务和案例
get_pipeline_dashboard 阅读 漏斗分析的阶段汇总和机会列表
show_create_opportunity_form 阅读 填写机会表
create_opportunity 写 创造机会
create_opportunity_task write 将任务链接到商机
show_create_event_form read 事件表单预填
create_event 编写 创建活动(会议)

Jira(12工具)

问题跟踪和项目管理——JQL搜索、问题CRUD、转换、, 注释(自动转换为Atlassian文档格式)和项目创建。

工具 类型 描述
list_issues read JQL查询或按项目、状态、受让人筛选
get_issue 阅读 完整的问题,包括评论和可用的转换
show_create_issue_form read 创建问题表单
create_issue 写 在项目中创建(任务、bug、故事、史诗)
add_comment 写 添加评论
transition_issue write 移动到新状态
update_issue write 更新字段并添加注释
show_create_project_form read 项目表格
create_project 编写 创建软件或商业项目

1.准备一台清洁显影机

  • Python 3.11 和pip(需要 pyproject.toml).证实 python --version.
  • Git 用于克隆存储库。
  • Docker 桌面版 用于本地容器构建和部署。Azure容器注册表 (ACR)远程构建可以在Docker不可用时使用。
  • Azure命令行界面 使用容器应用程序扩展:
    winget install -e --id Microsoft.AzureCLI
    az extension add --name containerapp
    

安装先决条件后:

  1. 克隆项目并进入工作区:

    git clone <repo-url>
    Set-Location MCPServers\mcp_servers
    
  2. 创建并激活虚拟环境,然后安装依赖项:

    python -m venv .venv
    .venv\Scripts\Activate.ps1
    pip install -e .[dev]
    
  3. 通过复制示例环境文件来提供本地机密:

    Copy-Item env\workday.example.env  env\workday.local.env
    Copy-Item env\servicenow.example.env env\servicenow.local.env
    Copy-Item env\salesforce.example.env env\salesforce.local.env
    Copy-Item env\jira.example.env env\jira.local.env
    

    用租户特定的值更新每个文件(没有提交到源代码管理)。

    工作日:

    变量 目的
    WORKDAY_CLIENT_ID 工作日OAuth客户端ID
    WORKDAY_CLIENT_SECRET Workday OAuth客户端密钥
    WORKDAY_REFRESH_TOKEN Workday OAuth刷新令牌
    WORKDAY_CLIENT_CREDENTIALS 可选组合凭据blob
    WORKDAY_TOKEN_URL Workday OAuth令牌端点
    WORKDAY_WORKERS_API_URL 上班族API基本URL
    WORKDAY_ANONYMOUS_EMPLOYEE_ID (可选) 跳过Entra身份验证;将此员工ID用于所有请求

    微软Entra/Graph(共享):

    变量 目的
    AAD_APP_CLIENT_ID Microsoft Entra应用程序ID
    AAD_APP_TENANT_ID Microsoft Entra租户ID
    GRAPH_CLIENT_ID Microsoft Graph客户端ID
    GRAPH_CLIENT_SECRET Microsoft Graph客户端机密
    GRAPH_TENANT_ID Microsoft Graph租户ID

    服务现在:

    变量 目的
    SERVICENOW_INSTANCE_URL ServiceNow实例(例如。 https://dev12345.service-now.com)
    SERVICENOW_CLIENT_ID ServiceNow OAuth客户端ID
    SERVICENOW_CLIENT_SECRET ServiceNow OAuth客户端密钥

    Salesforce:

    变量 目的
    SALESFORCE_DOMAIN Salesforce组织域
    SALESFORCE_CLIENT_ID Salesforce OAuth客户端ID
    SALESFORCE_CLIENT_SECRET Salesforce OAuth客户端密钥

    吉拉:

    变量 目的
    JIRA_BASE_URL Jira实例URL(例如。 https://org.atlassian.net)
    JIRA_EMAIL Jira帐户电子邮件
    JIRA_API_TOKEN Jira API代币
    JIRA_PROJECT_KEY (可选) 默认项目密钥

2.本地运行和测试

2.1启动所有服务器

最快的方法是使用run脚本,该脚本加载您的env文件并启动每个 单个端口上的服务器:

scripts\run-mcp.ps1                          # defaults: all servers, port 8080
scripts\run-mcp.ps1 -Server workday -Port 9000   # single server on a custom port

在Linux/macOS上:

scripts/run-mcp.sh                            # defaults: all servers, port 8080
scripts/run-mcp.sh ../env/workday.local.env workday 9000   # single server

运行所有服务器时,以下端点可用:

端点 URL
TaskServer MCP http://localhost:8080/taskserver/mcp
工作日MCP http://localhost:8080/workday/mcp
ServiceNow MCP http://localhost:8080/servicenow/mcp
Salesforce MCP http://localhost:8080/salesforce/mcp
Jira MCP http://localhost:8080/jira/mcp
健康检查 http://localhost:8080/healthz

2.2直接启动服务器(无需脚本)

python -m mcp_servers.cli all --transport http --host 0.0.0.0 --port 8080

替换 all 随着 taskserver, workday, servicenow, salesforce,或 jira 到 启动单个服务器。

2.3 MCP检验员测试

  1. 启动检查器并创建新的Streamable HTTP连接。
  2. 将URL设置为 http://localhost:8080/workday/mcp.
  3. 提供一个 Authorization: Bearer <Entra access token> 标题(在以下情况下不需要 WORKDAY_ANONYMOUS_EMPLOYEE_ID 已设置)。
  4. 调用以下工具 get_worker 或 get_leave_balances 以确认响应。

2.4匿名模式

集 WORKDAY_ANONYMOUS_EMPLOYEE_ID 在env文件中绕过Entra令牌验证 以及Microsoft Graph员工ID查找。所有请求都将使用配置的员工ID 直接。这对于Entra身份验证的本地测试或单用户部署非常有用 不需要。


3.部署到Azure容器应用程序

3.1一次性Azure设置

登录并创建所需资源:

az login
az account set --subscription <subscription-id>

$resourceGroup = "rg-m365copilot-mcp"
$location      = "eastus"
$registry      = "m365copilotmcpacr"

az group create --name $resourceGroup --location $location
az acr create   --name $registry --resource-group $resourceGroup --sku Standard

3.2使用二头肌提供基础设施

使用提供的二头肌模板部署容器应用程序环境和容器应用程序:

az deployment group create `
  --name m365copilot-mcp `
  --resource-group $resourceGroup `
  --template-file infra/azure/containerapp.bicep `
  --parameters @infra/azure/parameters.m365copilot.json

首先预览更改 az deployment group what-if 使用相同的论点。

3.3配置机密

在首次部署之前在容器应用程序上设置机密(来自vault的值):

az containerapp secret set `
  --resource-group $resourceGroup `
  --name <container-app-name> `
  --secrets `
    workday-client-id=<value> `
    workday-client-secret=<value> `
    workday-refresh-token=<value> `
    workday-client-credentials=<value> `
    aad-app-client-id=<value> `
    aad-app-tenant-id=<value> `
    graph-client-id=<value> `
    graph-client-secret=<value> `
    graph-tenant-id=<value> `
    servicenow-client-id=<value> `
    servicenow-client-secret=<value>

3.4使用部署脚本进行部署

这 scripts\deploy-mcp.ps1 脚本在一个程序中处理构建、推送和更新 命令:

scripts\deploy-mcp.ps1 `
  -ResourceGroup rg-m365copilot-mcp `
  -ContainerApp  m365copilot-mcp-app `
  -Registry      m365copilotmcpacr.azurecr.io

脚本:

  1. 登录ACR并在本地构建Docker镜像。
  2. 使用自动生成的时间戳标签推送图像。
  3. 从以下位置读取环境变量定义 infra/azure/envars.json.
  4. 使用新映像和环境变量更新容器应用程序。
  5. 完成后打印所有实时端点。
参数 必填 默认 说明
-ResourceGroup 是 -- Azure资源组
-ContainerApp 是 -- 容器应用程序名称
-Registry 是 -- ACR登录服务器(例如。 myacr.azurecr.io)
-ImageName 没有 mcp-servers Docker镜像名称(无标签)
-Tag 否 时间戳 图像标签
-SkipBuild 没有 $false 跳过构建/推送;仅更新配置

3.5验证部署

# List revisions
az containerapp revision list `
  --resource-group $resourceGroup `
  --name <container-app-name> `
  --output table

# Stream logs
az containerapp logs show `
  --resource-group $resourceGroup `
  --name <container-app-name> `
  --follow

# Quick health check
Invoke-WebRequest https://<fqdn>/healthz

3.6连接副驾驶室

  1. 使用容器应用程序FQDN在Copilot Studio中添加MCP连接,例如。 https://<fqdn>/workday/mcp (或 /servicenow/mcp, /salesforce/mcp, /jira/mcp).
  2. 供应 Authorization: Bearer <token> 指向检索到的OAuth访问令牌。
  3. 绑定 mcp-session-id 任何非空字符串。
  4. 监控时触发工具调用 az containerapp logs show 用于验证。

4.部署到Azure功能(备选方案)

Azure Functions包装器可在 azure_function/ 对于以下部署 功能应用程序已设置。请参阅该目录中的文件以了解设置。这 第3节中的容器应用程序方法是推荐的部署模型。


5.项目结构

mcp_servers/
├── Dockerfile              # Multi-stage Docker build
├── pyproject.toml           # Dependencies and project metadata
├── azure_function/          # Azure Functions wrapper (alternative deployment)
├── env/                     # Example environment files per server
├── infra/azure/             # Bicep templates and deployment parameters
├── scripts/                 # Run and deploy scripts
├── src/mcp_servers/
│   ├── cli.py               # CLI entry point & multi-server ASGI builder
│   ├── settings.py          # Pydantic-settings configuration
│   ├── auth/                # Shared Entra & token helpers
│   ├── http/                # HTTP client & retry logic
│   ├── ui/widget/           # Skybridge HTML widgets
│   ├── taskserver/          # TaskServer – unified task/approval aggregation
│   ├── workday/             # Workday – worker profiles, leave, compensation
│   ├── servicenow/          # ServiceNow – incidents, approvals, catalog
│   ├── salesforce/          # Salesforce – CRM, compliance, pipeline
│   └── jira/                # Jira – issues, projects, boards
└── tests/                   # Test suites per server

6.添加新服务器

  1. 在下创建新包 src/mcp_servers/<system>/ 至少 server.py 和 __init__.py.
  2. 在 server.py,定义a build_<system>_server() 返回a的函数 FastMCP 使用已注册的工具创建实例。
  3. 在 SERVER_BUILDERS dict in cli.py.
  4. 服务器将自动安装在 /<system>/mcp 跑步时 all 模式。
  5. 在中重用共享模块 auth/ 和 http/ 用于一致的令牌处理和重试。