位置MCP#SongMCP
一个最小的模型上下文提供程序(MCP)脚本,在运行时返回用户当前基于公共IP的位置。一个最小的MCP风格的服务器(Python+FastAPI),它公开了一个工具 get_song_recommendation.
它的作用结束点
GET /tools--列出可用工具和元数据
当你奔跑时 location_mcp.py,它使用ipinfo.io服务获取您的位置,并打印一个JSON有效载荷,其中包含:- POST /run_tool --执行一个工具。身体必须匹配 RunToolRequest (工具名称+输入)
- IP --您的公共IP地址快速运行(Windows PowerShell):
- 城市 --检测到的城市
- 区域 --州/省powershell
- 国家 --国家代码#创建和激活venv(可选但推荐)
- 位置 --纬度和经度(如果可用)python-m venv.venv; ..venv\\Scripts\\Activate.ps1
- 原始 --来自ipinfo.iopip install-r requirements.txt的完整响应
uvicorn SongMCP.main:应用程序--重新加载--主机127.0.0.1--端口8000
安装\\\`
- 克隆此存储库:或运行包含的测试客户端脚本:
python test_client.py
git clone git@github.com:arush3218/LocationMCP.gitLightweight location MCP
cd LocationMCP------------------------
还有一个非FastAPI MCP风格的小脚本,可以返回您当前的
- (可选但推荐)创建虚拟环境:运行时基于公共IP的位置。它使用ipinfo.io(公共JSON端点)。
python -m venv .venvRun it with:
.\.venv\Scripts\Activate.ps1
python定位_mcp.py
3. 安装依赖项:\`\`\`
pip install -r requirements.txtThe script prints a compact JSON payload containing ip, city, region,
服务的回应。
用法
注意:此脚本取决于 requests 图书馆。如果缺少,请安装
运行脚本:it with pip install requests.
python location_mcp.py```json
"tool_name": "get_song_recommendation",
Example output: "input": { "mood_or_genre": "lofi" }
}
{
"ip": "106.51.251.74",Response: JSON with `tool_name` and `result` (list of song objects with `title` and `artist`).
"city": "Bengaluru",
"region": "Karnataka",
"country": "IN",
"loc": {
"latitude": 12.9719,
"longitude": 77.5937
},
"raw": {
"ip": "106.51.251.74",
"hostname": "106.51.251.74.actcorp.in",
"city": "Bengaluru",
"region": "Karnataka",
"country": "IN",
"loc": {
"latitude": 12.9719,
"longitude": 77.5937
},
"org": "AS24309 Atria Convergence Technologies Pvt. Ltd.",
"postal": "562114",
"timezone": "Asia/Kolkata"
}
}入口点
入口点是 location_mcp.py.当直接执行时,它:
- 从ipinfo.io获取位置数据
- 解析
loc字段转换为纬度/经度 - 将JSON有效负载打印到stdout
您还可以导入 get_current_location() 其他Python脚本中的函数:
from location_mcp import get_current_location
location = get_current_location()
print(location)错误处理
如果脚本无法访问ipinfo.io服务,或者 requests 库未安装,它将向stderr打印一条错误消息,并返回代码2退出。
许可证
麻省理工学院
