Ezanvakti.mcp.server

Ezanvakti.mcp.server

🚀 EzanVakti MCP 服务器

EzanVakti MCP 服务器是一个用 C# 实现的模型上下文协议(MCP)服务器,用于从 EzanVakti API(Diyanet - 土耳其宗教事务局)获取伊斯兰教祈祷时间。

✨ 主要特性

  • 国家列表:获取所有可用的国家。
  • 城市搜索:查找某个国家内的城市。
  • 地区查询:获取某个城市内的地区。
  • 祈祷时间:检索任何地区的月度祈祷时间表。
  • 智能搜索:通过名称搜索城市并获取其祈祷时间。
  • 今日时间:获取当前日期的祈祷时间表。

🚀 快速开始

先决条件

  • .NET 8.0 SDK 或更高版本。
  • 兼容的 MCP 客户端(如带有 Copilot 的 VS Code、Claude Desktop 等)。

📦 安装指南

  1. 克隆或下载项目文件。
  2. 恢复依赖项:
    dotnet restore
    
  3. 构建项目:
    dotnet build
    

运行服务器

开发环境:

dotnet run

生产环境:

dotnet publish -c Release
./bin/Release/net8.0/publish/EzanVakti.MCP.Server

📚 详细文档

MCP 客户端配置

VS Code 配置

.vscode/mcp.json 中添加以下内容:

{
"mcpServers": {
"ezanvakti": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/EzanVakti.MCP.Server.csproj"],
"env": {}
}
}
}

Claude Desktop 配置

在 Claude Desktop 配置中添加以下内容:

{
"mcpServers": {
"ezanvakti": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/EzanVakti.MCP.Server.csproj"]
}
}
}

可用工具

1. GetCountries

列出 EzanVakti 数据库中所有可用的国家。 用法:“Show me all countries with prayer times”

2. GetCities

获取特定国家的城市/省份。 参数

  • countryId:国家 ID(例如,土耳其的 ID 为 "2") 用法:“Show me cities in Turkey”

3. GetDistricts

获取特定城市内的地区。 参数

  • cityId:城市 ID(例如,伊斯坦布尔的 ID 为 "539") 用法:“Show me districts in Istanbul”

4. GetPrayerTimes

获取某个地区的完整月度祈祷时间表。 参数

  • districtId:地区 ID 用法:“Get prayer times for district 9535”

5. SearchCityPrayerTimes

搜索城市并获取其祈祷时间。 参数

  • cityName:要搜索的城市名称
  • countryId:国家 ID(默认为土耳其的 "2") 用法:“Get prayer times for Istanbul”

6. GetTodayPrayerTimes

获取某个地区今日的祈祷时间。 参数

  • districtId:地区 ID 用法:“What are today's prayer times for district 9535?”

祈祷时间数据结构

每个祈祷时间条目包括:

  • 日期信息:伊斯兰历和公历日期。
  • 祈祷时间
    • Imsak:黎明前(晨礼时间)
    • Gunes:日出
    • Ogle:中午(晌礼)
    • Ikindi:下午(晡礼)
    • Aksam:傍晚(昏礼)
    • Yatsi:夜晚(宵礼)
  • 其他信息
    • KibleSaati:朝向麦加的时间(太阳位于克尔白方向)
    • GunesDogus/GunesBatis:精确的日出/日落时间

示例查询

以下是一些可以使用的自然语言查询:

  • “What are the prayer times in Istanbul?”
  • “Show me all cities in Turkey”
  • “Get today's prayer schedule for Ankara”
  • “Find districts in Izmir”
  • “What time is Maghrib prayer in Istanbul today?”

Docker 支持

构建 Docker 镜像:

dotnet publish --os linux --arch x64 /t:PublishContainer

在容器中运行:

docker run -it ezanvakti-mcp-server:latest

API 速率限制

EzanVakti API 有以下限制:

  • 每 5 分钟 30 个请求。
  • 每天 200 个请求。

由于祈祷时间是按月提供的,通常每个地点每月只需要一个请求。

架构

此 MCP 服务器基于以下技术构建:

  • ModelContextProtocol SDK:官方 C# 实现。
  • HttpClient:用于与 API 进行通信,并进行了适当的资源释放。
  • 依赖注入:实现了关注点的清晰分离。
  • 日志记录:全面的错误跟踪。
  • JSON 序列化:使用快速的 System.Text.Json。

🔧 技术细节

该 MCP 服务器运用 ModelContextProtocol SDK 官方 C# 实现,借助 HttpClient 与 EzanVakti API 通信,同时注重资源的合理释放。采用依赖注入模式,将不同功能模块的关注点分离,提高了代码的可维护性和可扩展性。使用 System.Text.Json 进行 JSON 序列化,保证了数据处理的高效性。日志记录功能则有助于全面跟踪和排查错误,确保系统的稳定性。

🤝 贡献指南

  1. 分叉仓库。
  2. 创建功能分支。
  3. 提交更改。
  4. 推送到分支。
  5. 创建拉取请求。

📄 许可证

本项目是开源的。EzanVakti API 由土耳其宗教事务局提供。

🛠️ 支持

如果遇到问题或有疑问:

  • 查看日志以获取错误详细信息。
  • 验证 API 连接性。
  • 确保 MCP 客户端配置正确。
  • 如果收到 429 错误,请检查速率限制。
  • 0 关注
  • 0 收藏,30 浏览
  • system 提出于 2025-10-01 23:54

相似服务问题

相关AI产品