Skip to main content
Glama
wrdan

MCP Canteen Server

by wrdan
README.md
# 餐厅数据 MCP Server

本服务用于查询职工餐厅就餐人数数据,提供指定日期范围内的早餐和午餐就餐人数统计。

docs: https://modelcontextprotocol.io/quickstart/server

## 安装

### 通过 pip 安装

```bash
pip install mcp-server-canteen
```

### 通过 uv 安装

```bash
uv pip install mcp-server-canteen
```

### 开发环境安装

```bash
git clone https://github.com/wrdan/mcp-server-canteen.git
cd mcp-server-canteen
uv pip install -e .
```

## 环境变量配置

在使用服务之前,需要配置以下环境变量:

- `CANTEEN_API_TOKEN`: API认证令牌
- `CANTEEN_API_BASE`: API基础URL

### 环境变量获取方式

1. 联系系统管理员获取 API 认证令牌
2. API基础URL通常由系统管理员提供

### 设置环境变量

#### Windows
```bash
set CANTEEN_API_TOKEN=your_token
set CANTEEN_API_BASE=your_base_url
```

#### Linux/Mac
```bash
export CANTEEN_API_TOKEN=your_token
export CANTEEN_API_BASE=your_base_url
```

## 服务运行

### 使用 uv 运行

```bash
uv run mcp-server-canteen
```

### 使用 Python 运行

```bash
python -m mcp_server_canteen.server
```

## 功能说明

服务提供以下功能:

- `get_canteen_data`: 查询指定日期范围内的餐厅就餐人数数据
  - 参数: 
    - `start_date`: 开始日期,格式为YYYYMMDD(如20250331)
    - `end_date`: 结束日期,格式为YYYYMMDD(如20250331)
    - `period`: 相对时间范围,可选值:
      - `today`: 今天
      - `yesterday`: 昨天
      - `day_before_yesterday`: 前天
      - `this_week`: 本周
      - `last_week`: 上周
      - `this_month`: 本月
      - `last_month`: 上月
  - 返回: 包含早餐人数、午餐人数和总计人数的文本统计

## 使用 Claude for Desktop 作为客户端测试

### 配置

打开并编辑文件: ~/Library/Application\ Support/Claude/claude_desktop_config.json,内容如下:

<details>
<summary>使用 uvx</summary>

```json
"mcpServers": {
  "canteen": {
    "command": "uvx",
    "args": ["mcp-server-canteen"],
    "env": {
        "CANTEEN_API_TOKEN": "CANTEEN_API_TOKEN",
        "CANTEEN_API_BASE": "ANTEEN_API_BASE"
    }
  }
}
```
</details>

<details>
<summary>使用 uv</summary>

```json
"mcpServers": {
  "canteen": {
    "command": "uv",
    "args": ["run", "mcp-server-canteen"],
    "env": {
        "CANTEEN_API_TOKEN": "CANTEEN_API_TOKEN",
        "CANTEEN_API_BASE": "ANTEEN_API_BASE"
    }
  }
}
```
</details>

<details>
<summary>本地测试</summary>

```json
"mcpServers": {
  "canteen": {
    "command": "python",
    "args": ["-m", "mcp-server-canteen.server"],
    "env": {
        "CANTEEN_API_TOKEN": "CANTEEN_API_TOKEN",
        "CANTEEN_API_BASE": "ANTEEN_API_BASE"
    }
  }
}
```
</details>

### 重启 Claude for Desktop

重启不报错,且有`锤子`图标显示可用的 MCP Tool,即为成功;否则,查看日志排查

## 错误处理

### 常见错误及解决方案

1. **环境变量未设置**
   - 错误信息:`缺少必要的环境变量配置`
   - 解决方案:确保已正确设置所有必需的环境变量

2. **日期格式错误**
   - 错误信息:`日期格式不正确,请使用YYYYMMDD格式`
   - 解决方案:检查日期格式是否正确,例如:20240321

3. **API请求失败**
   - 错误信息:`HTTP请求失败` 或 `API返回错误`
   - 解决方案:
     - 检查网络连接
     - 验证API令牌是否正确
     - 确认API基础URL是否正确

4. **服务器连接失败**
   - 错误信息:`无法连接到MCP服务器`
   - 解决方案:
     - 确保服务器正在运行
     - 检查端口是否被占用
     - 验证配置文件是否正确

## Claude for Desktop 日志

日志文件夹:~/Library/Logs/Claude

来自具体 MCP Server 的日志:mcp-server-canteen.log

MCP 连接通用日志:mcp.log

## 工作原理

1. 客户将您的查询发送给 Claude
2. Claude 分析可用的工具并决定使用哪一个
3. 客户端通过 MCP 服务器执行所选工具
4. 结果被发回给 Claude
5. Claude 制定了自然语言响应
6. 答案已经展示给你了!

TDQS

C2.8/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool 'get_canteen_data' has a clear, distinct purpose of retrieving canteen occupancy data.

Naming Consistency5/5

The naming follows a consistent verb_noun pattern with 'get_canteen_data'. Since there is only one tool, it inherently maintains perfect consistency without any deviations or mixed conventions.

Tool Count2/5

A single tool is too few for a server named 'MCP Canteen Server', which suggests a broader scope for managing canteen-related data. This minimal toolset likely leaves significant functionality gaps, such as updating or analyzing data, making it feel incomplete for the domain.

Completeness1/5

The toolset is severely incomplete for a canteen management domain. It only provides data retrieval ('get_canteen_data'), with no tools for creating, updating, or deleting data, or for other operations like menu management or reservation handling, leading to dead ends for agents.

Maintenance

ActivityInactive
ResponsivenessNo issues