MCP服务器工具集

一个轻量级的MCP协议服务器,提供天气查询、计算器、货币转换、时区处理和单位转换等实用工具。

  • by OladitiSodiq
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 OladitiSodiq/Mini-MCP--Server

使用说明

迷你MCP服务器

轻量级 模型上下文协议(MCP)服务器 建于 TypeScript 和那个 MCP-SDK,提供常见的实用工具,如天气查询、计算器、货币转换、时区处理和单位转换。

目录

特性

  • 天气查询:获取任何城市的当前天气信息
  • 计算器:执行数学计算
  • 货币转换器:在不同货币之间转换
  • 时区转换器:转换不同时区之间的时间
  • 单元转换器:在不同计量单位之间转换
  • 符合MCP协议:与模型上下文协议规范完全兼容
  • 检查员兼容:与MCP检查员一起进行测试和调试

先决条件

  • Node.js v18或更高版本
  • npm v8或更高
  • OpenWeather API密钥 (用于天气功能) ` 交换_日期_ PI_密钥

安装

  1. 克隆仓库:

    git clone <your-repo-url>
    cd mini-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 创建一个 .env 文件 在根目录中:

    OPENWEATHER_API_KEY=your_api_key_here
    EXCHANGE_RATE_API_KEY=your_api_key_here
    
  4. 构建项目:

    npm run build
    

配置

环境变量

创建一个 .env 包含以下变量的文件:

 OPENWEATHER_API_KEY=your_api_key_here
   EXCHANGE_RATE_API_KEY=your_api_key_here

获取OpenWeather API密钥

  1. 访问 开放天气
  2. 注册一个免费帐户
  3. 从您的帐户仪表板生成API密钥
  4. 将其添加到您的 .env 文件

获取EXCHANGE_RATE_API_KEY的步骤

访问API汇率网站 访问官方网站(https://v6.exchangerate-api.com/).

创建账户 单击注册并使用您的电子邮件地址注册。

验证您的邮箱 检查您的收件箱并确认您的电子邮件以激活您的帐户。

登录到您的仪表板 验证后,登录以访问API仪表板。

复制API密钥 您的API密钥将显示在仪表板中。复制它。

将API密钥添加到环境文件中 在.env文件中,添加:


用法

运行服务器

使用MCP Inspector进行开发:

npm run dev

这将:

  1. 构建TypeScript代码
  2. 启动MCP检查器
  3. 使用检查器界面启动服务器

用于生产:

npm run build
node dist/index.js

与MCP检查器一起使用

  1. 跑 npm run dev
  2. 检查员将于 http://localhost:6274
  3. 使用控制台中提供的身份验证令牌打开URL
  4. 现在,您可以交互式地测试所有工具

与Claude Desktop集成

添加到您的Claude Desktop配置文件中:

视窗: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mini-mcp-server": {
      "command": "node",
      "args": ["path/to/mini-mcp-server/dist/index.js"]
    }
  }
}

🛠️ 可用工具

1.天气工具(get_weather)

获取任何城市的最新天气信息。

请求:

{
  "name": "get_weather",
  "arguments": {
    "location": "London"
  }
}

响应:

{
  "success": true,
  "message": "Weather in London: clear sky, 15°C"
}

错误响应:

{
  "success": false,
  "error": "City not found"
}

2.计算器工具(calculate)

进行数学计算。

请求:

{
  "name": "calculate",
  "arguments": {
    "expression": "2 + 2 * 3"
  }
}

响应:

{
  "success": true,
  "result": 8
}

错误响应:

{
  "success": false,
  "error": "Invalid expression"
}

3.货币转换工具(convert_currency)

在不同货币之间转换金额。

请求:

{
  "name": "convert_currency",
  "arguments": {
    "amount": 100,
    "from": "USD",
    "to": "EUR"
  }
}

响应:

{
  "success": true,
  "amount": 100,
  "from": "USD",
  "to": "EUR",
  "result": 92.50,
  "rate": 0.925
}

错误响应:

{
  "success": false,
  "error": "Invalid currency code"
}

4.时区转换工具(convert_timezone)

在不同时区之间转换时间。

请求:

{
  "name": "convert_timezone",
  "arguments": {
    "time": "14:30",
    "from_timezone": "America/New_York",
    "to_timezone": "Europe/London"
  }
}

响应:

{
  "success": true,
  "original_time": "14:30",
  "from_timezone": "America/New_York",
  "converted_time": "19:30",
  "to_timezone": "Europe/London"
}

错误响应:

{
  "success": false,
  "error": "Invalid timezone"
}

5.单元转换工具(convert_unit)

在不同计量单位之间转换。

请求:

{
  "name": "convert_unit",
  "arguments": {
    "value": 100,
    "from_unit": "meters",
    "to_unit": "feet"
  }
}

响应:

{
  "success": true,
  "value": 100,
  "from_unit": "meters",
  "result": 328.08,
  "to_unit": "feet"
}

错误响应:

{
  "success": false,
  "error": "Incompatible units"
}

🔌 MCP协议

服务器信息

服务器实现模型上下文协议,并提供以下元数据:

{
  "name": "Simple MCP Server",
  "version": "1.0.0",
  "vendor": {
    "name": "Mini MCP",
    "url": "https://example.com"
  }
}

协议流

  1. 初始化:客户端发送初始化请求

    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "initialize",
      "params": {
        "protocolVersion": "2024-11-05",
        "capabilities": {},
        "clientInfo": {
          "name": "MCP Client",
          "version": "1.0.0"
        }
      }
    }
    
  2. 列出工具:客户请求可用的工具

    {
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/list"
    }
    

    响应:

    {
      "jsonrpc": "2.0",
      "id": 2,
      "result": {
        "tools": [
          {
            "name": "get_weather",
            "description": "Get current weather by city or location",
            "inputSchema": {
              "type": "object",
              "properties": {
                "location": { "type": "string" }
              },
              "required": ["location"]
            }
          }
        ]
      }
    }
    
  3. 呼叫工具:客户端调用工具

    {
      "jsonrpc": "2.0",
      "id": 3,
      "method": "tools/call",
      "params": {
        "name": "get_weather",
        "arguments": {
          "location": "London"
        }
      }
    }
    

    响应:

    {
      "jsonrpc": "2.0",
      "id": 3,
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"success\":true,\"message\":\"Weather in London: clear sky, 15°C\"}"
          }
        ]
      }
    }
    

运输

服务器使用 标准 用于通信的(标准输入/输出)传输,这是MCP服务器的标准。


💻 发展

项目结构

mini-mcp-server/
├── src/
│   ├── index.ts              # Main server entry point
│   └── tools/
│       ├── weather.ts        # Weather tool implementation
│       ├── calculator.ts     # Calculator tool implementation
│       ├── currency.ts       # Currency converter implementation
│       ├── timezone.ts       # Timezone converter implementation
│       └── unit.ts           # Unit converter implementation
├── dist/                     # Compiled JavaScript (generated)
├── .env                      # Environment variables
├── package.json
├── tsconfig.json
└── README.md

添加新工具

  1. 在中创建新文件 src/tools/:

    import type { Tool, Context } from "fastmcp";
    
    export const myTool: Tool<any, any> = {
      name: "my_tool",
      description: "Description of what the tool does",
      parameters: {
        type: "object",
        properties: {
          param1: { type: "string" }
        },
        required: ["param1"]
      },
    
      async execute(args: unknown, context: Context<any>): Promise<any> {
        const { param1 } = args as { param1: string };
        
        try {
          // Your tool logic here
          return { success: true, result: "output" };
        } catch (err: any) {
          return { success: false, error: err.message };
        }
      }
    };
    
  2. 导入并注册 src/index.ts:

    import { myTool } from "./tools/myTool.js";
    
    const tools = [..., myTool];
    
  3. 重建:

    npm run build
    

脚本

  • npm run build -将TypeScript编译为JavaScript
  • npm run dev -使用MCP检查器构建和运行

🐛 故障排除

常见问题

1.“OPENWEATHER_API_KEY未设置”错误

  • 确保您已创建 .env 根目录中的文件
  • 验证您的API密钥是否正确
  • 添加环境变量后重新启动服务器

2.“无法读取未定义的属性(读取‘vendor’)”错误

  • 更新MCP SDK: npm install @modelcontextprotocol/sdk@latest
  • 重建项目: npm run build
  • 使用旧版本的MCP SDK时会发生此错误

3.工具未显示在Claude Desktop中

  • 检查你的 claude_desktop_config.json 路径正确
  • 确保路径 dist/index.js 是绝对的
  • 配置更改后重新启动Claude Desktop
  • 检查Claude Desktop日志是否有错误

4.构建错误

  • 删除 node_modules 和 dist 文件夹
  • 跑 npm install 再次
  • 跑 npm run build

调试模式

要查看详细日志,请直接运行服务器:

node dist/index.js 2> debug.log

这将向输出错误消息 debug.log 用于调试。



贡献

欢迎投稿!请随时提交拉取请求,让我向您学习。


支持

如果您遇到任何问题或有疑问:

  1. 检查 故障排除 章节
  2. 审查MCP协议文件
  3. 在GitHub上打开一个问题
  4. 你可以在Linkedln上联系我https://www.linkedin.com/in/oladitisodiq/whatsapp:+2348102458866,Gmail:Oladitisodiq@gmail.com

资源