内容
# Jotsu MCP
通用库,用于实现模型上下文协议(MCP)和创建使用MCP工具、资源和提示的工作流。
## 快速入门
安装软件包,包括命令行界面。
```shell
pip install jotsu-mcp[cli]
```
创建一个空的工作流。
```shell
jotsu-mcp workflow init
```
初始化命令会在当前目录中创建一个名为`workflow.json`的工作流文件。
运行它:
```shell
jotsu-mcp workflow run ./workflow.json
```
输出由三条消息组成:工作流开始、单个节点的消息和工作流结束。
最终结果出现在工作流结束节点的`result`字段中,在本例中是一个空对象。
## MCP问候
工作流可以从MCP服务器调用工具。这允许您使用MCP与尚不支持它的模型(实际上是Claude以外的任何模型)。
添加以下服务器条目:
```json
{
"id": "hello",
"name": "Hello World",
"url": "https://hello.mcp.jotsu.com/mcp/"
}
```
注意:ID可能只包含小写字母、数字、`:`、`_`或`-`。
注意:不要忘记URL中的路径`/mcp/`。
该服务器是一个公开可用的MCP服务器(无身份验证),它具有多个资源和一个工具。
(代码可在[此处](https://github.com/getjotsu/mcp-servers/tree/main/hello)找到)。
接下来,为服务器工具添加一个节点。
```json
[
{"id": "greet", "type": "tool", "name": "greet", "server_id": "hello"}
]
```
添加'greet'工具所需的初始数据:
```json
{"name": "World"}
```
默认情况下,工作流从第一个节点开始,但您也可以显式设置起始节点:
```
"start_node_id": "greet"
```
最后,在末尾添加一个'generic'节点。
通用节点是特定于应用程序的 - 意味着工作流仅通过yield数据来处理它们 -
通常用于输出和/或调试。类型可以是工作流尚未使用的任何字符串。在这种情况下,是'output'。
<details>
<summary>完整工作流</summary>
```json
{
"id": "quickstart",
"name": "quickstart",
"description": "与'hello' MCP服务器交互的简单工作流",
"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>
再次运行此工作流将生成更多数据,特别是有一条类似的记录:
```json
{
"action": "default",
"timestamp": 132462.392532502,
"id": "01k3h80zcaz050eg7080r3fnv7",
"run_id": "01k3h80t6psmg0s5swsg4yke95",
"node": {
"id": "output",
"name": "The result",
"type": "output"
},
"data": {
"name": "World",
"greet": "Hello, World!"
}
}
```
此节点的數據作为工作流的'结果'。
由于工作流可以有多个分支,因此只有一个'结果',
相反,根据工作流采取的行动,可以有多条这样的记录。
## 开发
```shell
uv venv
uv pip install '.[dev,cli,anthropic,openai,cloudflare,cryptography]'
```