Asi mcp-tripartite

MCP tripartite integration for orchestrating distributed tool protocols

install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/mcp-tripartite" ~/.claude/skills/plurigrid-asi-mcp-tripartite-841010 && rm -rf "$T"
manifest: skills/mcp-tripartite/SKILL.md
source content

SKILL: MCP Tripartite Integration

Version: 1.0.0 Trit: 0 (ERGODIC) Domain: mcp, integration, orchestration


Overview

Each MCP server is integrated with a 3-partite structure that ensures GF(3) conservation:

MCP_server ⊗ Skill_MINUS ⊗ Skill_PLUS = 0 (mod 3)

This creates balanced triads where each MCP has a validator (-1) and generator (+1) complement.


MCP Tripartite Assignments

1. GAY.jl MCP (Trit: 0)

three-match (-1) ⊗ gay (0) ⊗ cider-clojure (+1) = 0 ✓
RoleComponentAction
MINUS
three-match
Validate GF(3) conservation
ERGODIC
gay-mcp
Generate deterministic colors
PLUS
cider-clojure
Interactive REPL exploration

Integration Pattern:

# Generate color via gay-mcp
color = mcp_call(:gay, :generate_color, seed: 0x42D)

# Validate with three-match
valid = mcp_call(:gay, :verify_gf3, colors: [c1, c2, c3])

# Explore in cider-clojure
(mcp/gay :generate-palette {:seed 1069 :count 12})

2. Firecrawl MCP (Trit: +1)

tree-sitter (-1) ⊗ babashka (0) ⊗ firecrawl (+1) = 0 ✓
RoleComponentAction
MINUS
tree-sitter
Parse/validate scraped content structure
ERGODIC
babashka
Transform scraped data
PLUS
firecrawl
Scrape web content

Integration Pattern:

;; Scrape with firecrawl
(def content (mcp/firecrawl :scrape {:url "https://example.com"}))

;; Parse with tree-sitter
(def ast (mcp/tree-sitter :get_ast {:content content :language "html"}))

;; Transform with babashka
(bb/transform ast {:extract [:title :links :code-blocks]})

3. Exa MCP (Trit: +1)

radare2 (-1) ⊗ huggingface (0) ⊗ exa (+1) = 0 ✓
RoleComponentAction
MINUS
radare2
Deep binary/code analysis
ERGODIC
huggingface
Model/paper discovery
PLUS
exa
AI-powered search

Integration Pattern:

# Search with exa
results = mcp_call("exa", "web_search_exa", query="LLVM optimization passes")

# Find related papers on huggingface
papers = mcp_call("huggingface", "paper_search", query="compiler optimization")

# Analyze binaries with radare2 (for found libraries)
analysis = mcp_call("radare2", "analyze", level=2)

4. HuggingFace MCP (Trit: 0)

proofgeneral-narya (-1) ⊗ huggingface (0) ⊗ rubato-composer (+1) = 0 ✓
RoleComponentAction
MINUS
proofgeneral-narya
Verify model properties formally
ERGODIC
huggingface
Navigate model/dataset space
PLUS
rubato-composer
Compose musical gestures from model outputs

Integration Pattern:

# Search for audio models
models = mcp_call(:huggingface, :model_search, task: "audio-generation")

# Verify model claims with narya
verify(:model_output_bounded, model: first(models))

# Compose with rubato
rubato_gesture(:from_model_output, model_result)

5. Tree-Sitter MCP (Trit: -1)

tree-sitter (-1) ⊗ unworld (0) ⊗ gay-mcp (+1) = 0 ✓
RoleComponentAction
MINUS
tree-sitter
Parse and validate AST
ERGODIC
unworld
Derive seed chains from code
PLUS
gay-mcp
Color code elements

Integration Pattern:

# Parse code with tree-sitter
ast = mcp_call(:tree_sitter, :get_ast, file: "lib/synergistic_triads.rb")

# Derive seeds via unworld
seeds = unworld_chain(ast.node_count, genesis: 0x42D)

# Color AST nodes with gay-mcp
colored_ast = seeds.zip(ast.nodes).map { |seed, node|
  [node, mcp_call(:gay, :generate_color, seed: seed)]
}

6. Radare2 MCP (Trit: -1)

radare2 (-1) ⊗ glass-bead-game (0) ⊗ marginalia (+1) = 0 ✓
RoleComponentAction
MINUS
radare2
Reverse engineer binaries
ERGODIC
glass-bead-game
Navigate concept space
PLUS
marginalia
Search indie documentation

Integration Pattern:

# Disassemble function with radare2
asm = mcp_call(:radare2, :disassemble_function, address: "main")

# Find related concepts via glass-bead
beads = glass_bead_connect(:assembly, :documentation)

# Search indie web for obscure docs
docs = mcp_call(:marginalia, :search, query: "x86 calling convention")

7. Babashka MCP (Trit: 0)

clj-kondo-3color (-1) ⊗ babashka (0) ⊗ geiser-chicken (+1) = 0 ✓
RoleComponentAction
MINUS
clj-kondo-3color
Lint Clojure code
ERGODIC
babashka
Execute Clojure scripts
PLUS
geiser-chicken
Interactive Scheme REPL

Integration Pattern:

;; Lint with clj-kondo
(def warnings (mcp/clj-kondo :lint {:file "script.bb"}))

;; Execute with babashka
(mcp/babashka :run_script {:script "script.bb"})

;; Explore in geiser-chicken (Scheme bridge)
(geiser-eval '(load "interop.scm"))

8. Marginalia MCP (Trit: +1)

hatchery-papers (-1) ⊗ epistemic-arbitrage (0) ⊗ marginalia (+1) = 0 ✓
RoleComponentAction
MINUS
hatchery-papers
Validate against academic papers
ERGODIC
epistemic-arbitrage
Propagate knowledge across domains
PLUS
marginalia
Search indie web

Integration Pattern:

# Search indie web
results = mcp_call(:marginalia, :search, query: "category theory software")

# Cross-reference with academic papers
papers = hatchery_match(results, topic: "applied category theory")

# Propagate via epistemic arbitrage
propagate_knowledge(from: papers, to: results, gain: :information)

9. Unison MCP (Trit: 0)

slime-lisp (-1) ⊗ unison (0) ⊗ xenodium-elisp (+1) = 0 ✓
RoleComponentAction
MINUS
slime-lisp
Interactive Lisp debugging
ERGODIC
unison
Content-addressed code transport
PLUS
xenodium-elisp
Emacs integration

Integration Pattern:

;; Find code in unison
(mcp-unison-find "List.map")

;; Debug in slime
(slime-eval-async '(describe 'map))

;; Integrate via xenodium
(dwim-shell-command "ucm transcript")

Complete Triad Matrix

MCPTritMINUS PartnerPLUS PartnerGF(3)
gay0three-matchcider-clojure0 ✓
firecrawl+1tree-sitter(self)needs -1 ⊗ 0
exa+1radare2(self)needs -1 ⊗ 0
huggingface0proofgeneral-naryarubato-composer0 ✓
tree-sitter-1(self)gay-mcpneeds 0
radare2-1(self)marginalianeeds 0
babashka0clj-kondo-3colorgeiser-chicken0 ✓
marginalia+1hatchery-papers(self)needs -1 ⊗ 0
unison0slime-lispxenodium-elisp0 ✓

Commands

# List all MCP triads
just mcp-triads

# Check GF(3) conservation across all MCPs
just mcp-gf3-check

# Run specific MCP triad
just mcp-triad gay        # gay ⊗ three-match ⊗ cider-clojure
just mcp-triad firecrawl  # firecrawl ⊗ tree-sitter ⊗ babashka
just mcp-triad huggingface

# Test MCP connectivity
just mcp-ping gay
just mcp-ping firecrawl
just mcp-ping all

Configuration

Codex (~/.codex/config.toml)

[mcp_servers.gay]
command = "julia"
args = ["--project=@gay", "-e", "using Gay; Gay.serve_mcp()"]

[mcp_servers.firecrawl]
url = "https://mcp.firecrawl.dev/..."

[mcp_servers.huggingface]
command = "node"
args = ["hf-mcp-server/dist/server/stdio.js"]

Crush (.crush.json)

{
  "mcp": {
    "gay": { "type": "stdio", "command": "julia", "args": [...] },
    "exa": { "type": "http", "url": "https://mcp.exa.ai/..." },
    "babashka": { "type": "stdio", "command": "npx", "args": [...] }
  }
}

Skill Name: mcp-tripartite Type: MCP Integration / Orchestration Trit: 0 (ERGODIC) - coordinates across triads GF(3): Conserved by design