MCP服务器工具

一个基于Node.js和TypeScript的可扩展MCP服务器,提供文件读取、图像生成等功能,适用于Cursor集成开发环境。

  • by Direct83
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 direct83/mcp-server

使用说明

mcp实验室--глобальныйmcp-сервер(Node.js+TypeScript)

可扩展的MCP服务器,带有Cursor的标准STDIO传输和插件工具体系结构。

  • 运输:stdio(与cursor兼容)
  • 工具箱:
    • health.ping -检查可用性
    • fs.readText -仅在内部安全读取UTF-8文件 ALLOW_DIR
    • images.generate 通过OpenAI(Base64 PNG)生成图像

要求

  • Node.js 18+
  • Cursor安装

安装

npm install
npm run build

Настройкав光标

  1. 打开:Tools&Integrations→MCP Tools→New MCP Server(打开MCP JSON设置编辑器)
  2. 添加/更新配置(dist/server.js绝对路径):
{
  "mcpServers": {
    "mcp-lab": {
      "command": "node",
      "args": [
        "C:/Users/Home/Desktop/projects/mcp-server/dist/server.js"
      ],
      "env": {
        "OPENAI_API_KEY": "${secrets:OPENAI_API_KEY}",
        "ALLOW_DIR": "${workspaceRoot}"
      }
    }
  }
}
  1. B.设置→ 秘密 OPENAI_API_KEY (OpenAI密钥的值)

注:

  • 修改源代码后,执行 npm run build,因为cursor启动 dist/server.js.
  • Cursor配置中的值优先于来自Cursor的值。 .env 项目。

环境变化

  • OPENAI_API_KEY OpenAI密钥(必备) images.generate)
  • ALLOW_DIR -文件工具的安全根(默认) ${workspaceRoot}). fs.readText 只能在这个目录中阅读。
  • OPENAI_IMAGE_MODEL -图像模型(默认) dall-e-3)

服务器也在读取文件 .env 每个项目(通过) dotenv).

使用

打开Cursor服务器中的任何项目-将自动激活。MCP工具列表中的工具 mcp-lab.

调用示例(在工具窗口中输入参数):

  • health.ping 没有论据,答案是: pong
  • fs.readText 身体 { "relPath": "package.json" } → 文本文件
  • images.generate 身体 { "prompt": "a simple blue circle", "size": "512x512" } 图片(Base64)

Пояснение параметров:

  • fs.readText.relPath 相对路径从 ALLOW_DIR (默认情况下,这是开源项目的根, ${workspaceRoot}).可以用正则表达式(/)在任何操作系统上。超出范围 ALLOW_DIR (例如,通过 ..)被错误“Access denied:outside allowdir”阻止。它只读取UTF−8编码的文本。

扩展(添加新工具)

创建文件 src/tools/my-tool.ts 然后导出记录器:

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";

export function registerMyTool(server: McpServer) {
  server.registerTool(
    "my.doStuff",
    { title: "My Tool", description: "Does stuff", inputSchema: { id: z.string() } },
    async ({ id }) => ({ content: [{ type: "text", text: `ok:${id}` }] })
  );
}

连接到 src/server.ts:

import { registerMyTool } from "./tools/my-tool.js";
registerMyTool(server);

安全

  • 没有删除工具(没有删除/删除)
  • 仅在边界内访问文件系统 ALLOW_DIR (禁止)
  • 秘密不会被记录。密钥通过Secrets/ENV传输

调试

  • 如果看不到工具:检查全局JSON MCP设置,是否存在 OPENAI_API_KEY 重新启动cursor