Skip to main content

Automatation for the Model Context Protocol (MCP).

Project description

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 is only the start and end messages since the workflow doesn't have any nodes.

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: 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"}

and tell the workflow where to start:

"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'.

Full Workflow
{
    "id": "quickstart",
    "name": "quickstart",
    "description": "Simple workflow to interact with the 'hello' MCP server",
    "event": {
        "name": "Manual",
        "type": "manual",
        "metadata": null
    },
    "start_node_id": "greet",
    "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
}

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]'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jotsu_mcp-0.11.0.tar.gz (36.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jotsu_mcp-0.11.0-py3-none-any.whl (45.6 kB view details)

Uploaded Python 3

File details

Details for the file jotsu_mcp-0.11.0.tar.gz.

File metadata

  • Download URL: jotsu_mcp-0.11.0.tar.gz
  • Upload date:
  • Size: 36.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for jotsu_mcp-0.11.0.tar.gz
Algorithm Hash digest
SHA256 f3942f1d11086bc0c46b52b80ab4d345684e52f9955ff7146bab7e29f18d972b
MD5 0f70d27093d539efa2ed92132e9b2f3e
BLAKE2b-256 d4451d7d56d76125b25dee91638ccb5e527b920a0c7f5a93ece1ef41061fbb7b

See more details on using hashes here.

File details

Details for the file jotsu_mcp-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: jotsu_mcp-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 45.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for jotsu_mcp-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 02f45c4d3d06c0d2de174b076faf2adef56dca7c1189105aae0c73bce3c13b59
MD5 4720b9693d2aefb57192f1ce7b2c1aff
BLAKE2b-256 0a4e9de5ed818e11303e13014597182b13be8367b15a7df85b92a59705230103

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page