世界银行文件MCP服务器
  
企业级实施 模型上下文协议(MCP) 暴露的服务器 世界银行文件和报告API 作为人工智能代理的可操作工具。该项目利用 FastMCP 对于工具注册, 派丹蒂克 用于模式验证,以及 代理CLI 将LLM连接到实时发布数据。
______________________________________________________________________
1.设置说明
先决条件
- Python 3.10或更高版本
- 紫外线 (建议用于高性能依赖关系管理)
- 奥拉玛 已在本地安装并运行默认设置
- 对于参考云设置:a Groq API密钥 (Groq控制台)
安装
1.克隆存储库
git clone https://github.com/Vinaykiran1819/wb-document-mcp-server.git
cd wb-document-mcp-server2.使用设置环境 uv
使用 uv 确保项目布局和本地模块正确链接。
uv venv
uv sync
uv pip install -e .配置
在根目录中创建.env文件以配置所选的提供程序: 复制示例文件并填写机密:
cp .env.example .env______________________________________________________________________
2.使用方法
启动服务器(子进程模式)
客户端脚本使用 stdio 运输。
uv run python src/wb_mcp/clients/cli_agent/client.py直接测试服务器 要独立于代理循环检查可用工具,请使用MCP检查器:
npx @modelcontextprotocol/inspector .venv\Scripts\python.exe -m wb_mcp.servers.docs_server.server______________________________________________________________________
3.LLM/SLM的选择和理由
此项目支持两个明确选择用于其本机工具调用功能的高性能模型:。
- 首要选择: 奥拉玛与
qwen2.5:3b - 正当理由: 此模型被选为默认模型,以提供 完全离线、私密、零成本 环境。尽管其尺寸较小,
qwen2.5:3b具有出色的本地工具调用支持,这是MCP架构的主要驱动力。 - 替代: Groq(
llama-3.1-8b-instant) 为需要高速推理且无需本地计算的用户提供支持。
______________________________________________________________________
4.示例问题和输出
以下示例演示了代理利用不同工具满足用户请求的能力。
问题1:肯尼亚的气候适应能力
用户: 世界银行关于肯尼亚气候适应能力的报告有哪些?
助理: 世界银行编制了几份关于肯尼亚气候适应能力的报告。以下是其中一些:
- 肯尼亚-沿海地区水安全和气候适应性项目:移民安置计划(第4卷,共4卷):姆瓦什多用途大坝项目移民安置行动计划
- 肯尼亚-水安全和气候适应力项目:截至2014年6月30日的经审计财务报表
- 肯尼亚-沿海地区水安全和气候适应性项目:移民安置计划(第3卷,共4卷):Mwache多用途大坝项目移民安置行动计划1b
- 可披露重组文件-肯尼亚水安全和气候适应力项目-P117635
- 肯尼亚-肯尼亚水安全和气候适应力项目:P117635——实施状态结果报告(序列04)
- 肯尼亚-非洲东部-P117635-肯尼亚水安全和气候适应力项目-采购计划
- 肯尼亚-非洲-P117635-肯尼亚水安全和气候适应力项目-采购计划
- 肯尼亚-非洲东部-P117635-肯尼亚水安全和气候适应力项目-采购计划
这些报告涵盖了肯尼亚水安全项目的实施、资金状况、采购计划和移民安置行动等各个方面。
问题2:非洲教育融资(2019-2022)
用户: 查找2019年至2022年间发布的关于撒哈拉以南非洲教育融资的文件。
助理: 在2019年至2022年期间,没有发现关于撒哈拉以南非洲教育融资的文件。
问题3:肯尼亚教育融资(2019-2022)
用户: 查找肯尼亚2019年至2022年教育主题的文件。
助理: 对2019年至2022年肯尼亚教育相关文件的搜索结果如下:
- 标题: ISR-肯尼亚GPE COVID 19基础教育学习连续性项目的可披露版本-P174059-序列号:03
- 类型:实施状态和结果报告
- 标题: 肯尼亚-GPE新冠肺炎基础教育学习连续性项目
- 类型:项目评估文件
- 标题: 可披露重组论文-肯尼亚中等教育质量提升项目-P160083
- 类型:项目论文
- 标题: ISR-肯尼亚GPE COVID 19基础教育学习连续性项目的可披露版本-P174059-序列号:01
- 类型:实施状态和结果报告
- 标题: ISR-肯尼亚GPE COVID 19基础教育学习连续性项目的可披露版本-P174059-序列号:02
- 类型:实施状态和结果报告、项目文件
- 标题: 项目信息文件-肯尼亚GPE COVID 19基础教育学习连续性项目-P174059
- 类型:项目信息文档
- 标题: 可披露重组文件-肯尼亚GPE初等教育发展项目-P146797
- 类型:项目文件、实施状态和结果报告
- 标题: ISR披露版本-肯尼亚GPE初等教育发展项目-P146797-序列号:10
- 类型:实施状态和结果报告
- 标题: ISR披露版本-肯尼亚GPE初等教育发展项目-P146797-序列号:13
- 类型:实施状态和结果报告
- 标题: ISR披露版本-肯尼亚中等教育质量提升项目-P160083-序列号:08
- 类型:实施状态和结果报告
这些文件建议将重点放在教育项目的各个方面,包括学习连续性、结构改革、初等教育发展和质量提高。
问题4:
用户: 查找巴西与水和卫生有关的项目文件。.
助理: 世界银行发布了几份与巴西水和卫生有关的项目文件,最近的一份是:
- 标题: 巴西水和卫生部门的政策、机构法规和支出(第2卷,共2卷)
- 类型: 报告
- 出版日期: 2022年5月20日
这些文件以多种语言提供,因为它们涵盖了与巴西水和卫生项目有关的综合主题。
______________________________________________________________________
5.项目结构
wb-document-mcp-server/
├── src/
│ └── wb_mcp/
│ ├── agent/ # Agentic loop and LLM provider logic
│ │ ├── orchestrator.py # Manages multi-turn history and tool calls
│ │ ├── providers.py # Adapters for LLMs (Ollama, Groq, etc.)
│ │ └── prompts.py
│ ├── api/ # Core World Bank API integration
│ │ ├── client.py # HTTP client and raw API logic
│ │ └── schemas.py # Pydantic models for data validation
│ ├── clients/ # End-user applications
│ │ └── cli_agent/ # CLI tool for interactive natural language queries
│ │ └── client.py
│ └── servers/ # MCP Server implementation
│ └── docs_server/ # World Bank document discovery tools
│ ├── server.py
│ └── tools.py
├── .env.example # Template for environment variables
├── requirements.txt # Project dependencies
└── README.md # Project documentation______________________________________________________________________
6.MCP工具
这些工具已在中注册 src/wb_mcp/servers/docs_server/tools.py 在中创建的FastMCP实例上 src/wb_mcp/servers/docs_server/server.py.
| 工具 | 代理何时应该使用它 |
|---|---|
search_documents | 用户询问 关键词或概念性问题 (“肯尼亚气候适应”、“运输业生产者价格指数”),并需要在标题、摘要和元数据之间进行排名匹配。支持分页(rows, offset),可选 lang_exact,以及通过逗号分隔的字段投影 fl. |
filter_documents | 用户希望结果受到以下约束 已知尺寸:国家(count_exact),主题(topic_exact),文档类型(docty_exact),或 日期范围 (strdate / enddate).当过滤器是显式的而不是自由文本时使用。 |
get_document | 用户名a 特定文档ID 或者工作流已经具有 id 来自先前的搜索;获取一条记录的元数据(可选地用 fl). |
get_facets | 用户不确定 有效的筛选值 (例如,确切的国家字符串、语言、类型)或想要 分布 价值观。打电话之前 filter_documents 发现拼写和基数;可选的 qterm 范围方面计数。 |
所有四个工具都返回 JSON字符串 (或错误字符串),适合直接插入模型的工具结果通道。
______________________________________________________________________
许可证
该项目发布于 MIT许可证.
______________________________________________________________________
