MCP服务器
MCP服务器为非政府组织提供对2000多个德国资助项目的结构化访问。
建筑
CorrelAid parquet (updated every ~2 days)
↓
enrich.py ← downloads parquet, enriches via LLM (OpenAI/Anthropic), builds SQLite
↓
foerdermittel.db ← SQLite + FTS5 full-text search
↓
mcp_server.py ← MCP server (stdio/SSE) + REST APItaxonomy.yaml 定义在LLM丰富过程中用作枚举约束的受控词汇表(超类别、主题、目标组、资金类型、状态)。
设置
git clone https://github.com/exlab-code/foerdermittel-mcp.git
cd foerdermittel-mcp
pip install -r requirements.txt
# Configure API key
cp .env.example .env
# Edit .env with your OpenAI API key (default provider)构建数据库
# Full run (~2000 programs, ~$1-2 with gpt-4o-mini, ~15 min)
python enrich.py
# Test with a few programs first
python enrich.py --limit 5
# Subsequent runs are incremental (only re-enriches changed programs)
python enrich.py丰富选项
python enrich.py # incremental run
python enrich.py --force # re-enrich everything
python enrich.py --limit 10 # only N programs (for testing)
python enrich.py --dry-run # download + filter only, no API calls
python enrich.py --stats # print DB statistics
python enrich.py --provider anthropic # use Anthropic instead of OpenAI
python enrich.py --model gpt-4o # use a specific modelMCP服务器
本地(stdio)-用于克劳德代码/克劳德桌面
python mcp_server.py远程(SSE)-用于共享/公共访问
python mcp_server.py --transport sse # default port 8080
python mcp_server.py --transport sse --port 3000 # custom port客户端配置
添加到您的克劳德代码 .mcp.json 或克劳德桌面 claude_desktop_config.json:
{
"mcpServers": {
"foerdermittel": {
"command": "python3",
"args": ["/path/to/foerdermittel-mcp/mcp_server.py"]
}
}
}对于远程SSE服务器,请改用基于URL的配置。
REST API
在SSE模式下,服务器还为非MCP客户端公开REST API(ChatGPT自定义GPT、web应用程序、脚本等)。所有端点都返回JSON并支持CORS。
端点
| 端点 | 描述 |
|---|---|
GET /api/search?q=Bildung | 按关键字搜索程序 |
GET /api/program/{id} | 项目的完整细节 |
GET /api/deadlines?days=90 | 即将截止日期的项目 |
GET /api/filters | 可用筛选值 |
搜索参数
| 参数 | 说明 |
|---|---|
q | 搜索查询(必填) |
bundesland | 按州过滤,例如。 Bayern, bundesweit |
funding_type | 按类型筛选: Zuschuss, Kredit, Bürgschaft, Preis, Sonstige |
tags | 逗号分隔的标签 |
limit | 最大结果(默认10,最大50) |
例子
# Search for education funding in Berlin
curl "https://your-server/api/search?q=Bildung&bundesland=Berlin"
# Get program details
curl "https://your-server/api/program/abc123"
# Upcoming deadlines (next 60 days)
curl "https://your-server/api/deadlines?days=60"
# Available filters
curl "https://your-server/api/filters"MCP工具
| 工具 | 说明 |
|---|---|
search_foerderprogramme | 全文搜索(BM25),带Bundesland、资金类型和标签的过滤器 |
get_foerderprogramm_details | 按ID列出的完整计划详细信息 |
list_upcoming_deadlines | 在接下来的N天内有截止日期的项目 |
get_filter_options | 可用过滤器值和程序计数 |
提示
| 提示 | 描述 |
|---|---|
find_funding | 引导式工作流程:按组织类型、位置和项目描述进行搜索 |
分类学
分类学(taxonomy.yaml)定义了通过LLM工具调用强制执行的受控词汇表:
- 14 超级类别 — 社会, 环境, 文化, 教育, 体育, 一体化, 研究, 数字化, 健康, 民主, 青年, 经济, 动物保护, 发展合作
- 55 主题 --具体专题
- 35个目标群体 --目标群体(组织类型)
- 8 推广方式 --筹资机制
- 17 联邦州 16个州+全国
- 5种资金类型 — 补贴, 贷款, 担保, 价格, 其他
- 4截止日期类型 — 一次性, 持续, 年度, 关闭
部署
使用任何容器平台(Coolify、Docker等)进行部署。服务器以SSE模式运行以进行远程访问。
python mcp_server.py --transport sse --port 8080在SSE模式下,服务器同时为REST API提供服务(/api/*)原始DB文件位于 /foerdermittel.db 对于下游消费者。
保持数据最新
在服务器上设置一个cron作业以重新运行富集管道(增量——仅处理新的/更改的程序):
# Every 2 days at 5:00 UTC
0 5 */2 * * cd /path/to/foerdermittel-mcp && python enrich.py环境变量
| 变量 | 目的 |
|---|---|
OPENAI_API_KEY | LLM富集(gpt-4o-mini) |
成本
| 运营 | 预计成本 | 时间 |
|---|---|---|
| 全面强化(约2000个程序) | ~1-2美元(gpt-4o-mini) | ~15分钟 |
| 增量运行(50-100次更改) | ~0.02-0.05美元 | ~1-2分钟 |
| MCP服务器 | 免费 | 即时 |
许可证
麻省理工学院
