Deno代码执行服务

一个用于安全执行Deno TypeScript/JavaScript代码的模型上下文协议(MCP)服务器,可配置权限并与Claude等LLM集成。

  • by Timtech4u
  • JavaScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 Timtech4u/deno-mcp-server

使用说明

Deno MCP服务器

用于执行Deno TypeScript/JavaScript代码的模型上下文协议(MCP)服务器。此服务器允许像Claude这样的LLM使用可配置的权限安全地运行Deno代码。

特性

  • 执行Deno TypeScript或JavaScript代码
  • 配置权限(网络、读、写、环境、运行等)
  • 启用/禁用不稳定功能
  • 获取Deno版本信息

先决条件

在使用此MCP服务器之前,请确保您已:

安装

  1. 克隆此存储库:
git clone https://github.com/Timtech4u/deno-mcp.git
cd deno-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

配置

适用于克劳德桌面

  1. 打开您的Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加Deno MCP服务器配置:

{
  "mcpServers": {
    "deno": {
      "command": "node",
      "args": [
        "/absolute/path/to/deno-mcp/dist/index.js"
      ],
      "disabled": false,
      "autoApprove": [
        "execute_deno_code",
        "check_deno_version"
      ]
    }
  }
}
  1. 替换 /absolute/path/to/deno-mcp 使用克隆存储库的实际路径。

  2. 重新启动克劳德桌面。

对于克莱恩

  1. 打开Cline MCP设置文件:

    • macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
    • 窗户: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
  2. 添加Deno MCP服务器配置:

{
  "mcpServers": {
    "deno": {
      "command": "node",
      "args": [
        "/absolute/path/to/deno-mcp/dist/index.js"
      ],
      "disabled": false,
      "autoApprove": [
        "execute_deno_code",
        "check_deno_version"
      ]
    }
  }
}
  1. 替换 /absolute/path/to/deno-mcp 使用克隆存储库的实际路径。

  2. 重新启动Cline或重新加载窗口。

如何使用

配置后,您可以要求Claude以各种方式运行Deno代码。以下是一些示例:

基本用法

您可以在没有任何特殊权限的情况下运行简单的Deno代码:

Can you run this Deno code for me?

console.log("Hello from Deno!");
console.log("Version:", Deno.version);
console.log("Current directory:", Deno.cwd());

具有网络权限

要发出HTTP请求,您需要授予网络权限:

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();

具有文件系统权限

要读取或写入文件,您需要授予文件系统权限:

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);

具有多个权限

您可以组合多个权限:

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");

使用Deno标准库

您可以使用Deno的标准库:

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 });

可用工具

execute_deno_code

执行Deno Types/JavaScript代码。

参数:

  • code (string,必填):要执行的Deno代码
  • permissions (字符串数组,可选):要授予的权限列表(例如,“net”、“read”、“write”、“env”、“run”等)
  • unstable (boolean,可选):是否启用不稳定功能
  • typescript (boolean,可选):代码是TypeScript(true)还是JavaScript(false)

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

返回有关已安装的Deno版本的信息。

Claude的示例用法:

Can you check what version of Deno I have installed?

故障排除

找不到Deno

如果您看到“Deno未安装”之类的错误,请确保Deno已安装并在系统PATH中可用。

权限错误

如果您的代码因权限错误而失败,请确保您正在请求相应的权限:

  • 网络请求: "net"
  • 文件系统: "read" 和 "write"
  • 环境变量: "env"
  • 正在运行子流程: "run"

超时错误

服务器有30秒的代码执行超时时间。如果你的代码花费的时间超过这个时间,它将被终止。

贡献

欢迎投稿!请随时提交拉取请求。

许可证

麻省理工学院