https://github.com/Olanetsoft/midnight-mcp
Midnight MCP server giving AI assistants access to Midnight blockchain — search contracts, analyze code, explore docs
https://github.com/Olanetsoft/midnight-mcp
ai ai-agent artificial-intelligence blockchain claude compact cursor javascript mcp mcp-server midnightntwrk smart-contracts typescript zero-knowledge zk
Last synced: 3 months ago
JSON representation
Midnight MCP server giving AI assistants access to Midnight blockchain — search contracts, analyze code, explore docs
- Host: GitHub
- URL: https://github.com/Olanetsoft/midnight-mcp
- Owner: Olanetsoft
- License: mit
- Created: 2025-12-18T18:15:03.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-03-26T10:38:05.000Z (3 months ago)
- Last Synced: 2026-03-27T03:54:56.701Z (3 months ago)
- Topics: ai, ai-agent, artificial-intelligence, blockchain, claude, compact, cursor, javascript, mcp, mcp-server, midnightntwrk, smart-contracts, typescript, zero-knowledge, zk
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/midnight-mcp
- Size: 669 KB
- Stars: 24
- Watchers: 1
- Forks: 9
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- midnight-awesome-dapps - Midnight MCP - MCP server giving AI assistants access to the Midnight blockchain — search contracts, analyze code, explore docs (Developer Tools)
README
# Midnight MCP Server
[](https://www.npmjs.com/package/midnight-mcp)
[](https://npm-stat.com/charts.html?package=midnight-mcp)
[](./LICENSE)
[](https://www.typescriptlang.org/)
[](https://github.com/Olanetsoft/midnight-mcp/actions/workflows/ci.yml)
MCP server that gives AI assistants access to Midnight blockchain—search contracts, analyze code, and explore documentation.
This project extends the Midnight Network with additional developer tooling.
## Requirements
- **Node.js 20+** (LTS recommended)
Check your version: `node --version`
Using nvm? Click for Claude Desktop setup
If you use nvm, Claude Desktop may not see your nvm-managed Node. Use this config instead:
```json
{
"mcpServers": {
"midnight": {
"command": "/bin/sh",
"args": [
"-c",
"source ~/.nvm/nvm.sh && nvm use 20 >/dev/null 2>&1 && npx -y midnight-mcp@latest"
]
}
}
}
```
## Quick Start
### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"midnight": {
"command": "npx",
"args": ["-y", "midnight-mcp@latest"]
}
}
}
```
**Config file locations:**
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
### Cursor
One-click install:
[](https://cursor.com/en-US/install-mcp?name=midnight&config=eyJjb21tYW5kIjoibnB4IC15IG1pZG5pZ2h0LW1jcEBsYXRlc3QifQ==)
Or manually add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"midnight": {
"command": "npx",
"args": ["-y", "midnight-mcp@latest"]
}
}
}
```
### VS Code Copilot
Add to `.vscode/mcp.json` or use Command Palette: `MCP: Add Server` → "command (stdio)" → `npx -y midnight-mcp@latest`
### Windsurf
Add to `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"midnight": {
"command": "npx",
"args": ["-y", "midnight-mcp@latest"]
}
}
}
```
**No API keys required.** Restart your editor after adding the config.
> **Why `@latest`?** Unlike cached npx packages that never auto-update, `@latest` ensures you get new features and fixes on each restart. If upgrading from an older config without `@latest`, also clear your npx cache: `rm -rf ~/.npm/_npx`
---
## What's Included
### 29 Tools
| Category | Tools | Description |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| **Search** | `search-compact`, `search-typescript`, `search-docs`, `fetch-docs` | Semantic search + live docs fetching |
| **Analysis** | `analyze-contract`, `explain-circuit`, `extract-contract-structure`, `compile-contract` | Static analysis + real compilation |
| **Repository** | `get-file`, `list-examples`, `get-latest-updates` | Access files and examples |
| **Versioning** | `get-version-info`, `check-breaking-changes`, `get-migration-guide`, `get-file-at-version`, `compare-syntax`, `get-latest-syntax` | Version tracking and migration |
| **AI Generation** | `generate-contract`, `review-contract`, `document-contract` | AI-powered code generation _(requires sampling)_ |
| **Compound** | `upgrade-check`, `get-repo-context` | Multi-step operations _(saves 50-70% tokens)_ |
| **Health** | `health-check`, `get-status`, `check-version` | Server status and version checking |
| **Discovery** | `list-tool-categories`, `list-category-tools`, `suggest-tool` | Explore available tools and get recommendations |
All tools are prefixed with `midnight-` (e.g., `midnight-search-compact`).
### Real Contract Compilation
The `midnight-compile-contract` tool validates Compact code using a hosted compiler service:
```
✅ Compilation successful (Compiler v0.29.0) in 2841ms
```
- **Fast mode** (`skipZk=true`): Syntax validation in ~1-2 seconds
- **Full mode** (`fullCompile=true`): Complete ZK circuit generation in ~10-30 seconds
- **Automatic fallback**: Falls back to static analysis if the compiler service is unavailable
This catches semantic errors that static analysis misses (sealed fields, disclose rules, type mismatches).
### MCP Capabilities
| Capability | Feature |
| --------------- | ----------------------------------------------- |
| **Tools** | 29 tools with `listChanged` notifications |
| **Resources** | 9 embedded resources with subscription support |
| **Prompts** | 5 workflow prompts |
| **Logging** | Client-controllable log level |
| **Completions** | Autocomplete for prompt arguments |
| **Progress** | Real-time progress for compound tools |
| **Sampling** | AI-powered generation (when client supports it) |
### 9 Embedded Resources
Quick references available offline:
- Compact syntax guide (v0.16-0.21)
- SDK API reference
- OpenZeppelin contracts
- Tokenomics overview
- Wallet integration
- Common errors & solutions
### Static Analysis
`extract-contract-structure` catches common mistakes before compilation:
| Check | Severity | Description |
| ------------------------- | -------- | ------------------------------------------------------- |
| `deprecated_ledger_block` | P0 | Catches `ledger { }` → use `export ledger field: Type;` |
| `invalid_void_type` | P0 | Catches `Void` → use `[]` (empty tuple) |
| `invalid_pragma_format` | P0 | Catches old pragma → use `>= 0.16 && <= 0.21` |
| `unexported_enum` | P1 | Enums need `export` for TypeScript access |
| `module_level_const` | P0 | Use `pure circuit` instead |
| + 10 more checks | P1-P2 | Overflow, division, assertions, etc. |
### 5 Prompts
- `create-contract` — Generate new contracts
- `review-contract` — Security and code review
- `explain-concept` — Learn Midnight concepts
- `compare-approaches` — Compare implementation patterns
- `debug-contract` — Troubleshoot issues
---
## Indexed Repositories
The API indexes **102+ Midnight repositories** from the entire Midnight ecosystem:
| Category | Count | Key Repositories |
| ------------------------ | ----- | -------------------------------------------------------------------------------- |
| **Compact Language** | 6 | `compact`, `compact-lsp`, `compact-tree-sitter`, `compact-zed` |
| **SDKs & APIs** | 5 | `midnight-js`, `midnight-sdk`, `midnight-wallet`, `midnight-dapp-connector` |
| **Core Infrastructure** | 9 | `midnight-node`, `midnight-indexer`, `midnight-ledger`, `midnight-zk` |
| **ZK & Cryptography** | 6 | `midnight-trusted-setup`, `fri`, `galois_recursion`, `pluto_eris` |
| **Documentation** | 5 | `midnight-docs`, `midnight-improvement-proposals`, `midnight-architecture` |
| **Examples & Templates** | 8 | `example-counter`, `example-bboard`, `example-dex`, `example-DAO` |
| **Identity** | 5 | `midnight-did`, `midnight-did-resolver`, `midnight-verifiable-credentials` |
| **Developer Tools** | 4 | `setup-compact-action`, `upload-sarif-github-action`, `midnight-dev-utils` |
| **Solutions & Apps** | 7 | `midnight-solutions`, `midnight-website-next`, `nightcap`, `ocp` |
| **Glacier Drop** | 15 | `midnight-glacier-drop-tools`, `gd-claim-api`, `gd-claim-portal` |
| **Partners** | 14 | OpenZeppelin, BrickTowers, MeshJS, PaimaStudios, hackathon winners |
| **Other** | 18+ | Contracts, bridges, token distribution, monitoring, QA tools, community projects |
All **non-archived** repositories from the `midnightntwrk` organization plus community partners. See [api/README.md](api/README.md#indexed-repositories-102) for the complete list.
---
## Advanced Configuration
### HTTP Mode
Run as an HTTP server for web integrations or remote deployment:
```bash
# Start HTTP server on port 3000
npx midnight-mcp --http --port 3000
```
Endpoints:
- `/health` - Health check
- `/mcp` - Streamable HTTP (MCP protocol)
- `/sse` - Server-Sent Events
### CLI Options
```bash
npx midnight-mcp --help
Options:
--stdio Use stdio transport (default, for Claude Desktop)
--http Use HTTP transport with SSE support
--port HTTP port (default: 3000)
--json Output in JSON (default: YAML for better LLM efficiency)
--github-token GitHub token (overrides GITHUB_TOKEN env var)
-h, --help Show help
-v, --version Show version
```
> **Why YAML by default?** YAML is ~20-30% more token-efficient than JSON, which means AI assistants can process more context from tool responses.
### Local Mode
Run everything locally for privacy or offline use:
```json
{
"mcpServers": {
"midnight": {
"command": "npx",
"args": ["-y", "midnight-mcp@latest"],
"env": {
"MIDNIGHT_LOCAL": "true",
"OPENAI_API_KEY": "sk-...",
"CHROMA_URL": "http://localhost:8000"
}
}
}
}
```
Requires ChromaDB (`docker run -d -p 8000:8000 chromadb/chroma`) and OpenAI API key.
### GitHub Token
Add `"GITHUB_TOKEN": "ghp_..."` for higher GitHub API rate limits (60 → 5000 requests/hour).
---
## Developer Setup
```bash
git clone https://github.com/Olanetsoft/midnight-mcp.git && cd midnight-mcp
npm install && npm run build && npm test
# Lint & format
npm run lint # ESLint (typescript-eslint)
npm run lint:fix # Auto-fix lint issues
npm run format # Prettier
```
The hosted API runs on Cloudflare Workers + Vectorize. See [api/README.md](./api/README.md) for backend details.
---
## Links
- [Midnight Docs](https://docs.midnight.network)
- [MCP Spec](https://modelcontextprotocol.io)
- [Midnight GitHub](https://github.com/midnightntwrk)
## License
MIT
## Stargazers ⭐️
[](https://star-history.com/#Olanetsoft/midnight-mcp&Date)