Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dynamic-mcp

The Tool Runtime for AI Agents — One MCP Endpoint. Infinite Tools.

A Claude Code plugin that connects Claude to BLLE Dynamic MCP — a hosted Model Context Protocol server that lets your agents discover, run, and write their own tools, with an encrypted secret vault and persistent file storage built in. Connect in one line; sign in with OAuth.

Why Dynamic MCP

Every AI-agent project rebuilds the same plumbing: a code-execution sandbox, a secret store, file persistence between runs, OAuth flows, a tool registry — one MCP server per vendor. Three months in, half of it has drifted and nobody remembers which cron does what.

Dynamic MCP is that plumbing, built once and run in production — so every agent gets it for free. It's a complete tool runtime, not a library you bolt on.

What you get

  • Agent-authored tools — your agent writes a tool in JS/TS (esm.sh imports, global fetch); it's live the second it's saved. No SDK, no deploy, no restart. A tool is just code: write it, save it, run it.
  • Sandboxed execution — Deno runtime, TypeScript-native, no FFI / shell / ambient writes. 60s default, 5-min hard cap, streaming logs.
  • Encrypted secret vault — AES-256-GCM at rest, PBKDF2 100k iterations. Tools read decrypted values as context.secrets.NAME; never ciphertext, never keys.
  • Persistent /workspace — per-user, S3-backed filesystem via idiomatic Deno.* APIs. writeTextFile now, it's there next run. 10 MB writes, no setup.
  • Real-time streaming — every console.log arrives over MCP as an SSE notification. Agents see progress as it happens, not an opaque "running…".
  • Progressive-discovery docs — slug-addressable docs:// resources (support/policies/refunds). Agents pull only the leaf they need — token- efficient by design, a tree instead of a megaprompt.
  • Standard MCP + OAuth 2.0 + PKCE — Streamable HTTP transport. Works with Claude Code, Claude Desktop, Cursor, n8n, the AI SDK, or your own client.
  • Per-user isolation — every tool, secret, and file is scoped to your account. Stateless server, horizontally scalable.

Eight built-in meta-tools (Search_Tools, Run_tool, Create_Tool, Update_Tool, Delete_Tool, Get_Tools, Execute_Code, Manage_Secrets) plus every custom tool you've written show up the moment you connect.

What this plugin bundles

  1. .mcp.json — registers the DynamicMCP HTTP server (OAuth, no token in the repo).
  2. skills/dynamic-mcp/ — a skill teaching how to work with the runtime: moving files/code in and out of /workspace and /lib, authoring tools as code, the shim-over-/lib pattern, sandbox gotchas, secrets, and background jobs.

Install

This repo is also a plugin marketplace, so add it once then install:

/plugin marketplace add bookatechie/plugin
/plugin install dynamic-mcp@bookatechie

Works in the terminal CLI, the IDE extensions, and the Claude Desktop app (local/SSH sessions — the desktop plugin browser is under the + button).

Cloud sessions (claude.ai/code)

Cloud sessions don't have the interactive /plugin UI — declare the plugin in the repo's .claude/settings.json instead, and it installs at session start:

{
  "extraKnownMarketplaces": {
    "bookatechie": { "source": { "source": "github", "repo": "bookatechie/plugin" } }
  },
  "enabledPlugins": { "dynamic-mcp@bookatechie": true }
}

Sign in (OAuth)

The server authenticates via OAuth 2.0 (authorization code + PKCE) — the flow Claude Desktop and Claude Code use natively. There is no token to configure: the .mcp.json ships only the URL, and on first connect Claude detects the 401 and runs the sign-in flow for you.

  1. After installing, run /mcp (or just trigger a DynamicMCP tool).
  2. Claude opens a browser to https://api.blle.co/authorize.
  3. Sign in with Google / GitHub or your BLLE email + password.
  4. Claude stores the resulting token securely (system keychain) and reconnects.

Because auth is OAuth, this works identically across the terminal CLI, IDE extensions, and the Claude Desktop app (local/SSH sessions) — no shell env var required, and no secret is ever committed to this repo.

Do not add a static Authorization header to .mcp.json. If a header is present and the server rejects it, Claude reports a failed connection instead of falling back to the OAuth flow.

Load the tools

The DynamicMCP tools are deferred. In a session:

ToolSearch: query="select:mcp__DynamicMCP__Run_tool,mcp__DynamicMCP__Search_Tools,mcp__DynamicMCP__Get_Tools,mcp__DynamicMCP__Execute_Code,mcp__DynamicMCP__Update_Tool,mcp__DynamicMCP__Create_Tool,mcp__DynamicMCP__Manage_Secrets"

See the bundled skill for the full workflow.

Updating

This plugin sets an explicit version in plugin.json, so installed users only pick up changes when the version is bumped — pushing new commits alone won't propagate (Claude caches the same version string). Bump version (semver) and add a CHANGELOG.md entry per release; users then run /plugin update dynamic-mcp@bookatechie (restart to apply). See CHANGELOG.md.

License

MIT — see LICENSE.

About

Plugin for AI Clients

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors