Metadata-Version: 2.3
Name: jameson-entra-mcp
Version: 0.2.0
Summary: MCP client for Jameson: signs in with your Microsoft work account and forwards tool calls to the hosted marketing research server
Author: Chase Derr
Author-email: Chase Derr <chase.derr@dataninja.com>
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: msal==1.38.0
Requires-Python: >=3.13
Description-Content-Type: text/markdown

# jameson-entra-mcp

MCP client for Jameson, DataNinja's read-only marketing research server. It signs you in with your
Microsoft work account and forwards your questions to the hosted server. No AWS account, no access
key, nothing in `~/.aws`.

## Install

    claude mcp add jameson --scope user -- uvx jameson-entra-mcp

For Codex:

    codex mcp add jameson -- uvx jameson-entra-mcp

Restart your editor, then name Jameson in a question. The first tool call opens a browser tab for a
normal Microsoft sign-in. The token is cached at `~/.jameson-mcp/msal-cache.json` and every question
after that is silent. If the server ever rejects the cached token, the client clears
the account and signs you in again once before it reports a failure.

## Configuration

Defaults point at the live deployment. Override any of them with environment variables:

| variable | what it is |
|---|---|
| `JAMESON_MCP_URL` | The MCP endpoint to post to, and the base of the scope requested at sign-in |
| `JAMESON_TENANT` | Entra tenant id whose tokens the server accepts |
| `JAMESON_API_APP_ID` | App registration exposing `access_as_user` |
| `JAMESON_TOKEN` | A bearer token to present as-is, skipping the sign-in entirely |

`JAMESON_TOKEN` is the escape hatch for CI and agents, which have no browser.

## What it does

It answers `initialize`, `tools/list` and `ping` itself so your editor starts without a sign-in,
then forwards every `tools/call` to the server with the token attached. Sign-in rides the Azure
CLI's public client id, which is pre-authorized on the API app registration, so there is nothing to
register in Entra on your side.
