维也纳实时MCP服务器
   
一个全面的MCP服务器,通过整合的组合工具提供对维也纳生活助理功能的编程访问。
概述
这 维也纳直播mcp 服务器将维也纳生活助理转换为完全可编程的个人助理。它实现了 波特曼托图案 在5个逻辑类别中组织63个工具,为以下对象提供干净、可发现的API:
- 购物管理 -商店优惠、购物清单、预算跟踪
- 旅行计划 -交通时间表、行程规划、天气综合
- 费用跟踪 -财务管理、预算分析、支出洞察
- 媒体管理 -统一访问Plex、Calibre和Immich库
- 个人计划 -待办事项管理、日历、目标和生产力工具
建筑
波特曼托图案
每个组合都为特定领域提供了一组有凝聚力的工具:
graph TD
A[Vienna Live MCP Server] --> B[shopping_manager]
A --> C[travel_manager]
A --> D[expenses_manager]
A --> E[media_manager]
A --> F[planning_manager]
B --> B1[get_store_offers]
B --> B2[compare_prices]
B --> B3[shopping_list_create]
C --> C1[get_next_tram]
C --> C2[plan_day_trip]
C --> C3[get_train_schedule]
D --> D1[add_expense]
D --> D2[analyze_spending_patterns]
D --> D3[set_budget]
E --> E1[search_plex_library]
E --> E2[search_calibre_library]
E --> E3[search_immich_photos]
F --> F1[create_todo]
F --> F2[get_productivity_stats]
F --> F3[set_goal]双重运输支持
服务器支持两种MCP传输:
- STDIO传输:用于与MCP客户端(Cursor、Claude Desktop等)集成
- HTTP传输:用于直接web API访问和web应用程序集成
快速开始
先决条件
- Python 3.11+
- 数据库:SQLite(默认,无需设置)或PostgreSQL(可选,用于生产)
- 可选外部API:
- 维也纳API(维也纳公共交通) - OpenWeatherMap API(天气数据) - 货币兑换API - BB API(奥地利铁路) - Plex、Calibre、Immich API(媒体服务)
备注:默认情况下,服务器使用模拟数据。真正的API集成是可选的,需要API密钥。
安装
先决条件
- 紫外线 已安装(推荐)
- Python 3.12+
快速开始
立即通过运行 uvx:
uvx vienna-live-mcpClaude桌面集成
添加到您的 claude_desktop_config.json:
"mcpServers": {
"vienna-live-mcp": {
"command": "uv",
"args": ["--directory", "D:/Dev/repos/vienna-live-mcp", "run", "vienna-live-mcp"]
}
}运行服务器
STDIO模式(MCP客户端集成):
python -m vienna_live_mcp.serverHTTP模式(直接API访问):
python -m vienna_live_mcp.server --transport http --port 8000工具类别
购物经理(11个工具)
| 工具 | 说明 |
|---|---|
get_store_offers | 获取Spar、Billa、Hofer的最新报价 |
compare_prices | 比较各商店的价格 |
find_stores_nearby | 查找某个地点附近的商店 |
shopping_list_create | 创建购物清单 |
shopping_list_add_item | 将项目添加到列表 |
get_shopping_recommendations | 人工智能购物建议 |
budget_check_item | 根据预算检查采购情况 |
find_coupons | 查找可用的优惠券和折扣 |
analyze_receipt | OCR和分类收据项目 |
get_shopping_history | 历史购物数据和模式 |
差旅经理(15个工具)
| 工具 | 说明 |
|---|---|
get_next_tram | 下一站从Wiener Linien站出发 |
get_transport_schedule | 线路和车站的完整时间表 |
get_transport_disruptions | 当前的延误和服务中断 |
plan_day_trip | 完整的一日游行程 |
get_travel_info | 城市旅游综合信息 |
get_weather_for_travel | 针对旅行优化的天气预报 |
get_train_schedule | BB列车时刻表 |
get_bus_schedule | 长途巴士时刻表 |
get_flight_info | 航班信息(为API集成做好准备) |
get_currency_exchange | 当前汇率 |
get_visa_requirements | 目的地签证信息 |
calculate_travel_cost | 总差旅费计算 |
get_sleeper_train_schedule | 夜航卧铺列车时刻表 |
get_traffic_info | 实时交通信息 |
book_transport_ticket | 交通票预订(API已准备就绪) |
费用管理器(12个工具)
| 工具 | 说明 |
|---|---|
add_expense | 添加费用条目 |
update_expense | 更新现有费用 |
delete_expense | 删除费用条目 |
get_expenses_by_category | 按类别分组的费用 |
get_expenses_by_date_range | 日期范围内的费用 |
get_top_spending_categories | 最高支出类别 |
analyze_spending_patterns | 人工智能驱动的支出分析 |
set_budget | 设置类别预算 |
get_budget_status | 当前预算状态和警报 |
predict_monthly_expense | 费用预测 |
compare_expenses_period | 期间比较 |
get_savings_recommendations | 个性化储蓄建议 |
export_expenses | 以CSV/JSON/PDF格式导出 |
import_expenses | 从外部来源导入 |
媒体管理器(10个工具)
| 工具 | 说明 |
|---|---|
search_plex_library | 搜索Plex媒体收藏 |
get_currently_watching | 当前正在观看/阅读项目 |
get_recently_added | 最近跨服务添加的媒体 |
get_plex_recommendations | 个性化媒体推荐 |
search_calibre_library | 搜索电子书库 |
get_reading_progress | 阅读进度跟踪 |
search_immich_photos | 搜索照片库 |
get_recent_photos | 带有元数据的最新照片 |
create_media_playlist | 跨服务创建播放列表 |
get_media_stats | 全面的媒体消费统计数据 |
find_similar_media | 跨库查找类似内容 |
analyze_media_preferences | 媒体偏好分析 |
get_media_suggestions | 基于人工智能的媒体建议 |
计划经理(15种工具)
| 工具 | 说明 |
|---|---|
create_todo | 创建具有优先级的待办事项 |
update_todo | 更新现有待办事项 |
get_todos_by_category | 按类别/状态筛选待办事项 |
complete_todo | 将待办事项标记为已完成 |
get_calendar_events | 日期范围内的日历事件 |
schedule_meeting | 安排会议和约会 |
check_schedule_conflicts | 检测日程安排冲突 |
get_productivity_stats | 生产力指标和见解 |
set_goal | 设定并跟踪目标 |
get_goals_progress | 目标进展监测 |
create_habit | 培养追踪习惯 |
log_habit_completion | 记录习惯完成情况 |
get_habit_streak | 习惯追踪 |
get_motivational_quote | 按类别列出的励志名言 |
plan_week | 生成每周计划建议 |
配置
环境变量
# Database Configuration
DATABASE_URL=postgresql://user:password@localhost:5432/vienna_life_assistant
# External API Keys
WIENER_LINIEN_API_KEY=your_wiener_linien_key
OPENWEATHER_API_KEY=your_weather_key
CURRENCY_API_KEY=your_currency_key
# Media Service URLs
PLEX_SERVER_URL=http://plex.local:32400
PLEX_TOKEN=your_plex_token
CALIBRE_URL=http://calibre.local:8080
IMMICH_URL=http://immich.local:2283
IMMICH_API_KEY=your_immich_key
# Redis (for background tasks)
REDIS_URL=redis://localhost:6379/0服务集成
该服务器与Vienna Life Assistant的生态系统集成:
- 数据库:与web应用程序共享PostgreSQL
- 维也纳 线:公共交通数据
- plex流媒体服务器:媒体服务器集成
- 卡利伯:电子书库访问
- 伊姆希:照片管理
- 天气API:旅行计划支持
- 货币API:差旅费计算
测试
# Run all tests
pytest
# Run with coverage
pytest --cov=vienna_live_mcp
# Run specific portmanteau tests
pytest tests/test_shopping_manager.py
pytest tests/test_travel_manager.pyMCPB包装
服务器支持MCPB(MCP二进制)打包,便于分发:
# Build MCPB package
mcpb build
# Install from MCPB
mcpb install vienna-live-mcp.mcpb集成
MCP客户端集成
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main():
# Connect to vienna-live-mcp server
server_params = StdioServerParameters(
command="python",
args=["-m", "vienna_live_mcp.server"]
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Use shopping manager tools
result = await session.call_tool("get_store_offers", {"store_name": "spar"})
print(f"Spar offers: {result}")
# Use travel manager tools
tram_info = await session.call_tool("get_next_tram", {"station_name": "Stephansplatz"})
print(f"Next tram: {tram_info}")Web应用程序集成
Vienna Life Assistant网络应用程序与此MCP服务器集成,以增强功能:
// Example: Using MCP client in React
import { MCPClient } from '@vienna-life-assistant/mcp-client';
const client = new MCPClient({
transport: 'http',
baseURL: 'http://localhost:8000'
});
// Get shopping recommendations
const recommendations = await client.callTool('get_shopping_recommendations', {
based_on: 'recent_purchases'
});未来的增强功能
- 真正的API集成:与所有外部服务完全集成
- 机器学习:增强的人工智能建议和预测
- 多用户支持:用户隔离和权限
- 高级分析:深入洞察和趋势分析
- 移动SDK:本地移动应用程序集成
- 插件系统:可扩展的工具架构
🛡️ 工业级质量堆栈
该项目坚持 索塔14.1 高保真代理编排的工业标准:
- Python(核心): 拉夫 用于裁剪和格式化。零容忍
print核心处理程序中的语句(T201). - Web应用程序(用户界面): 生物群系 用于亚毫秒级的起毛。严格
noConsoleLog执行。 - 协议遵从:硬化
stdout/stderr隔离,以确保防崩溃的JSON-RPC通信。 - 自动化: Justfile 所有舰队行动的食谱(
just lint,just fix,just dev). - 安全:通过以下方式进行自动化审计
bandit和safety.
许可证
MIT许可证-请参阅 许可证 了解详情。
贡献
- 分叉存储库
- 创建要素分支
- 添加新功能的测试
- 提交拉取请求
支持
- 问题:
- 讨论:
- 文档: MCP中央文件
致谢
______________________________________________________________________
维也纳制造
