Skip to main content
Glama

Tolk MCP Server

License: MIT Node.js Version

A Model Context Protocol (MCP) server for the Tolk compiler, enabling Large Language Models (LLMs) to compile and verify Tolk smart contract code for the TON blockchain.

中文文档 | English Documentation

Overview

This MCP server exposes the Tolk compiler functionality to AI assistants, allowing them to:

  • ✅ Compile Tolk source code in real-time

  • ✅ Verify code correctness before deployment

  • ✅ Get compiled bytecode (BOC) and code hash

  • ✅ Debug compilation errors with detailed messages

  • ✅ Support multi-file projects

Related MCP server: iz-tolk-mcp

Supported Platforms

Platform

Transport

Status

Claude Desktop

stdio

✅ Supported

ChatGPT

HTTP/SSE

✅ Supported

Other MCP Clients

Both

✅ Supported

Quick Start

Installation

# Install globally
npm install -g tolk-mcp-server

# Or install as project dependency
npm install tolk-mcp-server

# Or run directly with npx
npx tolk-mcp-server

For Claude Desktop

Add to your Claude Desktop configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "tolk-compiler": {
      "command": "npx",
      "args": ["tolk-mcp-server"]
    }
  }
}

For ChatGPT

  1. Start the HTTP server:

npx tolk-mcp-server-http
  1. Expose via ngrok (for testing):

ngrok http 3000
  1. Add in ChatGPT: Settings → Connectors → Advanced → Developer Mode → Add your URL

Available Tools

getTolkCompilerVersion

Returns the current Tolk compiler version.

Example: "0.7.0"

runTolkCompiler

Compiles Tolk source code and returns the result.

Parameters:

Parameter

Type

Required

Description

entrypointFileName

string

Yes

Main .tolk file name

sources

Record<string, string>

Yes

Map of filename to source code

optimizationLevel

number (0-2)

No

Optimization level (default: 2)

withStackComments

boolean

No

Include stack comments in Fift output

experimentalOptions

string

No

Experimental compiler flags

Success Response:

{
  "status": "ok",
  "fiftCode": "...",
  "codeBoc64": "...",
  "codeHashHex": "...",
  "stderr": ""
}

Error Response:

{
  "status": "error",
  "message": "Error description"
}

Usage Examples

Ask Claude or ChatGPT:

Compile this Tolk contract:

fun onInternalMessage(myBalance: int, msgValue: int, msgFull: cell, msgBody: slice) {
    // Simple contract
}

The AI will use the Tolk compiler to verify and compile your code.

Development

Build from Source

# Clone repository
git clone https://github.com/robustfengbin/tolk-mcp-server.git
cd tolk-mcp-server

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Available Scripts

Script

Description

npm start

Run stdio server (for Claude Desktop)

npm run start:http

Run HTTP server (for ChatGPT)

npm run build

Build TypeScript

npm test

Run tests

npm run dev

Build and run stdio server

npm run dev:http

Build and run HTTP server

Project Structure

tolk-mcp-server/
├── src/
│   ├── index.ts           # stdio transport server
│   └── server-http.ts     # HTTP/SSE transport server
├── test/
│   └── test.ts            # Test suite
├── docs/
│   ├── USAGE.md           # English documentation
│   └── USAGE_CN.md        # Chinese documentation
├── Dockerfile             # Docker deployment
├── package.json
└── README.md

Deployment

Docker

# Build image
docker build -t tolk-mcp-server .

# Run container
docker run -p 3000:3000 tolk-mcp-server

Environment Variables

Variable

Default

Description

MCP_PORT

3000

HTTP server port

MCP_HOST

0.0.0.0

HTTP server host

API Endpoints (HTTP Server)

Endpoint

Method

Description

/mcp

POST

MCP JSON-RPC endpoint

/mcp

GET

SSE stream for notifications

/mcp

DELETE

Session termination

/health

GET

Health check

/

GET

Server info

Requirements

  • Node.js >= 18.0.0

Contributing

Contributions are welcome! Please read our Contributing Guide for details.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

References

Acknowledgments

This project was created as part of the TON Society Grants & Bounties program.

Available Tools

2 tools
getTolkCompilerVersionA

Returns the current version of the Tolk compiler. Use this to check compiler compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It does indicate this is a read-only operation by saying 'Returns,' and it implies no side effects, but it does not disclose the return format (e.g., whether it is a string, semver, or includes build metadata).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no redundant detail. The core behavior is front-loaded, and the usage hint is appended efficiently without wasting tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, zero parameters, and simple return purpose, the description covers the essential invocation context. The only slight gap is that with no output schema, the exact return type/format is not specified, but this is not critical for calling the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so there are no parameter semantics to explain. Per the calibration, zero-parameter tools receive a baseline of 4, and the description correctly focuses on the return value instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Returns' and names the exact resource—'the current version of the Tolk compiler.' It is clearly distinguishable from sibling runTolkCompiler, which presumably executes compilation rather than reporting version information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The statement 'Use this to check compiler compatibility' gives a clear, concrete use case for the tool. However, it does not explicitly mention the alternative sibling tool or state when not to use this tool, so there is no exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

runTolkCompilerA

Compiles Tolk source code and returns the compilation result.

On success, returns:

  • fiftCode: Generated Fift assembler code

  • codeBoc64: Base64-encoded BOC (Bag of Cells) containing the compiled contract

  • codeHashHex: Hexadecimal hash of the compiled code

  • stderr: Any compiler warnings

On error, returns:

  • status: "error"

  • message: Description of the compilation error

Use this tool to verify that Tolk code compiles correctly and to obtain the compiled bytecode.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourcesYesA map of filename to source code content. Must include the entrypoint file and any imported files.
optimizationLevelNoOptimization level for the compiler (0-2). Default is 2. Higher levels produce more optimized code.
withStackCommentsNoInclude stack annotations in the generated Fift output. Default is false.
entrypointFileNameYesThe name of the main .tolk file to compile
experimentalOptionsNoExperimental compiler flags (space-separated)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses success and error return structures in detail (fiftCode, codeBoc64, codeHashHex, stderr; status and message on error), which is more than most. It does not mention side effects, but compilation is a pure operation; it also omits permission or rate-limit context, which is acceptable for a compiler tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections for success and error outputs, and the primary purpose is stated up front. It is slightly verbose but every sentence contributes to understanding the tool's behavior and outputs, avoiding fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has five parameters, one nested object, and no output schema; the description compensates by explicitly listing return fields and error structure. It does not describe parameter semantics (covered by schema) or limitations like file size caps, but overall it provides enough context for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are documented in the schema itself. The description adds no extra parameter-level detail beyond what the schema already provides. Per the rubric, the baseline is 3 when schema coverage is high, and no additional value is offered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Compiles Tolk source code and returns the compilation result.' It clearly differentiates from the sibling tool getTolkCompilerVersion, which is about version retrieval. The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description ends with 'Use this tool to verify that Tolk code compiles correctly and to obtain the compiled bytecode,' providing a clear when-to-use statement. It doesn't explicitly mention exclusions or the sibling tool, but the sibling's purpose is distinct enough that no confusion is likely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • First observedgetTolkCompilerVersion
    • First observedrunTolkCompiler

TDQS

A4.4/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one retrieves the compiler version, the other compiles source code. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tool names follow the same camelCase verb-object pattern ('getTolkCompilerVersion' and 'runTolkCompiler'), making the naming predictable and consistent.

Tool Count4/5

With only two tools, the server is slightly below the typical 3-15 range, but the narrow scope (compiling Tolk code) justifies the minimal set. Each tool is essential and earns its place.

Completeness5/5

The server covers the full operation cycle for a compiler: checking version and compiling code. The compile result includes all necessary outputs (Fift code, BOC, hash, warnings) and error handling, so there are no obvious gaps.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Integrates the Quint formal specification language into LLM workflows for accessible formal verification. It provides tools for type-checking, random simulation, exhaustive model checking, and syntax documentation.
    6
    2
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for the Tolk smart contract compiler on the TON blockchain. Compile, syntax check, deploy link generation, language docs, stdlib, and contract prompts.
    4
    38 npm
    2
    MIT