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 目录下。
处理程序开发规范
每个处理程序应导出 id、name、description 和 method 等内容。
支持 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 服务器。
微信扫一扫