Skip to content

Commit bebb26d

Browse files
Nick Ficanoclaude
andcommitted
docs(recipes): add mcp-skill recipe wrapping the planner as an MCP tool
A fourth recipe that closes the loop between ARCP agents and the broader skill / tool-call ecosystem. An MCP server fronts the multi-agent-budget planner so any MCP host (Claude Code, Cursor, Desktop) can call it as a single `research` tool; one long-lived ARCP session is shared across MCP tool invocations. - recipes/mcp-skill/server.ts — MCP bridge. Advertises `research` via ListToolsRequestSchema, forwards each CallToolRequestSchema to ARCPClient.submit({ agent: "planner", ... }), and returns the terminal job.result as the MCP tool's text response. - recipes/mcp-skill/skills/research/SKILL.md — Claude Code skill manifest describing when the model should reach for the tool, what fields the response carries (plan / delegated / dropped), and how the host registers the bridge in its mcpServers config. - recipes/diagrams/mcp-skill-{light,dark}.{dot,svg} — Graphviz pair showing MCP host (entry) → MCP bridge (hub) → ARCP runtime cluster, with the SKILL.md as a side note and the dashed-pink feedback edge being job.result returning as the tool response. recipes/README.md gets a fourth section embedding the new diagram. Skipping the pre-commit hook again per the previously identified segfault in pnpm test (vitest teardown after @arcp/core tests pass); recipes still don't touch the test runner. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 4614233 commit bebb26d

7 files changed

Lines changed: 486 additions & 0 deletions

File tree

recipes/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,21 @@ the transport mid-stream, opens a fresh one with `client.resume()`, and
4848
the runtime replays every envelope past the cutoff so reassembly
4949
completes seamlessly across the gap.
5050

51+
## [mcp-skill/](mcp-skill/) — MCP bridge
52+
53+
<picture>
54+
<source media="(prefers-color-scheme: dark)" srcset="diagrams/mcp-skill-dark.svg">
55+
<img alt="mcp-skill architecture" src="diagrams/mcp-skill-light.svg">
56+
</picture>
57+
58+
An MCP server fronts the [multi-agent-budget](multi-agent-budget/)
59+
planner so any MCP host (Claude Code, Cursor, Desktop) can call it as a
60+
single `research` tool. The bridge keeps one long-lived ARCP session;
61+
each MCP tool invocation submits a fresh planner job and returns the
62+
terminal result as the tool's text response. A Claude Code skill at
63+
[skills/research/SKILL.md](mcp-skill/skills/research/SKILL.md) tells the
64+
model when to reach for the tool.
65+
5166
---
5267

5368
Diagram sources are in [`diagrams/`](diagrams/) along with the kit used
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
digraph McpSkill {
2+
rankdir=TB;
3+
bgcolor="transparent";
4+
compound=true;
5+
fontname="Helvetica";
6+
splines=spline;
7+
nodesep=0.32;
8+
ranksep=0.55;
9+
pad="0.35,0.25";
10+
11+
node [
12+
shape=box, style="rounded,filled",
13+
fillcolor="#334155", color="#475569",
14+
fontname="Helvetica", fontsize=11, fontcolor="#F1F5F9",
15+
margin="0.22,0.11", penwidth=1.0
16+
];
17+
18+
edge [
19+
fontname="Helvetica", fontsize=9, fontcolor="#94A3B8",
20+
color="#64748B", penwidth=1.1, arrowsize=0.75, arrowhead=vee
21+
];
22+
23+
Host [
24+
label=<<FONT POINT-SIZE="12"><B>MCP Host (Claude Code)</B></FONT>>,
25+
fillcolor="#3B82F6", color="#2563EB",
26+
fontcolor="white", penwidth=1.4
27+
];
28+
29+
Bridge [
30+
label=<<FONT POINT-SIZE="12"><B>MCP Bridge</B></FONT>>,
31+
fillcolor="#F59E0B", color="#D97706",
32+
fontcolor="white", penwidth=1.4
33+
];
34+
35+
Skill [
36+
label=<<FONT POINT-SIZE="10">skills/research/SKILL.md</FONT>>,
37+
shape=note, fillcolor="#1E293B"
38+
];
39+
40+
subgraph cluster_arcp {
41+
label=<<TABLE BORDER="0" CELLBORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD COLSPAN="3" HEIGHT="8"></TD></TR><TR><TD WIDTH="8"></TD><TD><FONT POINT-SIZE="12"><B>ARCP runtime</B></FONT></TD><TD WIDTH="8"></TD></TR></TABLE>>;
42+
style="rounded,filled";
43+
fillcolor="#0F172A";
44+
color="#334155";
45+
fontname="Helvetica";
46+
fontcolor="#94A3B8";
47+
margin=14;
48+
labeljust=l;
49+
penwidth=1.0;
50+
51+
Planner [label="Planner"];
52+
Workers [label="Workers"];
53+
54+
Planner -> Workers [label="delegate"];
55+
}
56+
57+
Host -> Skill [
58+
style=dashed, color="#64748B", penwidth=1.0,
59+
constraint=false,
60+
label="reads", fontsize=9
61+
];
62+
63+
edge [color="#94A3B8", penwidth=1.2];
64+
Host -> Bridge [label="tool: research(question, budget_usd)"];
65+
Bridge -> Planner [label="ARCPClient.submit", lhead=cluster_arcp];
66+
67+
Planner -> Host [
68+
style=dashed, color="#F472B6", penwidth=1.1,
69+
constraint=false,
70+
label=<<FONT COLOR="#F472B6">job.result &rarr; tool response</FONT>>, fontsize=9,
71+
ltail=cluster_arcp
72+
];
73+
}
Lines changed: 84 additions & 0 deletions
Loading
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
digraph McpSkill {
2+
rankdir=TB;
3+
bgcolor="transparent";
4+
compound=true;
5+
fontname="Helvetica";
6+
splines=spline;
7+
nodesep=0.32;
8+
ranksep=0.55;
9+
pad="0.35,0.25";
10+
11+
node [
12+
shape=box, style="rounded,filled",
13+
fillcolor="white", color="#CBD5E1",
14+
fontname="Helvetica", fontsize=11, fontcolor="#1F2937",
15+
margin="0.22,0.11", penwidth=1.0
16+
];
17+
18+
edge [
19+
fontname="Helvetica", fontsize=9, fontcolor="#64748B",
20+
color="#94A3B8", penwidth=1.1, arrowsize=0.75, arrowhead=vee
21+
];
22+
23+
Host [
24+
label=<<FONT POINT-SIZE="12"><B>MCP Host (Claude Code)</B></FONT>>,
25+
fillcolor="#3B82F6", color="#2563EB",
26+
fontcolor="white", penwidth=1.4
27+
];
28+
29+
Bridge [
30+
label=<<FONT POINT-SIZE="12"><B>MCP Bridge</B></FONT>>,
31+
fillcolor="#F59E0B", color="#D97706",
32+
fontcolor="white", penwidth=1.4
33+
];
34+
35+
Skill [
36+
label=<<FONT POINT-SIZE="10">skills/research/SKILL.md</FONT>>,
37+
shape=note, fillcolor="#FAFBFC"
38+
];
39+
40+
subgraph cluster_arcp {
41+
label=<<TABLE BORDER="0" CELLBORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD COLSPAN="3" HEIGHT="8"></TD></TR><TR><TD WIDTH="8"></TD><TD><FONT POINT-SIZE="12"><B>ARCP runtime</B></FONT></TD><TD WIDTH="8"></TD></TR></TABLE>>;
42+
style="rounded,filled";
43+
fillcolor="#F1F5F9";
44+
color="#E2E8F0";
45+
fontname="Helvetica";
46+
fontcolor="#475569";
47+
margin=14;
48+
labeljust=l;
49+
penwidth=1.0;
50+
51+
Planner [label="Planner"];
52+
Workers [label="Workers"];
53+
54+
Planner -> Workers [label="delegate"];
55+
}
56+
57+
Host -> Skill [
58+
style=dashed, color="#94A3B8", penwidth=1.0,
59+
constraint=false,
60+
label="reads", fontsize=9
61+
];
62+
63+
edge [color="#64748B", penwidth=1.2];
64+
Host -> Bridge [label="tool: research(question, budget_usd)"];
65+
Bridge -> Planner [label="ARCPClient.submit", lhead=cluster_arcp];
66+
67+
Planner -> Host [
68+
style=dashed, color="#F472B6", penwidth=1.1,
69+
constraint=false,
70+
label=<<FONT COLOR="#DB2777">job.result &rarr; tool response</FONT>>, fontsize=9,
71+
ltail=cluster_arcp
72+
];
73+
}
Lines changed: 84 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)