A dual-purpose toolkit that bridges Midnight blockchain development with Next.js tooling. On the blockchain side, you get contract compilation, deployment, wallet management, and token transfers for the Midnight Network, plus documentation search across official docs. The Next.js half gives you dev server discovery, runtime diagnostics, browser automation via Playwright, and upgrade utilities for Next.js 16 migrations. Use it when you're building privacy-focused dApps on Midnight and want your AI assistant to handle both smart contract operations and frontend development tasks without switching contexts. Ships with npx for zero-install usage across Claude, Cursor, Continue.dev, and other MCP-compatible assistants.
A Model Context Protocol (MCP) server combining Midnight Network blockchain development tools with Next.js DevTools for building decentralized applications.
Compatible with all MCP-enabled AI assistants: Claude, GitHub Copilot, Cursor, Windsurf, Codeium, Continue.dev, Zed, Sourcegraph Cody, and more.
This MCP server works with any AI assistant that supports the Model Context Protocol:
| AI Assistant | Platform | Configuration |
|---|---|---|
| Claude | Desktop App, VS Code | Native MCP support |
| GitHub Copilot | VS Code, JetBrains | MCP extension |
| Cursor | IDE | Built-in MCP support |
| Windsurf | IDE | Built-in MCP support |
| Codeium | VS Code, JetBrains | MCP integration |
| Continue.dev | VS Code, JetBrains | MCP config file |
| Zed | IDE | MCP support |
| Sourcegraph Cody | VS Code | MCP extension |
midnight_init - Initialize development contextmidnight_compile_contract - Compile Compact contracts to TypeScript/ZK artifactsmidnight_analyze_contract - Static analysis for contractsmidnight_deploy_contract - Deploy contracts to the networkmidnight_call_contract - Execute circuit calls on deployed contractsmidnight_scaffold_project - Create new dApp projects from templatesmidnight_create_wallet - Generate new wallet with seed phrasemidnight_wallet_state - Get detailed wallet state and balancesmidnight_transfer_tokens - Transfer tDUST tokensmidnight_get_balance - Query token balancesmidnight_network_status - Check network health (Indexer, Proof Server, Node)midnight_get_block - Query blockchain blocksmidnight_get_transaction - Query transaction detailsmidnight_check_versions - Check for Midnight package updatesmidnight_search_docs - Search Midnight documentationmidnight-fetch-docs - Fetch specific documentation pagesmidnight-sync-docs - Sync documentation from official repomidnight-docs-status - Check documentation sync statusmidnight-list-docs - List available documentation sourcesinit - Initialize Next.js development contextnextjs_docs - Search Next.js documentationnextjs_index - Discover running dev serversnextjs_call - Execute runtime diagnostic toolsbrowser_eval - Browser automation with Playwrightupgrade_nextjs_16 - Next.js 16 upgrade guideenable_cache_components - Cache Components migration# Clone the repository
git clone https://github.com/your-username/midnight-nextjs-mcp.git
cd midnight-nextjs-mcp
# Install dependencies
pnpm install
# Build
pnpm build
The easiest way to use this MCP server is via npx — no installation required:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
The MCP configuration format is standardized across most AI assistants. Below are platform-specific examples:
Most MCP clients use this standard JSON format. Add to your client's MCP configuration file:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
Add to your VS Code settings.json or workspace .vscode/mcp.json:
{
"mcp.servers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
Or for Claude extension specifically:
{
"claude.mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
Edit ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
Add to your Cursor MCP configuration (.cursor/mcp.json in your project or global settings):
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
Add to your Windsurf MCP settings:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
Add to ~/.continue/config.json or your project's .continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"name": "midnight-nextjs-mcp",
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
]
}
}
Add to your Zed settings (~/.config/zed/settings.json on Linux, ~/Library/Application Support/Zed/settings.json on macOS):
{
"context_servers": {
"midnight-nextjs-mcp": {
"command": {
"path": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
}
Add to your Cody MCP configuration:
{
"cody.experimental.mcp.servers": {
"midnight-nextjs-mcp": {
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
For AI assistants in JetBrains IDEs that support MCP, add to your MCP configuration:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"]
}
}
}
If you prefer a global install instead of npx:
npm install -g midnight-nextjs-mcp
Then configure:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "midnight-nextjs-mcp"
}
}
}
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "node",
"args": ["/path/to/midnight-nextjs-mcp/dist/index.js"]
}
}
}
Run the MCP server in a Docker container:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "fractionestate/midnight-nextjs-mcp:latest"]
}
}
}
# Enable both tool categories (default)
npx midnight-nextjs-mcp@latest
# Disable Midnight tools (Next.js only)
npx midnight-nextjs-mcp@latest --no-midnight
# Disable Next.js tools (Midnight only)
npx midnight-nextjs-mcp@latest --no-nextjs
# Check package versions on startup
npx midnight-nextjs-mcp@latest --check-versions
# Set version polling interval (default 24 hours)
npx midnight-nextjs-mcp@latest --poll-interval=12
midnight-nextjs-mcp/
├── src/
│ ├── index.ts # Server entry point
│ ├── tools/
│ │ ├── index.ts # Unified tool registry
│ │ ├── midnight/ # Midnight Network tools
│ │ │ ├── init.ts
│ │ │ ├── network-status.ts
│ │ │ ├── get-balance.ts
│ │ │ ├── get-block.ts
│ │ │ ├── get-transaction.ts
│ │ │ ├── search-docs.ts
│ │ │ ├── scaffold-project.ts
│ │ │ ├── compile-contract.ts
│ │ │ └── analyze-contract.ts
│ │ └── nextjs/ # Next.js DevTools
│ │ ├── init.ts
│ │ ├── nextjs-docs.ts
│ │ ├── nextjs_index.ts
│ │ ├── nextjs_call.ts
│ │ ├── browser-eval.ts
│ │ ├── upgrade-nextjs-16.ts
│ │ └── enable-cache-components.ts
│ ├── providers/ # Midnight API providers
│ │ ├── index.ts
│ │ ├── indexer.ts # GraphQL indexer client
│ │ ├── proof-server.ts # Proof generation client
│ │ └── node.ts # Node RPC client
│ ├── resources/ # MCP resources
│ │ ├── (midnight-compact)/ # Compact language docs
│ │ ├── (midnight-sdk)/ # SDK documentation
│ │ ├── (cache-components)/ # Next.js cache docs
│ │ └── ...
│ ├── prompts/ # MCP prompts
│ │ ├── create-midnight-contract.ts
│ │ ├── upgrade-nextjs-16.ts
│ │ └── enable-cache-components.ts
│ └── types/ # TypeScript definitions
│ ├── midnight.ts
│ └── mcp.ts
├── package.json
└── README.md
You can pass environment variables to the MCP server in your configuration:
{
"mcpServers": {
"midnight-nextjs-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "midnight-nextjs-mcp@latest"],
"env": {
"MIDNIGHT_NETWORK": "testnet",
"MIDNIGHT_INDEXER_URL": "https://indexer.testnet.midnight.network/graphql"
}
}
}
}
# Midnight Network (optional, defaults to testnet)
MIDNIGHT_NETWORK=testnet
MIDNIGHT_INDEXER_URL=https://indexer.testnet.midnight.network/graphql
MIDNIGHT_PROOF_SERVER_URL=https://proof-server.testnet.midnight.network
MIDNIGHT_NODE_URL=https://rpc.testnet.midnight.network
| Network | Indexer | Proof Server |
|---|---|---|
| Testnet | indexer.testnet.midnight.network | proof-server.testnet.midnight.network |
| Devnet | localhost:8080 | localhost:6300 |
The server exposes documentation resources:
midnight://compact/overview - Compact language introductionmidnight://compact/reference - Complete syntax referencemidnight://sdk/overview - Midnight.js SDK guidenextjs-docs://llms-index - Documentation indexcache-components://overview - Cache Components guide# Watch mode
pnpm dev
# Type check
pnpm typecheck
# Run tests
pnpm test
# Build
pnpm build
Contributions welcome! Please read the contributing guidelines first.
MIT License - see LICENSE for details.
Built with ❤️ for the Midnight and Next.js communities.
GITHUB_TOKENsecretGitHub Personal Access Token - increases API rate limits
LOG_LEVELdefault: infoLogging verbosity level
MIDNIGHT_LOCALdefault: falseEnable local mode with ChromaDB for offline semantic search