Skip to main content
Glama

mcpGraph

MCP server that executes directed graphs of MCP server calls.

Overview

mcpGraph is an MCP (Model Context Protocol) server that exposes tools defined by declarative YAML configurations. Each tool executes a directed graph of nodes that can call other MCP tools, transform data, and make routing decisions, all without embedding a full programming language.

Key Features:

  • Declarative Configuration: Define tools and their execution graphs in YAML

  • Data Transformation: Use JSONata expressions to transform data between nodes

  • Conditional Routing: Use JSON Logic for conditional branching

  • Observable: Every transformation and decision is traceable

  • No Embedded Code: All logic expressed using standard expression languages (JSONata, JSON Logic)

Example

Here's a simple example that counts files in a directory:

version: "1.0" server: name: "mcpGraph" version: "1.0.0" description: "MCP server that executes directed graphs of MCP tool calls" 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" entryNode: "entry_count_files" exitNode: "exit_count_files" nodes: - id: "entry_count_files" type: "entry" next: "list_directory_node" - id: "list_directory_node" type: "mcp_tool" server: "filesystem" tool: "list_directory" args: path: "$.input.directory" next: "count_files_node" - id: "count_files_node" type: "transform" transform: expr: | { "count": $count($split(list_directory_node, "\n")) } next: "exit_count_files" - id: "exit_count_files" type: "exit"

This graph:

  1. Receives a directory path as input

  2. Calls the filesystem MCP server's list_directory tool

  3. Transforms the result to count files using JSONata

  4. Returns the count

Node Types

  • entry: Entry point for a tool's graph execution. Receives tool arguments.

  • mcp_tool: Calls an MCP tool on an internal or external MCP server.

  • transform: Applies JSONata expressions to transform data between nodes.

  • switch: Uses JSON Logic to conditionally route to different nodes.

  • exit: Exit point that returns the final result to the MCP tool caller.

Setup

  1. Install dependencies:

npm install
  1. Build the project:

npm run build
  1. Run the project:

npm start

Or run in development mode (with hot reload):

npm run dev

Running Tests

npm test

See docs/test-setup.md for information on setting up the testing environment, including the filesystem MCP server configuration.

Development

  • Source code is in src/

  • Build output goes to dist/

  • TypeScript configuration is in tsconfig.json

  • Example configurations are in examples/

  • Tests are in tests/

Documentation

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TeamSparkAI/mcpGraph'

If you have feedback or need assistance with the MCP directory API, please join our Discord server