EzanVakti MCP 服务器是一个用 C# 实现的模型上下文协议(MCP)服务器,用于从 EzanVakti API(Diyanet - 土耳其宗教事务局)获取伊斯兰教祈祷时间。
dotnet restore
dotnet build
开发环境:
dotnet run
生产环境:
dotnet publish -c Release
./bin/Release/net8.0/publish/EzanVakti.MCP.Server
在 .vscode/mcp.json 中添加以下内容:
{
"mcpServers": {
"ezanvakti": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/EzanVakti.MCP.Server.csproj"],
"env": {}
}
}
}
在 Claude Desktop 配置中添加以下内容:
{
"mcpServers": {
"ezanvakti": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/EzanVakti.MCP.Server.csproj"]
}
}
}
列出 EzanVakti 数据库中所有可用的国家。 用法:“Show me all countries with prayer times”
获取特定国家的城市/省份。 参数:
countryId:国家 ID(例如,土耳其的 ID 为 "2")
用法:“Show me cities in Turkey”获取特定城市内的地区。 参数:
cityId:城市 ID(例如,伊斯坦布尔的 ID 为 "539")
用法:“Show me districts in Istanbul”获取某个地区的完整月度祈祷时间表。 参数:
districtId:地区 ID
用法:“Get prayer times for district 9535”搜索城市并获取其祈祷时间。 参数:
cityName:要搜索的城市名称countryId:国家 ID(默认为土耳其的 "2")
用法:“Get prayer times for Istanbul”获取某个地区今日的祈祷时间。 参数:
districtId:地区 ID
用法:“What are today's prayer times for district 9535?”每个祈祷时间条目包括:
Imsak:黎明前(晨礼时间)Gunes:日出Ogle:中午(晌礼)Ikindi:下午(晡礼)Aksam:傍晚(昏礼)Yatsi:夜晚(宵礼)KibleSaati:朝向麦加的时间(太阳位于克尔白方向)GunesDogus/GunesBatis:精确的日出/日落时间以下是一些可以使用的自然语言查询:
构建 Docker 镜像:
dotnet publish --os linux --arch x64 /t:PublishContainer
在容器中运行:
docker run -it ezanvakti-mcp-server:latest
EzanVakti API 有以下限制:
由于祈祷时间是按月提供的,通常每个地点每月只需要一个请求。
此 MCP 服务器基于以下技术构建:
该 MCP 服务器运用 ModelContextProtocol SDK 官方 C# 实现,借助 HttpClient 与 EzanVakti API 通信,同时注重资源的合理释放。采用依赖注入模式,将不同功能模块的关注点分离,提高了代码的可维护性和可扩展性。使用 System.Text.Json 进行 JSON 序列化,保证了数据处理的高效性。日志记录功能则有助于全面跟踪和排查错误,确保系统的稳定性。
本项目是开源的。EzanVakti API 由土耳其宗教事务局提供。
如果遇到问题或有疑问: