Back to MCP directory
publicPublicdnsLocal runtime

js-mcp-server

JS MCP Server是一个基于JavaScript和WASM的服务器组件,提供易于集成的SDK,支持自定义处理器(工具)和外部服务(如Postgres和HTTP)交互。

article

README

🚀 JS MCP 服务器

JS MCP 服务器是一个基于 JavaScript 的 MCP 服务器组件,它集成了 WebAssembly SDK,具有简单易用和快速部署的特点,能为开发者提供高效的开发体验。

🚀 快速开始

要使用 JS MCP 服务器,您需要完成安装和构建步骤。

📦 安装指南

请按照以下步骤进行安装:

git clone https://github.com/justin-echternach/js-mcp-server.git
cd js-mcp-server
npm install -g @bytecodealliance/componentize-js @bytecodealliance/jco
npm install

📦 构建步骤

要构建项目并生成 WebAssembly 模块,可执行以下命令:

npm run build

这将使用 Vite 打包 JavaScript 代码,并生成到 dist/js-mcp-server.wasm 文件。

✨ 主要特性

自定义服务器

您可以通过添加或修改处理程序(也称为工具)来自定义服务器。处理程序位于 server.js 文件中,并存储在 handlers 目录下。

处理程序开发规范

每个处理程序应导出 idnamedescriptionmethod 等内容。

支持 Postgres 和 HTTP 接口

SDK 提供了查询数据库的函数和便捷的 HTTP 客户端方法。

💻 使用示例

自定义服务器示例

例如,要添加一个名为 MyTool 的新工具:

import { myTool } from './handlers/my-tool';

// 在 server.js 中
const server = new MCP.Server({
  tools: {
    ...defaultTools,
    myTool: myTool
  }
});

处理程序开发示例

export const myTool = {
  id: 'my-tool-id',
  name: 'My Tool Name',
  description: 'This is a custom tool that does something.',
  method: async (context, parameters) => {
    // 处理逻辑
    return { result: 'processed' };
  }
};

Postgres 查询示例

import { query } from '../sdk/database';

export async function handleDatabaseQuery(context, parameters) {
  try {
    const result = await query('SELECT * FROM my_table WHERE id = $1', [parameters.id]);
    return { data: result };
  } catch (error) {
    return { error: error.message };
  }
}

HTTP 客户端示例

import { get, post } from '../sdk/http';

export async function fetchData(context, parameters) {
  try {
    const response = await get('https://api.example.com/data', {
      headers: {
        'Authorization': `Bearer ${parameters.token}`
      }
    });
    return { data: response.body };
  } catch (error) {
    return { error: error.message };
  }
}

📚 详细文档

处理程序开发指南

每个处理程序应导出以下内容:

  • id:字符串,工具的唯一标识符。
  • name:字符串,工具的名称。
  • description:字符串,工具的描述。
  • method:函数,处理逻辑。

使用 Postgres 和 HTTP 接口

Postgres 查询

SDK 提供了查询数据库的函数。

HTTP 客户端

SDK 提供了便捷的 HTTP 客户端方法。

最佳实践

  • 错误处理:始终使用 try/catch 包裹敏感代码块,确保异常被正确捕获和处理。
  • 输入验证:对所有外部输入进行严格的验证和清理,防止潜在的安全漏洞。
  • 性能优化:尽量避免在处理程序中执行高开销操作,考虑异步处理和并行执行。
  • 文档记录:为每个工具提供详细的文档,包括输入参数、输出格式和可能的错误情况。

通过遵循这些最佳实践,您可以构建高效、安全且易于维护的 JS MCP 服务器。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client