Content
# 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](https://nodejs.org/) 16 or higher installed
- [Deno](https://deno.land/manual/getting_started/installation) installed
- [Claude Desktop](https://claude.ai/download) or [Cline](https://github.com/saoudrizwan/cline) installed
## Installation
1. Clone this repository:
```bash
git clone https://github.com/Timtech4u/deno-mcp.git
cd deno-mcp
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
## Configuration
### For Claude Desktop
1. Open your Claude Desktop configuration file:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
2. Add the Deno MCP server configuration:
```json
{
"mcpServers": {
"deno": {
"command": "node",
"args": [
"/absolute/path/to/deno-mcp/dist/index.js"
],
"disabled": false,
"autoApprove": [
"execute_deno_code",
"check_deno_version"
]
}
}
}
```
3. Replace `/absolute/path/to/deno-mcp` with the actual path where you cloned the repository.
4. Restart Claude Desktop.
### For Cline
1. 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`
2. Add the Deno MCP server configuration:
```json
{
"mcpServers": {
"deno": {
"command": "node",
"args": [
"/absolute/path/to/deno-mcp/dist/index.js"
],
"disabled": false,
"autoApprove": [
"execute_deno_code",
"check_deno_version"
]
}
}
}
```
3. Replace `/absolute/path/to/deno-mcp` with the actual path where you cloned the repository.
4. 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/std@0.192.0/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 execute
- `permissions` (array of strings, optional): List of permissions to grant (e.g., "net", "read", "write", "env", "run", etc.)
- `unstable` (boolean, optional): Whether to enable unstable features
- `typescript` (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
Connection Info
You Might Also Like
MarkItDown MCP
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
Time
A Model Context Protocol server for time and timezone conversions.
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
Sequential Thinking
A structured MCP server for dynamic problem-solving and reflective thinking.
Git
A Model Context Protocol server for Git automation and interaction.
Context 7
Context7 MCP provides up-to-date code documentation for any prompt.