Skip to main content
Glama
WeiWeicode

Node.js MCP Server

by WeiWeicode
README.md
# Node.js MCP Server

一個使用 Node.js 和 TypeScript 實現的 Model Context Protocol (MCP) 服務器。

## 什麼是 MCP?

Model Context Protocol (MCP) 是一個開放標準協議,用於在 AI 模型和各種數據源、工具之間建立安全、可控的連接。MCP 允許 AI 助手:

- 訪問本地和遠程資源
- 執行工具和功能
- 維護安全的上下文邊界
- 提供結構化的能力發現

## 功能特性

這個 MCP 服務器提供以下工具類別:

### 📁 文件操作工具
- `read_file` - 讀取文件內容
- `write_file` - 寫入文件內容
- `list_directory` - 列出目錄內容
- `create_directory` - 創建目錄
- `delete_file` - 刪除文件

### 🧮 計算器工具
- `calculate` - 執行數學計算(支持基本運算和函數)
- `convert_units` - 單位轉換(長度、重量、溫度)
- `statistics` - 計算統計信息(平均值、中位數、標準差等)

### 💻 系統信息工具
- `get_system_info` - 獲取系統基本信息
- `get_current_time` - 獲取當前時間和日期
- `execute_command` - 執行安全的系統命令
- `get_network_info` - 獲取網絡接口信息
- `get_process_info` - 獲取當前進程信息

## 安裝和使用

### 前置需求
- Node.js 18.0.0 或更高版本
- npm 或 yarn

### 安裝依賴
\`\`\`bash
npm install
\`\`\`

### 建構項目
\`\`\`bash
npm run build
\`\`\`

### 啟動服務器
\`\`\`bash
npm start
\`\`\`

### 開發模式
\`\`\`bash
npm run dev
\`\`\`

## 配置 Claude Desktop

要在 Claude Desktop 中使用這個 MCP 服務器,請在 Claude 配置文件中添加以下內容:

\`\`\`json
{
  "mcpServers": {
    "nodejs-mcp-server": {
      "command": "node",
      "args": ["path/to/your/dist/index.js"]
    }
  }
}
\`\`\`

## 架構說明

### 核心組件

1. **Server (index.ts)** - 主要的 MCP 服務器實現
2. **Tool Modules** - 各種功能工具的實現
   - `fileTools.ts` - 文件操作工具
   - `calculatorTools.ts` - 計算工具
   - `systemTools.ts` - 系統信息工具

### 安全考慮

- 文件操作限制在允許的路徑範圍內
- 命令執行只允許預定義的安全命令
- 數學表達式求值使用安全的解析方式
- 所有輸入都經過驗證和清理

## 擴展功能

要添加新的工具,請:

1. 在 `src/tools/` 目錄下創建新的工具模組
2. 實現 `ToolDefinition` 和 `ToolResult` 接口
3. 在主服務器文件中註冊新工具

### 工具模組示例

\`\`\`typescript
class MyCustomTools {
  getToolDefinitions(): ToolDefinition[] {
    return [
      {
        name: 'my_tool',
        description: '我的自定義工具',
        inputSchema: {
          type: 'object',
          properties: {
            param: { type: 'string', description: '參數描述' }
          },
          required: ['param']
        }
      }
    ];
  }

  async handleToolCall(name: string, args: Record<string, any>): Promise<ToolResult> {
    // 實現工具邏輯
  }
}
\`\`\`

## 測試

### 手動測試
\`\`\`bash
# 建構項目
npm run build

# 啟動服務器並測試工具列表
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | node dist/index.js
\`\`\`

### 測試工具調用
\`\`\`bash
# 測試計算工具
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "calculate", "arguments": {"expression": "2 + 3 * 4"}}}' | node dist/index.js
\`\`\`

## 故障排除

### 常見問題

1. **模組找不到錯誤**
   - 確保運行了 \`npm run build\`
   - 檢查 TypeScript 配置

2. **權限錯誤**
   - 檢查文件路徑權限
   - 確保工作目錄正確

3. **連接問題**
   - 驗證 MCP 客戶端配置
   - 檢查服務器日誌輸出

## 貢獻指南

歡迎提交問題報告和功能請求!請確保:

1. 遵循現有的代碼風格
2. 添加適當的錯誤處理
3. 包含安全考慮
4. 更新文檔

## 許可證

MIT License - 詳見 LICENSE 文件。

## 更多資源

- [MCP 官方文檔](https://modelcontextprotocol.io/)
- [MCP SDK 文檔](https://github.com/modelcontextprotocol/typescript-sdk)
- [Claude Desktop 配置指南](https://claude.ai/docs/)