Jotsu MCP

by getjotsu

3 stars
204 downloads
Not rated
GitHub

About

Workflow engine for executing Model Context Protocol (MCP) workflows. It provides a lightweight runtime for running AI-powered tasks across MCP-compatible servers with built-in support for authentication, resources, and tools. This package powers the Jotsu platform but can also b

Details

Author
getjotsu
GitHub stars
3
Downloads
204
Categories
Other

- Implement MCP and create MCP workflows.
- Call tools from MCP servers in workflows.
- Use MCP with models other than Claude.
- CLI for init and run commands.
- Workflows defined in portable JSON format.
- Support for generic, application‑specific nodes.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Jotsu MCP
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install the package with pip install jotsu-mcp[cli]. Use the CLI command jotsu-mcp workflow init to create a workflow.json file, then run it with jotsu-mcp workflow run ./workflow.json. Workflows are defined as JSON and can connect to MCP servers to call tools.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "jotsu mcp": {
            "jotsu-mcp": {
                "command": "uv",
                "args": [
                    "venv"
                ]
            }
        }
    }
}

McpServers

{
    "jotsu-mcp": {
        "command": "uv",
        "args": [
            "venv"
        ]
    }
}

Jotsu MCP

General-purpose library for implementing the Model Context Protocol (MCP) and creating workflows
that use MCP tools, resources and prompts.

Quickstart

Install the package, including the CLI.

pip install jotsu-mcp[cli]

Create an empty workflow.

jotsu-mcp workflow init

The initialization command creates a workflow file 'workflow.json' in the current directory.

Run it:

jotsu-mcp workflow run ./workflow.json

The output consists of three messages: the workflow start, the single node’s message, and the workflow end.
The final result appears in the result field of the workflow-end node, which in this example is an empty object.

Hello MCP

The workflow can call a tool from an MCP server. This allows you to use MCP with models that don't yet support it (really any model other than Claude).

Add the following server entry:

{
"id": "hello",
"name": "Hello World",
"url": "https://hello.mcp.jotsu.com/mcp/"
}

NOTE: IDs may only contain lowercase letters, numbers, :, _, or -.
NOTE: don't forget the path /mcp/ on the URL.

This server is a publicly available MCP server (with no authentication) that has a couple of resources and a tool.
(The code is available here).

Next add a node for a server tool.

[
    {"id":  "greet", "type":  "tool", "name": "greet", "server_id":  "hello"}
]

Add some initial data that the 'greet' tool needs:

{"name": "World"}

By default, the workflow starts with the first node, but you can also explicitly set the start node:
"start_node_id": "greet"

Finally, add a 'generic' node at the end.
Generic nodes are application-specific - meaning the workflow only handles them by yielding the data -
and are generally used for output and/or debugging.
The type can be any string not already used by the workflow. In this case, 'output'.

<details>
<summary>Full Workflow</summary>

{
    "id": "quickstart",
    "name": "quickstart",
    "description": "Simple workflow to interact with the 'hello' MCP server",
    "nodes": [
        {"id":  "greet", "type":  "tool", "name": "greet", "server_id":  "hello", "edges":  ["output"]},
        {"id":  "output", "type":  "output", "name": "The result"}
    ],
    "servers": [
        {
            "id": "hello",
            "name": "Hello World",
            "url": "https://hello.mcp.jotsu.com/mcp/"
        }
    ],
    "data": {"name":  "World"},
    "metadata": null
}

</details>

Running this workflow again generates a lot more data, but specifically there is a line similar to:

{
  "action": "default",
  "timestamp": 132462.392532502,
  "id": "01k3h80zcaz050eg7080r3fnv7",
  "run_id": "01k3h80t6psmg0s5swsg4yke95",
  "node": {
    "id": "output",
    "name": "The result",
    "type": "output"
  },
  "data": {
    "name": "World",
    "greet": "Hello, World!"
  }
}

The data from this node acts as the 'result' of the workflow.
Since workflows can have many branches there is one 'result',
instead there could be many such lines depending upon the actions the workflow took.

Development

uv venv
uv pip install '.[dev,cli,anthropic,openai,cloudflare,cryptography]'
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.