# mounika-nemalipuri/wb_mcp architecture

> Architecture diagram of the GitHub repository mounika-nemalipuri/wb_mcp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mounika-nemalipuri/wb_mcp
- Repository: https://github.com/mounika-nemalipuri/wb_mcp

## Overview

A user asks a research question; the LangChain agent reasons with Groq and invokes the local MCP server over stdio. The server validates inputs and dispatches to search, filtering, document lookup, or facet discovery tools. Those tools call the World Bank API client and normalize results through shared utilities before returning structured results for the agent’s answer. The tool-specific modules and agent flow are supported by the README and sampled source; unsampled implementation details are not inferred.

Main entry points: [`server/wb_docs_mcp.py`](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/wb_docs_mcp.py) (MCP tool server), [`server/api_client.py`](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/api_client.py) (World Bank API client), [`client/agent_client.py`](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/client/agent_client.py) (Research agent), [`server/tools/search.py`](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/search.py) (Document search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_agent["Agent experience"]
  node_agent["Research agent<br/>[agent_client.py]"]
  node_mcp_client["MCP client<br/>[agent_client.py]"]
end

subgraph group_mcp["MCP interface"]
  node_server["MCP tool server<br/>[wb_docs_mcp.py]"]
  node_schemas["Input validation<br/>[schemas.py]"]
end

subgraph group_operations["Document operations"]
  node_search["Document search<br/>[search.py]"]
  node_filter["Structured filtering<br/>[filter.py]"]
  node_document["Document metadata<br/>[document.py]"]
  node_facets["Facet discovery<br/>[facets.py]"]
end

subgraph group_shared["API and results"]
  node_api_client["World Bank API client<br/>[api_client.py]"]
  node_utils["Result utilities<br/>[utils.py]"]
  node_config["API settings<br/>[config.py]"]
end

node_user(("Researcher"))
node_groq(("Groq model"))
node_world_bank(("World Bank API"))

node_user -->|"asks question"| node_agent
node_agent -->|"reasons and selects"| node_groq
node_agent -->|"runs agent"| node_mcp_client
node_mcp_client -->|"dispatches tools"| node_server
node_server -->|"validates inputs"| node_schemas
node_server -->|"invokes search"| node_search
node_server -->|"invokes filter"| node_filter
node_server -->|"invokes lookup"| node_document
node_server -->|"invokes discovery"| node_facets
node_search -->|"requests documents"| node_api_client
node_filter -->|"requests documents"| node_api_client
node_document -->|"requests metadata"| node_api_client
node_facets -->|"requests facets"| node_api_client
node_search -->|"extracts and formats"| node_utils
node_filter -->|"extracts and formats"| node_utils
node_document -->|"extracts and formats"| node_utils
node_facets -->|"extracts and formats"| node_utils
node_api_client -->|"reads endpoint settings"| node_config
node_search -->|"reads default fields"| node_config
node_filter -->|"reads default fields"| node_config
node_api_client -->|"sends HTTP request"| node_world_bank
node_world_bank -->|"returns JSON"| node_api_client
node_server -->|"returns tool results"| node_mcp_client
node_mcp_client -->|"provides results"| node_agent
node_agent -->|"presents answer"| node_user

click node_agent "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/client/agent_client.py"
click node_mcp_client "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/client/agent_client.py"
click node_server "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/wb_docs_mcp.py"
click node_schemas "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/schemas.py"
click node_search "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/search.py"
click node_filter "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/filter.py"
click node_document "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/document.py"
click node_facets "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/facets.py"
click node_api_client "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/api_client.py"
click node_utils "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/utils.py"
click node_config "https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/config.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_agent,node_mcp_client toneBlue
class node_server,node_schemas toneAmber
class node_search,node_filter,node_document,node_facets,node_world_bank toneMint
class node_api_client,node_utils,node_config toneRose
class node_user,node_groq toneIndigo
```

## Components

### Agent experience

- [Research agent](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/client/agent_client.py): `client/agent_client.py`
- [MCP client](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/client/agent_client.py): `client/agent_client.py`

### MCP interface

- [MCP tool server](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/wb_docs_mcp.py): `server/wb_docs_mcp.py`
- [Input validation](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/schemas.py): `server/schemas.py`

### Document operations

- [Document search](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/search.py): `server/tools/search.py`
- [Structured filtering](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/filter.py): `server/tools/filter.py`
- [Document metadata](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/document.py): `server/tools/document.py`
- [Facet discovery](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/tools/facets.py): `server/tools/facets.py`

### API and results

- [World Bank API client](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/api_client.py): `server/api_client.py`
- [Result utilities](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/utils.py): `server/utils.py`
- [API settings](https://github.com/mounika-nemalipuri/wb_mcp/blob/main/server/config.py): `server/config.py`

### Other components

- **Researcher**
- **Groq model**
- **World Bank API**

## Connections

- Researcher → Research agent: asks question
- Research agent → Groq model: reasons and selects
- Research agent → MCP client: runs agent
- MCP client → MCP tool server: dispatches tools
- MCP tool server → Input validation: validates inputs
- MCP tool server → Document search: invokes search
- MCP tool server → Structured filtering: invokes filter
- MCP tool server → Document metadata: invokes lookup
- MCP tool server → Facet discovery: invokes discovery
- Document search → World Bank API client: requests documents
- Structured filtering → World Bank API client: requests documents
- Document metadata → World Bank API client: requests metadata
- Facet discovery → World Bank API client: requests facets
- Document search → Result utilities: extracts and formats
- Structured filtering → Result utilities: extracts and formats
- Document metadata → Result utilities: extracts and formats
- Facet discovery → Result utilities: extracts and formats
- World Bank API client → API settings: reads endpoint settings
- Document search → API settings: reads default fields
- Structured filtering → API settings: reads default fields
- World Bank API client → World Bank API: sends HTTP request
- World Bank API → World Bank API client: returns JSON
- MCP tool server → MCP client: returns tool results
- MCP client → Research agent: provides results
- Research agent → Researcher: presents answer
