@iflow-mcp/colygon-zkproof-server
v1.0.0
Published
MCP server for ZK proofs
Readme
ZKProof MCP Server
This is a Model Context Protocol (MCP) server that provides tools for working with zero-knowledge proofs using circom. It allows you to build circuits, perform trusted setup, generate proofs, and verify proofs.
Installation
- Clone this repository or create the files as described below.
- Install dependencies:
npm install - Build the server:
npm run build - Add the server to your MCP settings configuration file:
{ "mcpServers": { "zkproof": { "command": "node", "args": ["/path/to/zkproof-server/build/index.js"], "env": { "ZKINTRO_DIR": "/path/to/zkintro-tutorial" }, "disabled": false, "autoApprove": [] } } }
Available Tools
The server provides the following tools:
build_circuit
Builds a circuit from a Circom file.
Parameters:
circomFile: Path to the Circom file (relative to the ZKINTRO_DIR)
Example:
use_mcp_tool({
server_name: "zkproof",
tool_name: "build_circuit",
arguments: {
circomFile: "example1/example1.circom"
}
});trusted_setup
Performs trusted setup for a circuit.
Parameters:
r1csFile: Path to the R1CS file (relative to the ZKINTRO_DIR)
Example:
use_mcp_tool({
server_name: "zkproof",
tool_name: "trusted_setup",
arguments: {
r1csFile: "example1/target/example1.r1cs"
}
});generate_proof
Generates a proof for a circuit.
Parameters:
zkeyPath: Path to the zkey file (relative to the ZKINTRO_DIR)wasmPath: Path to the WebAssembly file (relative to the ZKINTRO_DIR)inputJsonPath: Path to the input JSON file (relative to the ZKINTRO_DIR)
Example:
use_mcp_tool({
server_name: "zkproof",
tool_name: "generate_proof",
arguments: {
zkeyPath: "example1/target/example1_0001.zkey",
wasmPath: "example1/target/example1_js/example1.wasm",
inputJsonPath: "example1/input.json"
}
});verify_proof
Verifies a proof.
Parameters:
verificationKey: Path to the verification key file (relative to the ZKINTRO_DIR)publicOutput: Path to the public output file (relative to the ZKINTRO_DIR)proofFile: Path to the proof file (relative to the ZKINTRO_DIR)
Example:
use_mcp_tool({
server_name: "zkproof",
tool_name: "verify_proof",
arguments: {
verificationKey: "example1/target/example1_verification_key.json",
publicOutput: "example1/target/public.json",
proofFile: "example1/target/proof.json"
}
});Complete Example Workflow
Here's a complete example workflow for working with the example1 circuit:
// Build the circuit
use_mcp_tool({
server_name: "zkproof",
tool_name: "build_circuit",
arguments: {
circomFile: "example1/example1.circom"
}
});
// Perform trusted setup
use_mcp_tool({
server_name: "zkproof",
tool_name: "trusted_setup",
arguments: {
r1csFile: "example1/target/example1.r1cs"
}
});
// Generate a proof
use_mcp_tool({
server_name: "zkproof",
tool_name: "generate_proof",
arguments: {
zkeyPath: "example1/target/example1_0001.zkey",
wasmPath: "example1/target/example1_js/example1.wasm",
inputJsonPath: "example1/input.json"
}
});
// Verify the proof
use_mcp_tool({
server_name: "zkproof",
tool_name: "verify_proof",
arguments: {
verificationKey: "example1/target/example1_verification_key.json",
publicOutput: "example1/target/public.json",
proofFile: "example1/target/proof.json"
}
});Implementation Details
The server uses the scripts from the zkintro-tutorial repository to perform the operations. It executes the following scripts:
build.sh: Builds a circuit from a Circom filetrusted_setup.sh: Performs trusted setup for a circuitgenerate_proof.sh: Generates a proof for a circuitverify_proof.sh: Verifies a proof
The server is implemented in TypeScript and uses the MCP SDK to expose these operations as tools.
