Skip to main content
Glama
omar-k01

Pulse MCP Server

by omar-k01
README.md
# Pulse MCP Server

An [MCP](https://modelcontextprotocol.io) server that exposes Moody's Pulse (Cortera) trade-credit data with grounded knowledge-base context. Every report section and metric is linked to a local knowledge base (`pulse-kb/`) so the server can explain what each value means, how it's computed, how it ties into the wider Moody's data estate, and which use cases it serves.

## Tools

| Tool | Purpose |
|---|---|
| `search_business` | Find a company → `linkId` |
| `get_report` | Full Deep Dive Report (entire JSON) |
| `get_report_section` | Pull specific sections by canonical name or natural-language alias |
| `list_report_sections` | List all sections with their plain-English meaning |
| `explain_section` | Explain a section (definition + KB source + cross-data-estate ties) |
| `explain_metric` | Explain a metric / field (CPR, DR, DBT, etc.) |
| `list_metrics` | Catalog of metrics in the registry |
| `get_use_case_briefing` | Surface Pulse signals + framework for a use case (surety, trade_credit, dno, portfolio, tprm, submission_triage, industry_macro) |
| `read_kb` | Read a KB doc by relative path for deep dives |

## Prerequisites

- Python 3.10+
- Pulse (Cortera) API credentials

## Install

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

## Configure

Copy the example env file and fill in your credentials:

```bash
cp .env.example .env
```

Then edit `.env`:

```
PULSE_USER=your-pulse-username
PULSE_PASSWORD=your-pulse-password
```

## Register with an MCP client

Add to your MCP client config (e.g. `.mcp.json` or `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "pulse": {
      "command": "python",
      "args": ["C:/path/to/pulse-mcp/server.py"]
    }
  }
}
```

## Project layout

```
pulse-mcp/
├── server.py          # FastMCP server + tool definitions
├── kb_registry.py     # section aliases, metrics, use-case frameworks
├── pulse-kb/          # knowledge-base docs (definitions, cross-estate ties)
├── requirements.txt
├── .env.example       # template — copy to .env (gitignored)
└── Dockerfile
```