Token导航 LogoToken导航TokenDH.com
MCP Atom logo
AI代理未说明官方级别未说明来源级核验

MCP Atom

MCP Server

MCP-Atom是一个零样板框架,通过读取文件结构和JSDoc注释自动发现、验证和注册工具、提示和资源,适用于快速构建MCP服务器。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
类型安全JavaScriptClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

codemeasandwich

提供方

codemeasandwich

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP原子

在几分钟内构建MCP服务器,而不是几小时。 MCP Atom是一个零样板框架,只需读取文件结构和JSDoc注释,即可自动发现、验证和注册您的工具、提示和资源。

什么是MCP?

模型上下文协议(MCP) 是一种开放协议,使人工智能助手能够安全地访问外部工具、数据源和功能。将其视为Claude Desktop等人工智能应用程序连接到您的服务、数据库、API和自定义功能的标准化方式。

为什么选择MCP原子?

传统的MCP服务器开发需要:

  • ❌ 手动注册每个工具、提示和资源
  • ❌ 手工编写JSON模式定义
  • ❌ 每个端点的锅炉板代码
  • ❌ 将类型定义与实现分开维护

MCP Atom消除了这一切。 只需编写带有JSDoc注释的文件,所有内容都会自动发现、验证和注册。

主要优势

  • 🚀 零沸点板:无手册 server.registerTool() 电话
  • 📝 JSDoc驱动:从您的评论中自动提取的模式
  • 🔍 自动发现:将文件放入文件夹中,它们会自动注册
  • 类型安全:自动生成Zod模式并进行验证
  • 🎯 约定胜于配置:文件结构=API结构

快速开始

安装

npm install

项目结构

创建一个 register/ 包含三个子文件夹的文件夹:

register/
├── tools/          # Executable functions
├── prompts/        # Prompt templates
└── resources/      # Data sources (files, APIs, etc.)

你的第一个工具

在中创建文件 register/tools/ 带有JSDoc注释和默认导出。该工具将自动注册到:

  • ✅ 基于JSDoc类型的输入验证
  • ✅ 输出模式
  • ✅ JSDoc的标题和描述
  • ✅ 全型安全

运行服务器

MCP Atom支持两种传输模式: 工作室 (默认)和 可流式传输的HTTP.

标准传输(默认)

默认传输使用标准输入/输出,非常适合本地开发和与Claude Desktop等MCP客户端集成。

npm start

或使用MCP检查器进行测试:

npm run start:inspect

可流式HTTP传输

对于基于web的客户端或远程访问,请使用Streamable HTTP传输。这使得:

  • HTTP/HTTPS连接
  • 服务器发送事件(SSE)用于实时更新
  • 具有可恢复性的会话管理
  • 基于浏览器的客户端的CORS支持

启用HTTP传输 使用专用脚本:

npm run start:http

或者手动设置环境变量:

# Option 1: Use TRANSPORT environment variable
TRANSPORT=http npm start

# Option 2: Use USE_HTTP flag
USE_HTTP=true npm start

配置端口 (默认值:3001):

PORT=8080 npm run start:http
# Or with manual env var:
PORT=8080 TRANSPORT=http npm start

服务器将监听 http://localhost:8080/mcp (或您指定的端口,默认值:3001)。

终点:

  • POST /mcp -MCP请求(初始化和后续请求)
  • GET /mcp -服务器到客户端通知的SSE流
  • DELETE /mcp -会话终止

标题:

  • mcp-session-id -会话标识符(GET/DELETE需要,初始POST可选)
  • last-event-id -用于在断开连接后恢复SSE流

HTTP示例:

# Start server on port 3001 (default)
npm run start:http

# Or with custom port
PORT=8080 npm run start:http

使用HTTP进行测试:

您可以将MCP检查器与HTTP传输一起使用:

# Start server with HTTP transport
npm run start:http

# Then in another terminal, run the inspector
npm run start:inspect

或手动配置MCP检查器:

  1. 启动服务器 使用HTTP传输:
   npm run start:http
   # Or with custom port:
   PORT=8080 npm run start:http
  1. 在MCP检查器中,配置连接:

- 连接类型:选择 Direct (用于直接连接到您的服务器) - 统一资源定位符: http://localhost:3001/mcp (或您配置的端口。, http://localhost:8080/mcp) - 请求超时: 300000 (默认为5分钟) - 重置进度超时: True (推荐) - 最大总超时时间: 60000 (默认为1分钟) - 检查员代理地址:留空(仅当连接类型为“通过代理”时才需要) - 代理会话令牌:留空(仅当连接类型为“通过代理”时才需要)

备注:使用时 Direct 连接类型,你可以 需要填写代理地址或代理会话令牌字段。仅在使用时才需要这些 via proxy 连接类型。

  1. 连接 -检查器将自动处理会话初始化和SSE流。

或将任何兼容MCP的客户端连接到 http://localhost:3001/mcp (或您配置的端口)。

配置

环境变量

变量描述默认值示例
TRANSPORT运输方式: stdiohttpstdioTRANSPORT=http npm startnpm run start:http
USE_HTTP启用HTTP传输(替代 TRANSPORT=http)falseUSE_HTTP=true npm start
PORTHTTP传输的端口号3001PORT=8080 npm run start:http

运输比较

功能标准流式HTTP
用例本地开发,Claude DesktopWeb客户端,远程访问
连接进程stdioHTTP/HTTPS
实时更新✅ (通过苏格兰和南方能源公司)
会话管理单会话多个并发会话
可恢复性✅ (通过上次事件ID)
CORS支持不适用
需要端口✅ (默认值:3001)

文件格式参考

工具

工具是执行操作的可执行功能。它们接受输入参数并返回结果。

位置: register/tools/*.js

格式:

/**
 * Tool Title - Brief description
 * 
 * @param {{ param1: type1, param2?: type2 }} input
 * @returns {{ result: type }}
 */
export default ({ param1, param2 }) => {
    // Your implementation
    return { result: /* ... */ };
}

可选参数:使用 ? 在类型定义中:

@param {{ name: string, style?: string }} input

复杂类型:支持数组、嵌套对象、联合等:

@param {{ 
    items: string[], 
    config: { timeout: number, retry: boolean },
    status: "active" | "inactive"
}} input

返回元数据:返回数组 [output, ...meta] 以包括附加内容。第一个元素是主要输出,后续元素是元数据项(资源链接、图像等)。

📖 register/README.md 查看所有工具类型的详细示例。

提示

提示是为AI助手创建消息的模板生成器。

位置: register/prompts/*.js

格式:

/**
 * Prompt Title - Brief description
 * 
 * @param {{ arg1: type1, arg2?: type2 }} input
 * @returns {{ messages: Array }}
 */
export default ({ arg1, arg2 = "default" }) => {
    return {
        messages: [
            {
                role: "user",
                content: {
                    type: "text",
                    text: `Your prompt text using ${arg1} and ${arg2}`
                }
            }
        ]
    };
}

备注:提示必须返回一个带有 messages 遵循MCP提示格式的数组。

📖 register/README.md 查看详细的提示示例。

资源

资源是AI助手可以读取的数据源。它们可以是静态的,也可以是带有参数的动态的。

位置: register/resources/{protocol}/*.js

静态资源:

/**
 * Resource Title - Brief description
 * 
 * @returns {{ ... }}
 */
export default () => {
    return { /* your data */ };
}

带参数的动态资源:

使用文件夹名称 {parameter} 创建参数化资源的语法:

/**
 * Resource Title - Brief description
 * 
 * @param {{ paramName: type }} input
 * @returns {type}
 * @mime text/plain
 */
export default ({ paramName }) => {
    return /* your data */;
}

这创建了一个可在以下位置访问的资源 {protocol}://{path} 从文件夹结构中提取参数。

资源URI结构:

  • 文件夹路径: resources/github/repos/{owner}/{repo}.js
  • 资源URI: github://repos/{owner}/{repo}
  • 注册名称: github-repos-owner-repo

自动补全支持:

添加一个 autocomplete 出口,提供智能完井。每个函数接收 value (电流输入)和 context (使用之前解析的参数),并返回经过过滤的建议数组。

MIME类型:使用指定内容类型 @mime 标签:

/**
 * @mime application/json
 */

📖 register/README.md 了解包括自动补全模式在内的详细资源示例。

类型系统

MCP Atom会自动将JSDoc类型转换为Zod模式。支持的类型:

原语

  • string, number, boolean, null, any, unknown
  • Date (转换为ISO字符串)

集合

  • string[]Array -阵列
  • { key: value } -物体

高级

  • "value1" | "value2" -工会
  • { prop?: type } -可选属性
  • Promise -承诺(未包装)

例子

// Simple object
@param {{ name: string, age: number }} input

// With optional fields
@param {{ name: string, email?: string }} input

// Nested objects
@param {{ 
    user: { id: string, name: string },
    settings: { theme: "light" | "dark" }
}} input

// Arrays
@param {{ tags: string[], items: Array }} input

// Complex nested structure
@param {{
    config: {
        api: {
            baseUrl: string,
            timeout: number,
            retry: boolean
        },
        features: {
            enabled: boolean,
            options: string[]
        }
    }
}} input

📖 register/README.md 更多类型示例和模式。

项目结构

register/ 文件夹结构决定您的API结构:

  • 工具: register/tools/*.js -每个文件都成为一个工具
  • 提示: register/prompts/*.js -每个文件都变成一个提示
  • 资源: register/resources/{protocol}/*.js -文件夹结构映射到资源URI

- 静态: resources/config/app.jsconfig://app - 动态: resources/users/{userId}/profile.jsusers://{userId}/profile

运作原理

  1. 发现:MCP Atom扫描 register/ 递归文件夹
  2. 解析:每个 .js 对文件进行分析,以确定:

- JSDoc注释(标题、描述、类型) - 默认导出功能 - 可选的 autocomplete 出口(资源)

  1. 模式生成:JSDoc类型转换为Zod模式
  2. 注册:工具、提示和资源会自动注册到MCP服务器
  3. 验证:所有输入都根据生成的模式进行验证

最佳实践

  1. 始终包含JSDoc:每个文件都需要一个JSDoc块 @param@returns
  2. 使用描述性标题:第一行成为工具/提示/资源标题
  3. 文档可选参数:使用 ? 在可选字段的类型定义中
  4. 尽可能保持函数的纯净:更容易测试和推理
  5. 优雅地处理错误:返回有意义的错误消息
  6. 使用TypeScript风格的JSDoc:解析器理解TypeScript语法

高级功能

异步函数

所有处理程序都支持async/await。简单使用 async 在函数声明中。

返回多个内容项

工具可以返回一个数组,其中第一个元素是输出,后续元素是元数据(资源链接、图像等)。

故障排除

常见问题

“未找到默认导出”:每个文件都必须有 export default

“未找到JSDoc”:每个文件都需要一个JSDoc注释块

类型分析错误:检查JSDoc语法是否与示例匹配

资源未找到:验证文件夹结构是否匹配 resources/{protocol}/...

HTTP传输问题

“端口已在使用中”:使用以下命令更改端口 PORT=8080 npm run start:http

“CORS错误”:服务器默认配置为启用CORS(origin: "*").对于生产,考虑限制原产地。

“未找到会话”:确保您正在发送 mcp-session-id 初始化后GET/DELETE请求的标头

“连接被拒绝”:验证服务器是否正在运行,端口是否与客户端配置匹配

生产注意事项

在生产环境中使用HTTP传输时:

  1. CORS配置默认的CORS设置允许所有来源(origin: "*").在生产中限制此操作:
   // In index.js, update the CORS configuration
   app.use(cors({
     origin: process.env.ALLOWED_ORIGINS?.split(',') || ['https://yourdomain.com'],
     // ... other options
   }));
  1. 认证:如果需要,在MCP路由之前添加身份验证中间件
  1. 超文本传输安全协议:使用反向代理(nginx、Caddy)或负载均衡器添加HTTPS
  1. 港口安全:确保防火墙只允许必要的端口

后续步骤

  • 📖 register/README.md 有关所有文件类型的详细示例,请参阅实际代码
  • 🔧 结账 builderBot/readme.md 内部实施细节
  • 📚 阅读 MCP规范 有关协议详细信息

目录标签

目录标签

类型安全JavaScriptClaude零样板本地部署自动发现JSDoc驱动MCP协议

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP