Deno MCP Server
by Timtech4u
The Deno MCP Server allows LLMs like Claude to securely execute Deno TypeScript/JavaScript code with configurable permissions. It acts as a Model Context Protocol (MCP) server, enabling LLMs to interact with Deno runtime.
Last updated: N/A
Deno MCP Server
A Model Context Protocol (MCP) server for executing Deno TypeScript/JavaScript code. This server allows LLMs like Claude to run Deno code securely with configurable permissions.
Features
- Execute Deno TypeScript or JavaScript code
- Configure permissions (net, read, write, env, run, etc.)
- Enable/disable unstable features
- Get Deno version information
Prerequisites
Before using this MCP server, ensure you have:
- Node.js 16 or higher installed
- Deno installed
- Claude Desktop or Cline installed
Installation
- Clone this repository:
git clone https://github.com/Timtech4u/deno-mcp.git
cd deno-mcp
- Install dependencies:
npm install
- Build the project:
npm run build
Configuration
For Claude Desktop
-
Open your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Add the Deno MCP server configuration:
{
"mcpServers": {
"deno": {
"command": "node",
"args": [
"/absolute/path/to/deno-mcp/dist/index.js"
],
"disabled": false,
"autoApprove": [
"execute_deno_code",
"check_deno_version"
]
}
}
}
-
Replace
/absolute/path/to/deno-mcp
with the actual path where you cloned the repository. -
Restart Claude Desktop.
For Cline
-
Open your Cline MCP settings file:
- macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
- Windows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
- macOS:
-
Add the Deno MCP server configuration:
{
"mcpServers": {
"deno": {
"command": "node",
"args": [
"/absolute/path/to/deno-mcp/dist/index.js"
],
"disabled": false,
"autoApprove": [
"execute_deno_code",
"check_deno_version"
]
}
}
}
-
Replace
/absolute/path/to/deno-mcp
with the actual path where you cloned the repository. -
Restart Cline or reload the window.
How to Use
Once configured, you can ask Claude to run Deno code in various ways. Here are some examples:
Basic Usage
You can run simple Deno code without any special permissions:
Can you run this Deno code for me?
console.log("Hello from Deno!");
console.log("Version:", Deno.version);
console.log("Current directory:", Deno.cwd());
With Network Permissions
To make HTTP requests, you need to grant network permissions:
Run this Deno code with network permissions:
async function fetchData() {
const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
const data = await response.json();
console.log("Fetched data:", data);
}
await fetchData();
With File System Permissions
To read or write files, you need to grant file system permissions:
Run this Deno code with file system permissions:
const text = "Hello, Deno File System!";
await Deno.writeTextFile("./hello.txt", text);
console.log("File written successfully");
const content = await Deno.readTextFile("./hello.txt");
console.log("File content:", content);
With Multiple Permissions
You can combine multiple permissions:
Run this Deno code with network and file system permissions:
const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
const data = await response.json();
await Deno.writeTextFile("./todo.json", JSON.stringify(data, null, 2));
console.log("Todo data saved to file");
Using Deno Standard Library
You can use Deno's standard library:
Run this Deno code with network permissions:
import { serve } from "https://deno.land/[email protected]/http/server.ts";
const handler = (req) => new Response("Hello, Deno Server!");
console.log("HTTP server running on http://localhost:8000");
serve(handler, { port: 8000 });
Available Tools
execute_deno_code
Executes Deno TypeScript/JavaScript code.
Parameters:
code
(string, required): The Deno code to executepermissions
(array of strings, optional): List of permissions to grant (e.g., "net", "read", "write", "env", "run", etc.)unstable
(boolean, optional): Whether to enable unstable featurestypescript
(boolean, optional): Whether the code is TypeScript (true) or JavaScript (false)
Example usage through Claude:
Can you run this Deno code with permissions for network and file system access?
const response = await fetch("https://api.github.com/users/denoland");
const data = await response.json();
await Deno.writeTextFile("./deno-github.json", JSON.stringify(data, null, 2));
console.log("GitHub data for Deno saved to file");
check_deno_version
Returns information about the installed Deno version.
Example usage through Claude:
Can you check what version of Deno I have installed?
Troubleshooting
Deno Not Found
If you see an error like "Deno is not installed", make sure Deno is installed and available in your system PATH.
Permission Errors
If your code fails with permission errors, make sure you're requesting the appropriate permissions:
- Network requests:
"net"
- File system:
"read"
and/or"write"
- Environment variables:
"env"
- Running subprocesses:
"run"
Timeout Errors
The server has a 30-second timeout for code execution. If your code takes longer than that, it will be terminated.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT