Manifest MCP
MCP servers for Manifest Network and Cosmos SDK chains.
Exposes on-chain queries and transactions as Model Context Protocol tools, so any MCP-compatible client (Claude Desktop, Cursor, etc.) can interact with the blockchain through natural language.
Building a TypeScript app (not an MCP integration)? Use @manifest-network/manifest-sdk — the app-building SDK that composes the chain + Fred behind one typed client. See its README and the SDK cookbook.
Monorepo structure
packages/
core/ @manifest-network/manifest-mcp-core Shared library: Cosmos logic, on-chain tool functions, server utilities
chain/ @manifest-network/manifest-mcp-chain MCP server for chain operations (6 tools, +1 optional faucet)
lease/ @manifest-network/manifest-mcp-lease MCP server for on-chain lease operations (8 tools)
fred/ @manifest-network/manifest-mcp-fred MCP server for provider/Fred operations (12 tools)
cosmwasm/ @manifest-network/manifest-mcp-cosmwasm MCP server for MFX-to-PWR converter (2 tools)
agent-core/ @manifest-network/manifest-agent-core TypeScript orchestration surface (deploy / manage-domain / troubleshoot / close-lease)
agent/ @manifest-network/manifest-mcp-agent MCP server wrapping agent-core via MCP elicitation (5 orchestrated tools)
node/ @manifest-network/manifest-mcp-node CLI entry points + encrypted keyfile wallet
sdk/ @manifest-network/manifest-sdk App-building SDK: aggregates core + fred + agent-core behind one typed surface (for TS apps, not MCP)
Dependency direction: node -> {chain, lease, fred, cosmwasm, agent} -> core (node also depends on core directly); agent -> agent-core -> {core, fred}; sdk -> {core, fred, agent-core} (never reverse).
Prerequisites
- Node.js >= 22.19.0 (declared via
engineson every package) - npm >= 10 (ships with Node 22+)
Quick start
# Install dependencies
npm install
# Build all packages
npm run build
# Generate an encrypted wallet keyfile (interactive)
node packages/node/dist/chain.js keygen
The five CLI binaries (manifest-mcp-chain, …) are bin names shipped by
@manifest-network/manifest-mcp-node, not package names. To run one without a clone, name the package
and select the bin — npx <bin-name> on its own resolves the bin name as a package and fails:
npx -y -p @manifest-network/manifest-mcp-node manifest-mcp-chain keygen
See packages/node/README.md for wallet setup and MCP client integration.
MCP tools
Chain server (manifest-mcp-chain) -- 6 tools (+1 optional)
Lease server (manifest-mcp-lease) -- 8 tools
Fred server (manifest-mcp-fred) -- 12 tools
The Fred server also exposes 3 MCP resources (manifest://leases/active, manifest://leases/recent, manifest://providers) and 3 prompts (deploy-containerized-app, diagnose-failing-app, shutdown-all-leases).
CosmWasm server (manifest-mcp-cosmwasm) -- 2 tools
Agent server (manifest-mcp-agent) -- 5 orchestrated tools
Wraps @manifest-network/manifest-agent-core orchestration via MCP elicitation — bidirectional plan / confirm / recovery prompts flow over standard MCP wire. The broadcasting tools require an elicitation-capable host (Claude Code ≥ 2.1.76); the read-only tools (lookup_custom_domain_orchestrated, troubleshoot_deployment_orchestrated) run on any host.
Modules reachable via the chain server's cosmos_query / cosmos_tx (enumerate with list_modules): bank, staking, distribution, gov, billing, sku, group, wasm, poa, tokenfactory, ibc-transfer, authz, feegrant, auth (query only), mint (query only), manifest (tx only).
Documentation
Development
For a deeper look at the codebase design, see ARCHITECTURE.md.
E2E tests require the Linux/systemd/XFS setup, which also documents complete disposable resets.
# Install dependencies and build all packages
npm ci
npm run build
# Type-check workspace packages and the E2E suite
npm run lint
npm run lint:e2e
# Run unit tests
npm run test
# Run E2E tests with the native stateful backend
npm run check:e2e-env
docker compose -f e2e/docker-compose.yml build
bash e2e/scripts/devnet.sh up
npm run test:e2e
bash e2e/scripts/devnet.sh down # preserve journals and XFS identity
# Code formatting and import sorting (Biome)
npm run check # check only
npm run check:fix # auto-fix
Adding a new module
- Create a query handler in
packages/core/src/queries/<module>.tsimplementingrouteXxxQuery() - Create a transaction handler in
packages/core/src/transactions/<module>.tsimplementingrouteXxxTransaction() - Register both in the
QUERY_MODULES/TX_MODULESmaps inpackages/core/src/modules.ts
The module is then automatically available through the cosmos_query and cosmos_tx tools, and discoverable via list_modules and list_module_subcommands.
Releasing
All nine packages are versioned in lockstep and published together.
Setup (one-time)
The release workflow uses npm OIDC trusted publishing (provenance). No npm token is needed as a repository secret -- authentication is handled automatically via GitHub's OIDC identity provider. Ensure the npm package is linked to the repository for provenance to work.
Publishing a release
# 1. Bump versions (updates all package.json files and syncs the lockfile)
npm run release:version -- 0.2.0
# 2. Commit and tag
git add -A
git commit -m "chore: release v0.2.0"
git tag v0.2.0
# 3. Push (triggers the release workflow)
git push origin main --tags
Pushing a vMAJOR.MINOR.PATCH tag triggers the Release workflow, which:
- Validates the tag version matches all
package.jsonfiles - Builds, type-checks, runs Biome checks, and tests
- Publishes all packages to npm (with provenance) in dependency order:
core → chain → lease → fred → cosmwasm → agent-core → agent → node → sdk(the release workflow is the source of truth for the list and order) - Creates a GitHub Release with auto-generated notes (best-effort — publish succeeds even if this fails)
License
MIT