迷你MCP服务器
轻量级 模型上下文协议(MCP)服务器 建于 TypeScript 和那个 MCP-SDK,提供常见的实用工具,如天气查询、计算器、货币转换、时区处理和单位转换。
目录
特性
- 天气查询:获取任何城市的当前天气信息
- 计算器:执行数学计算
- 货币转换器:在不同货币之间转换
- 时区转换器:转换不同时区之间的时间
- 单元转换器:在不同计量单位之间转换
- 符合MCP协议:与模型上下文协议规范完全兼容
- 检查员兼容:与MCP检查员一起进行测试和调试
先决条件
- Node.js v18或更高版本
- npm v8或更高
- OpenWeather API密钥 (用于天气功能)
\` 交换_日期\_ PI_密钥
安装
- 克隆仓库:
git clone
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 = {
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): Promise {
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
______________________________________________________________________
