1. 服务概述
一句话简介:Python MCP服务器演示项目,提供天气查询和SQLite数据库查询两个工具,适合学习MCP服务器开发
- 服务名称:mcp-server-demo
- 版本号:Latest
- 开发者/提供方:penguinszp001
- 协议类型:MCP (Model Context Protocol)
2. 核心功能
列出该MCP服务提供的主要功能点:
- 天气查询:通过wttr.in查询指定城市的当前天气
- 数据库查询:对本地SQLite数据库执行只读SELECT查询
- 自动初始化:启动时自动创建demo.db并填充示例数据
- OpenAI集成:可选的OpenAI API集成示例
- FastMCP框架:使用FastMCP框架简化MCP服务器开发
- 本地运行:本地MCP服务器,无需远程部署
3. 使用场景
描述该服务适合在什么情况下使用:
- 学习MCP:学习如何从头开始构建MCP服务器
- 开发测试:测试MCP客户端功能
- 原型开发:快速原型开发和概念验证
- 教学示例:作为MCP服务器开发的教学示例
- 工具集成:演示如何集成外部API和数据库
4. 接入方式
4.1 服务端点
本地服务器:http://localhost:8000/mcp
数据库文件:demo.db(自动创建)
4.2 认证与权限
无需认证:本地演示服务器,无需API密钥
OpenAI集成:可选,需要OPENAI_API_KEY环境变量
数据库权限:仅允许SELECT查询,拒绝其他SQL操作
4.3 数据格式
天气查询返回:JSON摘要字段,包括:
- 温度、体感温度
- 湿度、风速
- 简短天气状况
数据库查询返回:JSON格式的查询结果行
4.4 服务器配置
环境设置:
python -m venv .venv source .venv/bin/activate pip install -U pip pip install -e .运行MCP服务器:
mcp-server-demoOpenAI API集成(可选):
cp .env.example .env # 编辑.env文件,填入OPENAI_API_KEY python client_openai_api.py5. 接口定义
工具列表
| 工具名称 | 参数 | 描述 |
|---|---|---|
| weather | city: str | 查询指定城市的当前天气,返回JSON摘要(温度、体感温度、湿度、风速、天气状况) |
| query_db | sql: str | 对本地SQLite数据库执行只读SELECT查询,返回JSON格式的结果行。拒绝非SELECT SQL以确保安全 |
工具行为说明
weather(city: str):
- 使用wttr.in API查询天气
- 返回JSON摘要字段
- 包含温度、体感温度、湿度、风速和简短天气状况
query_db(sql: str):
- 仅允许SELECT查询
- 返回JSON格式的结果行
- 拒绝非SELECT SQL以确保安全
- 适合此入门演示的安全设计
6. 快速开始
6.1 环境要求
- Python 3.8+
- pip包管理器
- 可选:OpenAI API密钥(用于OpenAI集成)
6.2 示例代码
安装和运行:
python -m venv .venv source .venv/bin/activate pip install -U pip pip install -e . mcp-server-demo使用MCP Inspector检查(可选):
npx @modelcontextprotocol/inspector然后连接到本地Python服务器
OpenAI API集成:
cp .env.example .env # 编辑.env文件,填入OPENAI_API_KEY # 终端1:启动服务器 mcp-server-demo # 终端2:运行OpenAI客户端 python client_openai_api.py7. 注意事项
- 演示项目:这是一个演示项目,适合学习MCP服务器开发
- 数据库安全:query_db仅允许SELECT查询,拒绝INSERT、UPDATE、DELETE等操作
- 自动初始化:启动时自动创建demo.db数据库并填充示例数据
- OpenAI集成:使用OpenAI Responses API与MCP工具定义集成
- 本地服务器:通过http://localhost:8000/mcp访问
- 项目文件:server.py(FastMCP服务器+工具定义)、client_openai_api.py(OpenAI API调用示例)、pyproject.toml(依赖+脚本入口点)
- 许可证:未指定许可证
- 相关集成:OpenAI API、SQLite数据库