1. Conduid
  2. Developer Tools
  3. Fusion
MCP server · Developer Tools

Fusion

MCP Fusion - The TypeScript framework for secure MCP servers.

88Excellent

Scored 9 days ago · breakdown

About Fusion

Fusion is an MCP server published by vinkius-labs in the Developer Tools category: mCP Fusion - The TypeScript framework for secure MCP servers.

The repository has 255 stars and 26 forks, with the last commit 29 days ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/vinkius-labs/mcpfusion

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Fusion

Powered by Claude · Grounded in docs

I know everything about Fusion. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 2 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • !No dynamic code executionSource scan found eval or shell execution. Review how tool inputs reach it before granting credentials.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v5.1.0v5.1.0 — W3C Trace Context correlation + GenAI/OpenInference dual-emit · 20 Sep 2026Monorepo-wide release: all 16 packages move from `5.0.10` to `5.1.0` in lockstep. Only `@mcpfusion/core` changed code; the other 15 packages keep their `^5.0.0` core range, which `5.1.0` satisfies. Added — W3C Trace Context correlation +…
v5.0.10v5.0.10 — Fix grouped description echo and recover thrown classified responses · 17 Sep 2026Fixed — grouped descriptions echoed the tool summary; thrown classified responses were flattened `@mcpfusion/core` — description contamination under `toolExposition: 'grouped'` Impact: when a builder had `.description()` but its actions…
v5.0.9v5.0.9 — Fix edge shim corrupting string literals (global → globalThis) · 10 Sep 2026Fixed — edge shim corrupted string literals (`global` → `globalThis`) @mcpfusion/core — deploy.ts bare-global rewrite Impact: the naive `/\bglobal\b/g` replace over the bundle text matched inside string literals, corrupting every deployed…
v5.0.6v5.0.6 — Fix zod/v4 subpath resolution in edge bundle · 1 Aug 2026Fixed — V8 Isolate (void 0) is not a function / Class extends value undefined @mcpfusion/core — deploy.ts zod subpath resolution edgeStubPlugin(): Now preserves zod subpaths when deduplicating. @modelcontextprotocol/server imports from…
v5.0.5v5.0.5 — Fix zod dedup: Class extends value undefined in V8 isolate · 1 Aug 2026Fixed — V8 Isolate \Class extends value undefined is not a constructor or null\ \@mcpfusion/core\ — \deploy.ts\ zod deduplication \dgeStubPlugin()\: Now deduplicates \zod\ imports in the esbuild bundle. MCPs often declare \zod ^3.x\ in…

README

MCP FUSION

The TypeScript framework for secure, MCP 2.0-native servers.

npm version Downloads TypeScript MCP 2.0 License llms.txt

MCP Fusion is a TypeScript framework that enforces security at the architectural level of every MCP server. Raw data never reaches the LLM without passing through a typed egress firewall. Tools are physically removed from the agent's namespace when the workflow state forbids them. Every behavioral surface is hashed, locked, and auditable in version control.

The framework ships with a SKILL.md — a machine-readable architectural contract. AI coding agents read the Skill and produce correct, governed servers on the first pass.


MCP 2.0 (2026-07-28) — Full Compliance

MCP Fusion is 100% compatible with MCP 2.0 (protocol revision 2026-07-28). Every feature the spec defines is implemented or handled via the MCP SDK v2. Every feature the spec deprecates is deprecated in MCP Fusion.

Implemented MCP 2.0 Features

Feature Status How
Stateless protocol ✅ transport: 'stateless' — per-request serving, no sessions, no initialize handshake, Mcp-Method/Mcp-Name header routing
Multi Round-Trip Requests (MRTR) ✅ requireInput() + readInput() — native InputRequiredResult / resultType: "input_required" model
Request State Sealing ✅ requestStateKey — HMAC-SHA256 sealed state for multi-round elicitation (SEP-2322)
Structured Content ✅ successStructured() + structuredContent field on ToolResponse
Output Schema ✅ outputSchema in compileToolDefinition() wire format
List Caching ✅ ttlMs / cacheScope directly on result root (SEP-2549) — public / private scope
Pagination ✅ cursor / nextCursor on prompts/list (extensible to all list ops)
server/discover ✅ Handled by MCP SDK v2 Server
resultType ✅ Handled by MCP SDK v2 Server ("complete" / "input_required")
Per-request _meta ✅ io.modelcontextprotocol/* fields handled by MCP SDK v2
resources/templates/list ✅ URI template resources with pagination
subscriptions/listen ✅ MCP 2.0 stream-based subscription pattern with filter + acknowledgment
x-mcp-header ✅ .withHeaderParam() on FluentToolBuilder — parameter mirroring to HTTP headers
title & icons ✅ Tool.title, BaseModel.title, Icon domain model, createIcon()
resource_link ✅ Content type in tool results and prompt messages
JSON Schema 2020-12 ✅ Default dialect enforced by MCP SDK v2
Error codes (-32020–-32022) ✅ HeaderMismatch, MissingRequiredClientCapability, UnsupportedProtocolVersion
Protocol version ✅ Defaults to 2026-07-28 in all server metadata (Server Card, introspection)

Deprecated Features (mirrored from MCP 2.0)

All features deprecated by MCP 2.0 (SEP-2577 / SEP-2596) are deprecated in MCP Fusion with @deprecated markers and migration guidance. They remain functional during the deprecation window (earliest removal: 2027-07-28).

Deprecated Feature Migration Path
Roots Pass directories/files via tool parameters, resource URIs, or server configuration
Sampling Integrate directly with LLM provider APIs
Logging (notifications/message) Log to stderr for stdio; use OpenTelemetry (TelemetrySink / DebugObserver)
Dynamic Client Registration Client ID Metadata Documents
HTTP+SSE transport Streamable HTTP (transport: 'http') or stateless (transport: 'stateless')
includeContext values Omit the field or use "none"

📄 Deprecation Registry — full compliance statement and migration guide.


The Skill — AI Writes the Server

MCP Fusion includes a SKILL.md that encodes the entire MVA architecture, security patterns, and governance rules into a format AI coding agents consume directly.

Open your project in Cursor, Claude Code, GitHub Copilot, or Windsurf and describe what you need:

"Build an MCP server for patient records with Prisma. Redact SSN and diagnosis from LLM output. Gate discharge tools until attending physician signs off."

The agent reads the Skill. It produces defineModel() declarations with m.hidden() for sensitive fields, definePresenter() with .redactPII(['*.ssn', '*.diagnosis']) for DLP compliance, FSM state gating via .bindState() for workflow enforcement, and file-based routing under src/tools/. You review the PR.

The Skill is not documentation. It is the security contract. Every server the AI produces inherits the governance stack because the Skill encodes Presenters, state machines, and lockfile generation as mandatory structural patterns.

📄 SKILL.md · llms.txt (complete API reference for LLM consumption)


Security Architecture

Egress Firewall — Presenter

The Presenter validates every response through a Zod schema compiled from defineModel(). Undeclared fields are stripped in RAM before serialization. PII is redacted via V8-optimized fast-redact compiled functions. Rules travel with data, not in the system prompt. The Late Guillotine pattern applies redaction after UI blocks render — charts and suggestions always see full data, the wire never does.

const PatientPresenter = createPresenter('Patient')
    .schema(PatientModel)
    .redactPII(['*.ssn', '*.diagnosis'])
    .rules((p) => [
        p.status === 'critical' ? 'PRIORITY: Patient is critical.' : null,
    ])
    .suggest((p) => p.status === 'admitted'
        ? [suggest('ward.discharge', 'Begin discharge protocol')]
        : []);

The Presenter also runs a PromptFirewall — an LLM-as-Judge that evaluates dynamically generated system rules for prompt injection before they reach the agent. Fail-closed by default.

State Gate — FSM

Tools bound to FSM states are physically removed from tools/list when the current state does not match. The LLM cannot call what does not exist in its namespace. Powered by XState v5 with manual fallback when XState is not installed.

const gate = f.fsm({
    id: 'discharge', initial: 'admitted',
    states: {
        admitted:    { on: { PHYSICIAN_SIGNOFF: 'approved' } },
        approved:    { on: { DISCHARGE: 'discharged' } },
        discharged:  { type: 'final' },
    },
});

export default f.mutation('ward.discharge')
    .bindState('approved', 'DISCHARGE')
    .handle(async (input, ctx) => ctx.db.patients.discharge(input.id));
State Visible tools
admitted ward.view, ward.update_vitals
approved ward.discharge, ward.view
discharged ward.view

Serverless-compatible: FsmStateStore persists state to Redis/KV across request boundaries. Each request gets an isolated gate.clone().

Governance Stack

Eight introspection modules that make behavioral changes visible and auditable:

Module What it does
ToolContract Materializes the complete behavioral surface of each tool
BehaviorDigest SHA-256 hash of the behavioral surface
CapabilityLockfile mcpfusion.lock — git-diffable behavioral snapshot, CI gate via fusion lock --check
CryptoAttestation HMAC-SHA256 runtime verification — fail-fast if behavioral digest drifts
ContractDiff Per-field diff between lockfile versions
EntitlementScanner Static analysis of handler source for I/O capabilities (fs, network, subprocess, eval) with evasion heuristics
SemanticProbe LLM-as-Judge for detecting semantic drift in handler output
TokenEconomics Context window inflation risk profiling

Sandbox

SandboxEngine executes LLM-provided JavaScript in a sealed V8 isolate. No process, require, fs, or network access. One isolate per engine, fresh empty context per execution. Memory-limited, timeout-enforced, output-capped, abort-signal-compatible.


Three Pathways

1. YAML — Zero Code

version: "1.0"
server:
  name: "github-tools"

connections:
  github:
    type: rest
    base_url: "https://api.github.com"
    auth:
      type: bearer
      token: "${SECRETS.GITHUB_TOKEN}"

tools:
  - name: search_repos
    description: "Search GitHub repositories"
    instruction: "Use for finding projects by topic or keyword."
    rules:
      - "Max 10 results per query"
    parameters:
      query: { type: string, required: true }
    execute:
      connection: github
      method: GET
      path: "/search/repositories"
      query: { q: "{{query}}", per_page: "10" }
    response:
      extract: ["items[].{full_name, description, stargazers_count, html_url}"]
mcpfusion yaml dev

2. Typed MVA — Full Control

export const InvoiceModel = defineModel('Invoice', m => {
    m.casts({
        id:           m.string(),
        amount_cents: m.number('CRITICAL: in CENTS. Divide by 100 for display.'),
        status:       m.enum('Status', ['paid', 'pending', 'overdue']),
    });
    m.hidden(['password_hash', 'internal_margin']);
});

export const InvoicePresenter = definePresenter({
    name: 'Invoice',
    schema: InvoiceModel,
    suggestActions: (inv) => inv.status === 'pending'
        ? [{ tool: 'billing.pay', reason: 'Process payment', args: { id: inv.id } }]
        : [],
});

export default f.query('billing.get_invoice')
    .describe('Get an invoice by ID')
    .withString('id', 'Invoice ID')
    .returns(InvoicePresenter)
    .handle(async (input, ctx) => ctx.db.invoices.findUnique({ where: { id: input.id } }));

3. FSM — Deterministic Workflow Enforcement

State-gated tool discovery. Tools appear and disappear based on the current state.


Get Started

npx @mcpfusion/core create my-server
cd my-server && npm run dev

File-based routing — drop a file, restart, and it's a live MCP tool:

src/tools/
├── billing/
│   ├── get_invoice.ts  → billing.get_invoice
│   └── pay.ts          → billing.pay
└── users/
    └── list.ts         → users.list

Deploy

mcpfusion deploy                  # Vinkius Edge (V8 Isolate)
vercel deploy                # Vercel Functions
wrangler deploy              # Cloudflare Workers

Scaffold

mcpfusion create my-server                           # Vanilla
mcpfusion create my-api --vector prisma              # Prisma + field-level security
mcpfusion create ops-bridge --vector n8n             # n8n workflow bridge
mcpfusion create petstore --vector openapi           # OpenAPI → MCP
mcpfusion create my-server --target vercel --yes     # Vercel Functions
mcpfusion create my-server --target cloudflare --yes # Cloudflare Workers

Ecosystem

Core

Package Purpose
@mcpfusion/core Framework core — Presenters, Fluent API, middleware, routing, governance
@mcpfusion/yaml Declarative YAML engine
@mcpfusion/swarm Multi-agent orchestration — HMAC-SHA256 delegation, namespace isolation, W3C tracing
@mcpfusion/a2a A2A Protocol Bridge — Agent Cards, task delegation
@mcpfusion/skills Progressive SKILL.md disclosure for agents
@mcpfusion/testing In-memory MVA pipeline testing
@mcpfusion/inspector Real-time TUI dashboard

Adapters

Package Target
@mcpfusion/vercel Vercel Functions (Edge / Node.js)
@mcpfusion/cloudflare Cloudflare Workers

Generators & Connectors

Package Purpose
@mcpfusion/openapi-gen OpenAPI 3.x / Swagger 2.0 → MCP tools
@mcpfusion/prisma-gen Prisma schema → CRUD tools with field-level security
@mcpfusion/n8n n8n workflows → MCP tools
@mcpfusion/aws AWS Lambda & Step Functions → MCP tools

Security & Auth

Package Purpose
@mcpfusion/oauth RFC 8628 Device Flow
@mcpfusion/jwt JWT verification — HS256 / RS256 / ES256 + JWKS
@mcpfusion/api-key API key validation with timing-safe comparison

Ship Your MCP Server to the Same Infrastructure — Free

Your server runs alongside Salesforce, Stripe, OpenAI, and 4,000+ others. V8 sandbox isolation, DLP, audit trails, and kill switch — all included. No credit card required.

  1. Sign up at vinkius.com
  2. Create an App Connector in the dashboard
  3. Copy your deploy token from the connector settings
  4. Build your MCP server with MCP Fusion
  5. Deploy
mcpfusion deploy

Your MCP server is live.

Powering Vinkius — 4,000+ MCP Servers in Production

Every MCP server on vinkius.com is built with MCP Fusion.

Salesforce (12 tools), Slack (8 tools), Stripe, OpenAI, Gmail, WhatsApp Business, Instagram, PayPal, CrowdStrike Falcon, SAP S/4HANA, Workday, DocuSign, Zendesk, Okta, Twilio, Tableau, HubSpot, Shopify, WooCommerce, Airbnb, Tesla Fleet API, NVIDIA AI, Mistral AI, Anthropic, Box, Meta Ads, X Ads, Reddit, Notion, Supabase, Pinecone, Datadog, Sentry — and thousands more.

Four verticals. 36+ subcategories. All governed.

AI Stack — Cognition & RAG, Code Execution, Databases, Observability, DevOps, AI Models, Agent Coordination, Security, Payments & Infra.

Enterprise — CRM, ERP, HR, Legal & Compliance, Customer Support, Marketing, BI & Analytics, Identity & IAM, Communications, E-Commerce, Accounting, Project Management.

Industries — Hospitality, Healthcare, Energy & Commodities, Construction, Real Estate, Agriculture, Wine & Spirits, Education, Logistics, Insurance, Fitness, Travel.

World Data — Economy & Finance, Central Banks, Securities & Markets, Weather & Climate, Demographics, Space & Astronomy, Health & Medicine, Environment, Energy, Food & Nutrition, Government, Trade & Labor.

Every server runs inside V8 isolate sandboxes on AWS. Ed25519 signed audit chains. Sub-40ms cold starts. DLP redaction on every response. Kill switch for instant shutdown. Every tool call logged and auditable.

vinkius.com/discover — Browse the catalog. vinkius.com/developers — Build your own with MCP Fusion.

Documentation

mcpfusion.vinkius.com · llms.txt · SKILL.md

Contributing

See CONTRIBUTING.md for development setup and guidelines.

Security

See SECURITY.md for reporting vulnerabilities.

License

Apache 2.0

README fetched from the repository 2 days ago. The original is authoritative.

Questions

About Fusion

How do I install Fusion?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Fusion safe to use with an AI agent?

Its trust score is 88 out of 100 (excellent). It passes 4 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Fusion still maintained?

Yes — the latest release is v5.1.0 (20 Sep 2026), and the last commit was 29 days ago. The repository has 255 stars and 7 open issues.