使用说明
迷你MCP服务器
轻量级 模型上下文协议(MCP)服务器 建于 TypeScript 和那个 MCP-SDK,提供常见的实用工具,如天气查询、计算器、货币转换、时区处理和单位转换。
目录
特性
- 天气查询:获取任何城市的当前天气信息
- 计算器:执行数学计算
- 货币转换器:在不同货币之间转换
- 时区转换器:转换不同时区之间的时间
- 单元转换器:在不同计量单位之间转换
- 符合MCP协议:与模型上下文协议规范完全兼容
- 检查员兼容:与MCP检查员一起进行测试和调试
先决条件
- Node.js v18或更高版本
- npm v8或更高
- OpenWeather API密钥 (用于天气功能) ` 交换_日期_ PI_密钥
安装
-
克隆仓库:
git clone <your-repo-url> cd mini-mcp-server -
安装依赖项:
npm install -
创建一个
.env文件 在根目录中:OPENWEATHER_API_KEY=your_api_key_here EXCHANGE_RATE_API_KEY=your_api_key_here -
构建项目:
npm run build
配置
环境变量
创建一个 .env 包含以下变量的文件:
OPENWEATHER_API_KEY=your_api_key_here
EXCHANGE_RATE_API_KEY=your_api_key_here
获取OpenWeather API密钥
- 访问 开放天气
- 注册一个免费帐户
- 从您的帐户仪表板生成API密钥
- 将其添加到您的
.env文件
获取EXCHANGE_RATE_API_KEY的步骤
访问API汇率网站 访问官方网站(https://v6.exchangerate-api.com/).
创建账户 单击注册并使用您的电子邮件地址注册。
验证您的邮箱 检查您的收件箱并确认您的电子邮件以激活您的帐户。
登录到您的仪表板 验证后,登录以访问API仪表板。
复制API密钥 您的API密钥将显示在仪表板中。复制它。
将API密钥添加到环境文件中 在.env文件中,添加:
用法
运行服务器
使用MCP Inspector进行开发:
npm run dev
这将:
- 构建TypeScript代码
- 启动MCP检查器
- 使用检查器界面启动服务器
用于生产:
npm run build
node dist/index.js
与MCP检查器一起使用
- 跑
npm run dev - 检查员将于
http://localhost:6274 - 使用控制台中提供的身份验证令牌打开URL
- 现在,您可以交互式地测试所有工具
与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"
}
}
协议流
-
初始化:客户端发送初始化请求
{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": { "name": "MCP Client", "version": "1.0.0" } } } -
列出工具:客户请求可用的工具
{ "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"] } } ] } } -
呼叫工具:客户端调用工具
{ "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
添加新工具
-
在中创建新文件
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 }; } } }; -
导入并注册
src/index.ts:import { myTool } from "./tools/myTool.js"; const tools = [..., myTool]; -
重建:
npm run build
脚本
npm run build-将TypeScript编译为JavaScriptnpm 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 用于调试。
贡献
欢迎投稿!请随时提交拉取请求,让我向您学习。
支持
如果您遇到任何问题或有疑问:
- 检查 故障排除 章节
- 审查MCP协议文件
- 在GitHub上打开一个问题
- 你可以在Linkedln上联系我https://www.linkedin.com/in/oladitisodiq/whatsapp:+2348102458866,Gmail:Oladitisodiq@gmail.com