Skip to main content
Glama
kavingas

Dynamics MCP Server

by kavingas
README.md
# Dynamics MCP Server

MCP server to query Microsoft Dynamics 365 CRM records and support workflows using streamable HTTP transport.

---

## Tools

| Tool | Description |
| --- | --- |
| `get_timeline_activities` | Fetch timeline activities (emails, calls, tasks, appointments, notes) for a CRM record GUID. |
| `get_cases` | Search support cases using an OData filter. |
| `search_cases` | Free-text relevance search across support cases, with fuzzy matching, ranked by relevance. |
| `get_case` | Fetch a single case by GUID or ticket number, including metadata and linked external tickets. |
| `get_case_external_tickets` | Fetch active external tickets linked to a case (GUID or ticket number). |
| `get_external_ticket_comments` | Fetch timeline-wall comments for one linked external ticket in a single call. |
| `get_contact` | Fetch a contact by GUID. |
| `get_account` | Fetch an account by GUID. |
| `execute_fetchxml` | Execute an arbitrary FetchXML query against a Dynamics entity collection. |
| `get_dynamics_user` | Look up a Dynamics system user's internal email address by GUID. |
| `help` | Return capabilities, example prompts, and setup requirements. |

---

## Authentication model

This MCP expects the CRM browser session to be forwarded per request:

- Header: `X-Session-Cookie: <full CRM cookie string>`
- Source URL: `https://adobe-ent.crm.dynamics.com`

The server does not store static credentials in environment variables.

---

## Installation

### Requirements

- Python 3.13+
- [uv](https://docs.astral.sh/uv/) (recommended)

### Local development

```bash
uv sync
uv run dynamics-mcp
```

### Claude Code setup

```bash
claude mcp add dynamics \
  -- uvx --index https://sauronai.adobe.io/pypi/simple/ dynamics-mcp
```

### Cursor setup

Add to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "dynamics": {
      "command": "uvx",
      "args": ["--index", "https://sauronai.adobe.io/pypi/simple/", "dynamics-mcp"]
    }
  }
}
```

### Codex CLI setup

Add to `~/.codex/config.yaml`:

```yaml
mcpServers:
  dynamics:
    type: stdio
    command: uvx
    args:
      - --index
      - https://sauronai.adobe.io/pypi/simple/
      - dynamics-mcp
```