Token导航 LogoToken导航TokenDH.com
MCP Graph logo
运维云端未说明官方级别未说明来源级核验

MCP Graph

MCP Server

mcpGraph是一个基于YAML配置的MCP服务器,能够执行由节点组成的定向图,支持数据转换、条件路由和无代码逻辑表达,适用于自动化流程和工具开发。

工具数

0

提示词数

0

GitHub Stars

16

资源数

0
数据转换TypeScriptClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

TeamSparkAI

提供方

TeamSparkAI

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

mcpGraph

执行MCP服务器调用的有向图的MCP服务器。

📖 了解更多: 阅读 mcpGraph:“代码模式”的无代码替代方案 了解mcpGraph如何提供Code Mode的上下文效率和准确性,同时保持无代码解决方案的安全性和可观察性。
🎥 观看演示: 看看 mcpGraph概述和mcpGraphUX演示 观看mcpGraph的运行视频,并探索mcpGraphUX的可视化调试功能。
🎥 观看演示: 看看 mcpGraphToolkit深潜 视频显示代理自主构建、测试和部署编排工具——没有代码的“代码模式”。

概述

mcpGraph是一个MCP(模型上下文协议)服务器,它公开了由声明性YAML配置定义的工具。每个工具都执行一个节点的有向图,可以调用其他MCP工具、转换数据和做出路由决策,所有这些都不需要嵌入完整的编程语言。

主要特点:

  • 声明性配置:在YAML中定义工具及其执行图
  • 数据转换:使用 JSONata 在节点之间转换数据的表达式
  • 条件路由:使用 JSON逻辑 用于条件分支
  • 可观察对象:每一个转变和决策都是可追溯的
  • 无嵌入式代码:使用标准表达式语言表示的所有逻辑(JSONata, JSON逻辑)

相关工具:

  • mcpGraphUX:mcpGraph的可视化调试和开发环境。可视化图形结构,在执行过程中通过活动节点设置动画,设置断点,检查节点输入和输出。请参阅 mcpGraphUX存储库 了解详情。
  • mcpGraphToolkit:一个MCP服务器,提供用于构建、测试和管理mcpGraph工具的工具。使用它可以发现可用的MCP服务器、测试表达式和交互式创建图形工具。看 mcpGraphToolkit概述 了解详情。

示例

以下是一个简单的示例,用于统计目录中的文件数:

version: "1.0"

# MCP Server Metadata
server:
  name: "fileUtils"
  version: "1.0.0"
  title: "File utilities"
  instructions: "This server provides file utility tools for counting files and calculating total file sizes in directories."

# Optional: Execution limits to prevent infinite loops
executionLimits:
  maxNodeExecutions: 1000      # Maximum total node executions (default: 1000)
  maxExecutionTimeMs: 300000   # Maximum execution time in milliseconds (default: 300000 = 5 minutes)

# MCP Servers used by the graph
mcpServers:
  filesystem:
    command: "npx"
    args:
      - "-y"
      - "@modelcontextprotocol/server-filesystem"
      - "./tests/counting"

# Tool Definitions
tools:
  - name: "count_files"
    description: "Counts the number of files in a directory"
    inputSchema:
      type: "object"
      properties:
        directory:
          type: "string"
          description: "The directory path to count files in"
      required:
        - directory
    outputSchema:
      type: "object"
      properties:
        count:
          type: "number"
          description: "The number of files in the directory"
    nodes:
      # Entry node: Receives tool arguments
      - id: "entry"
        type: "entry"
        next: "list_directory_node"
      
      # List directory contents
      - id: "list_directory_node"
        type: "mcp"
        server: "filesystem"
        tool: "list_directory"
        args:
          path:
            expr: "$.entry.directory"
        next: "count_files_node"
      
      # Transform and count files
      - id: "count_files_node"
        type: "transform"
        transform:
          expr: '{ "count": $count($split($.list_directory_node.content, "\n")) }'
        next: "exit"
      
      # Exit node: Returns the count
      - id: "exit"
        type: "exit"

此图:

  1. 接收目录路径作为输入
  2. 调用文件系统MCP服务器的 list_directory 工具
  3. 使用JSONata将结果转换为计数文件
  4. 返回计数

节点类型

  • entry:工具图形执行的入口点。接收工具参数。

- 输出:工具输入参数(按原样传递)

  • mcp:调用内部或外部MCP服务器上的MCP工具。

- 输出:MCP工具的响应(从工具内容解析)

  • transform:适用 JSONata 用于在节点之间转换数据的表达式。

- 输出:JSONata表达式的求值结果 - 表达式格式:The expr 字段是一个包含JSONata表达式的字符串。对简单表达式使用单引号字符串: expr: '{ "result": "value" }'.使用块标量(|)用于复杂的多行表达式,以提高可读性。

  • switch:用途 JSON逻辑 有条件地路由到不同的节点。注: var JSON逻辑规则中的操作使用JSONata进行评估,从而允许完全的JSONata表达式支持。

- 输出:路由到的目标节点的节点ID(字符串)

  • exit:将最终结果返回给MCP工具调用者的退出点。

- 输出:执行历史中前一个节点的输出

执行历史和调试

mcpGraph为每个工具执行维护完整的执行历史,从而实现强大的调试和自检功能:

  • 执行历史:每个节点的执行都记录了时间、输出和唯一的 executionIndex (顺序:0、1、2、…)
  • 上下文结构:表达式的上下文是从历史构建的-一个平面结构,其中每个节点ID映射到其最新输出

- 简单符号: $.node_id 访问节点的最新输出 - 当节点执行多次(循环)时,上下文显示最近的执行 - 历史记录功能提供对所有执行情况的访问,而不仅仅是最新执行情况

  • 时间旅行调试:使用以下命令获取任何特定执行可用的上下文 getContextForExecution(executionIndex)
  • 历史功能:使用JSONata函数访问执行历史:

- $previousNode() -获取上一个节点的输出 - $previousNode(index) -获取当前前执行N步的节点 - $executionCount(nodeName) -计算节点执行的次数 - $nodeExecution(nodeName, index) -获取节点的特定执行(0=第一个,-1=最后一个) - $nodeExecutions(nodeName) -以数组形式获取节点的所有执行

  • 环路支持:节点可以在循环中执行多次,每次执行都在历史记录中单独跟踪

docs/自检调试.md 有关调试功能的详细文档。

上下文访问:

  • 所有节点输出都可以通过节点ID访问(例如。, $.entry.directory, $.list_directory_node)
  • 最新执行获胜: $.increment_node 当节点执行多次时,返回最近的输出
  • 历史函数在所有JSONata表达式中都可用(包括JSON Logic中使用的表达式 var 操作)

JSONata表达式格式

expr 转换节点中的字段是一个包含JSONata表达式的字符串。在YAML中,你可以使用:

  • 单引号字符串 ('...')对于简单的单行表达式:
  transform:
    expr: '{ "count": $count($split($.list_directory_node.content, "\n")) }'

这使表达式保持在一行上,非常适合简单的转换。

  • 块标量 (|)对于复杂的多行表达式:
  transform:
    expr: |
      $executionCount("increment_node") = 0
        ? { "counter": 1, "sum": 1, "target": $.entry_sum.n }
        : { "counter": $nodeExecution("increment_node", -1).counter + 1, ... }

这提高了具有条件逻辑、嵌套对象或多个操作的表达式的可读性。

两种形式的工作方式相同——JSONata将表达式作为字符串进行计算。简单表达式使用单引号,复杂表达式使用块标量,以提高可读性。

对于开发者

如果您有兴趣为mcpGraph做出贡献或使用源代码,请参阅 贡献.md 有关设置说明、开发指南和项目结构。

安装

从npm安装mcpGraph:

npm install -g mcpgraph

或者在项目中本地安装:

npm install mcpgraph

配置

执行限制

mcpGraph支持循环图,这需要护栏来防止无限循环。执行限制可以在图形级别配置:

version: "1.0"

server:
  name: "myServer"          # Required: unique identifier
  version: "1.0.0"          # Required: server version
  title: "My MCP server"    # Optional: display name (defaults to name if not provided)
  instructions: "Instructions for using this server"  # Optional: server usage instructions

# Optional: Execution limits to prevent infinite loops
executionLimits:
  maxNodeExecutions: 1000      # Maximum total node executions (default: 1000)
  maxExecutionTimeMs: 300000   # Maximum execution time in milliseconds (default: 300000 = 5 minutes)

tools:
  # ... tool definitions ...

执行限制:

  • maxNodeExecutions (可选):整个图中节点执行的最大数量。违约: 1000。如果执行达到此限制,则抛出错误。
  • maxExecutionTimeMs (可选):图形执行的最长挂钟时间(毫秒)。违约: 300000 (5分钟)。如果执行超过此时间,则会抛出错误。

在每个节点执行之前,都会检查这两个限制。如果超过任一限制,执行将立即停止,并显示一条明确的错误消息,指示达到了哪个限制。

注: 这些限制是可选的。如果未指定,则应用默认值。对于长时间运行的批处理作业,可以将它们设置为更高的值,对于快速操作,可以将其设置为较低的值。

作为MCP服务器

使用 mcpgraph 作为MCP客户端(如Claude Desktop)中的MCP服务器,将其添加到MCP客户端的配置文件中。

Claude桌面配置

添加 mcpgraph 到您的Claude Desktop MCP配置(通常位于 ~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上,或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上):

{
  "mcpServers": {
    "mcpgraph": {
      "command": "mcpgraph",
      "args": [
        "-g",
        "/path/to/your/config.yaml"
      ]
    }
  }
}

或者如果没有安装(从npm运行):

{
  "mcpServers": {
    "mcpgraph": {
      "command": "npx",
      "args": [
        "-y",
        "mcpgraph",
        "-g",
        "/path/to/your/config.yaml"
      ]
    }
  }
}

注: 替换 /path/to/your/config.yaml 使用YAML配置文件的实际路径。这 -g (或 --graph)flag指定要使用的图形配置文件。

程序化API

mcpgraph 包导出可在您自己的应用程序中使用的程序化API(例如,用于构建UX服务器或其他接口):

import { McpGraphApi } from 'mcpgraph';

// Create an API instance (loads and validates config)
const api = new McpGraphApi('path/to/config.yaml');

// List all available tools
const tools = api.listTools();

// Execute a tool
const result = await api.executeTool('count_files', {
  directory: './tests/counting',
});

// Clean up resources
await api.close();

examples/api-usage.ts 举一个完整的例子。

文档

目录标签

目录标签

数据转换TypeScriptClaude无代码开发本地部署自动化流程MCP工具JSONata

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP