MCP属性服务器
用于OSM和Propertium数据的RestAPI+MCP服务器。
特性
- OpenAI集成用于文本处理和PDF分析
- SQLAlchemy+Pydantic用于数据库模型和验证
- PostgreSQL与PostGIS用于空间数据存储
- 用于地理数据的行星多边形API
入门指南
先决条件
- Docker和Docker Compose
- Python 3.12+
安装
- 克隆存储库
- 使用Docker Compose运行:
docker-compose up -d开发设置
# Install dependencies
uv sync
source .venv/bin/activate
uv run fastapi dev --app propertium.main:app ./src/propertium/main.py
API终点
行星多边形
GET /planet-polygons/-获取所有行星多边形(分页)GET /planet-polygons/{osm_id}-通过OSM ID获取特定的行星多边形POST /planet-polygons/-创建新的行星多边形
OpenAI处理
POST /openai/pdf-to-text-使用OpenAI将PDF转换为文本POST /openai/text-使用OpenAI处理文本
数据库模式
该应用程序将SQLAlchemy与PostgreSQL和PostGIS一起用于空间数据。主桌是 fct_planet_polygons 其存储具有以下字段的地理多边形数据:
osm_id-主键,OSM IDadmin_level-行政级别boundary-边界类型name-多边形的名称z_order-渲染的Z顺序way_area-多边形的面积way-几何数据(PostGIS)tags-JSON标签映射country-国家代码avr_rent_price-平均租金价格avr_rent_price_per_m-每平方米平均租金avr_sale_price-平均销售价格avr_sale_price_per_m-每平方米平均售价is_city_for_search-搜索功能标志name_en-英文名称code-代码alpha2-Alpha-2代码border_type-边框类型
请求示例
创建行星多边形
curl -X POST \
http://localhost:8000/planet-polygons/ \
-H "Content-Type: application/json" \
-d '{
"osm_id": 123456789,
"admin_level": "8",
"boundary": "administrative",
"name": "Example City",
"z_order": 0,
"way_area": 1234.56,
"tags": {"place": "city", "population": "100000"},
"country": "US"
}'