Skip to main content
Glama
namiraprita

worldbank-documents-reports-mcp

by namiraprita
README.md
# World Bank Document and Reports MCP Server

An MCP server for accessing the [World Bank's Documents & Reports database](https://documents.worldbank.org/en/publication/documents-reports/api).  
Provides searching, retrieval, and detailed breakdowns of World Bank documents for LLMs and programmatic use.

## Repository Structure

```
document-reports-mcp/
 worldbank_dnr_mcp/          # main package
    core.py                 # business logic, models, utilities
    factory.py              # server creation and tool registration
    parsers.py              # transport-specific response parsers
    __init__.py             # package exports
 server_stdio.py             # STDIO transport server
 server_sse.py               # SSE transport server
 start_server_claude.py      # launcher for Claude Desktop
 pyproject.toml              # project configuration
 requirements.txt            # legacy requirements file
 docs/                       # documentation
     API Document.pdf
     DESIGN_LOGIC.md
     STRUCTURE_GUIDE.md
     mcp_simulation.mp4      # demonstration video
```

## Project Features

- comprehensive document search with advanced filters
- multi-dimensional filtering (by country, type, language, date range)
- result faceting and category exploration
- metadata and abstract retrieval
- project-based document lookup
- flexible markdown/json output formats
- extensive error handling and validation
- support for both STDIO and SSE transports

## Demonstration Video

Watch the MCP server in action:

**[Watch Demo Video](docs/mcp_simulation.mp4)**

Note: Click the link above to view the demonstration video. GitHub README files don't support embedded video players, but you can download or view the video directly through the link.

## Quick Documentation Index

- [API Document (PDF)](docs/API%20Document.pdf): Official World Bank API documentation
- [DESIGN_LOGIC.md](docs/DESIGN_LOGIC.md): Core design principles and logic explained
- [STRUCTURE_GUIDE.md](docs/STRUCTURE_GUIDE.md): File structure, configuration, and usage

## Installation

Using uv (recommended):
```bash
uv sync
```

Using pip:
```bash
pip install -r requirements.txt
```

## Usage

### For Claude Desktop (STDIO Transport)

1. Update your Claude Desktop config to use the launcher:
   ```json
   {
     "mcpServers": {
       "worldbank-dnr": {
         "command": "uv",
         "args": ["run", "/absolute/path/to/start_server_claude.py"],
         "cwd": "/absolute/path/to/document-reports-mcp"
       }
     }
   }
   ```

2. Restart Claude Desktop


### Testing the SSE Server Locally

You can test the SSE server using the MCP Inspector:

1. Start the SSE server:
   ```bash
   uv run server_sse.py
   ```

2. In another terminal, run the MCP Inspector:
   ```bash
   npx @modelcontextprotocol/inspector@latest
   ```

3. The inspector will open at `http://localhost:6274`

4. Select "SSE" as the transport type

5. Enter the server URL: `http://localhost:8002/sse`

6. Click "Connect" to interact with the server and test tools

Alternatively, you can use the simple test client:
```bash
uv run test_sse_client.py
```

## Available Tools

1. `worldbank_search_documents` - primary search with filters
2. `worldbank_get_document_details` - retrieve detailed document information
3. `worldbank_explore_facets` - discover available filter values
4. `worldbank_search_by_project` - find documents by project ID or name

For detailed tool documentation and API usage, see [DESIGN_LOGIC.md](docs/DESIGN_LOGIC.md).

## Development

The codebase follows these principles:

- DRY principle: shared utilities in `core.py`, no code duplication
- pydantic models: automatic validation for all inputs
- async/await: all I/O operations use async patterns
- transport abstraction: business logic separated from transport-specific code
- factory pattern: centralized server creation with dependency injection

See [STRUCTURE_GUIDE.md](docs/STRUCTURE_GUIDE.md) for detailed architecture explanation.

## Code Organization

- `worldbank_dnr_mcp/core.py`: constants, enums, pydantic models, utility functions, formatting helpers
- `worldbank_dnr_mcp/factory.py`: server factory, tool registration
- `worldbank_dnr_mcp/parsers.py`: transport-specific response parsing (only transport-dependent code)
- `server_stdio.py`: STDIO transport wrapper
- `server_sse.py`: SSE transport wrapper

For full architecture breakdown and troubleshooting, see documentation in the `docs/` folder.