Skip to main content
Glama
praxicraft-platform

Praxicraft Assess MCP

Official
README.md
# Praxicraft Assess MCP

Official [Model Context Protocol](https://modelcontextprotocol.io) server for the **[Praxicraft Assess](https://assess.praxicraft.com)** Public API.

Connect Cursor, Claude Code, Claude Desktop, Codex, or any MCP client so an agent can invite candidates, manage assessments and pipelines, register webhooks, and fetch results — with your permission.

```bash
npx -y @praxicraft/assess-mcp
```

**Requires Node.js 18+.** Product docs: [docs.praxicraft.com/assess-mcp](https://docs.praxicraft.com/assess-mcp) · [Build with agents](https://docs.praxicraft.com/build-with-agents)

Prefer one install for API MCP + docs search + skills? Use the [Assess Agent Plugin](https://github.com/praxicraft-platform/praxicraft-assess-agent-plugin).

## Table of Contents

- [Two ways to connect](#two-ways-to-connect)
- [Authentication](#authentication)
- [Quickstart](#quickstart)
  - [Hosted HTTP (Cursor / Claude Code)](#hosted-http-cursor--claude-code)
  - [Stdio (API key)](#stdio-api-key)
- [What agents can do](#what-agents-can-do)
- [Live vs Test mode](#live-vs-test-mode)
- [Errors](#errors)
- [Requirements & support](#requirements--support)
- [License](#license)

---

## Two ways to connect

| Mode | Best for | Auth |
|------|----------|------|
| **Hosted HTTP** | Interactive IDE sessions | Browser OAuth at `https://assess.praxicraft.com/mcp` (always **live**) |
| **Stdio** (`npx @praxicraft/assess-mcp`) | CI, locked-down machines, **Test** mode | `PRAXICRAFT_API_KEY` (`ct_live_…` or `ct_test_…`) |

Hosted OAuth is the easiest path in Cursor and Claude. Use stdio when you need a `ct_test_` key or a non-interactive environment.

---

## Authentication

### Hosted (OAuth)

No API key in your config. The first tool call opens a browser consent screen. Owners, admins, and [developers](https://docs.praxicraft.com/roles) can approve.

Hosted sessions are always **live** mode.

### Stdio (API key)

Create an organisation API key:

**Assess → Developer → API Keys** → create key → copy `ct_live_…` or `ct_test_…` (shown once).

```bash
export PRAXICRAFT_API_KEY="ct_test_xxxxxxxxxxxxxxxx"
# optional
export PRAXICRAFT_API_BASE_URL="https://assess.praxicraft.com"
```

Never commit API keys. Prefer environment variables or a secrets manager.

IP allowlists on API keys apply to Public API / stdio MCP requests. They do **not** apply to hosted OAuth. Use a dedicated key with an empty allowlist for stdio if other keys are CIDR-restricted.

Scopes and rotation: [Authentication](https://docs.praxicraft.com/authentication)

### Recommended scopes

| Flow | Scopes |
|------|--------|
| Invite + notify | `assessments:read`, `invitations:write`, `candidates:read`, `webhooks:write` |
| Pipelines | `pipelines:read`, `pipelines:write`, `webhooks:write` |
| Read-only | `assessments:read`, `candidates:read`, `organisation:read` |

---

## Quickstart

### Hosted HTTP (Cursor / Claude Code)

Add to your MCP settings:

```json
{
  "mcpServers": {
    "praxicraft-assess": {
      "url": "https://assess.praxicraft.com/mcp"
    }
  }
}
```

Claude Code example:

```json
{
  "mcpServers": {
    "praxicraft-assess": {
      "type": "http",
      "url": "https://assess.praxicraft.com/mcp"
    }
  }
}
```

Restart the client, then try: *“List my Assess assessments and invite me to the first active one.”*

### Stdio (API key)

```json
{
  "mcpServers": {
    "praxicraft-assess": {
      "command": "npx",
      "args": ["-y", "@praxicraft/assess-mcp"],
      "env": {
        "PRAXICRAFT_API_KEY": "ct_test_xxxxxxxxxxxxxxxx"
      }
    }
  }
}
```

From source (contributors):

```bash
git clone https://github.com/praxicraft-platform/praxicraft-assess-mcp.git
cd praxicraft-assess-mcp
npm ci
npm test
npm run smoke
```

---

## What agents can do

Tools map to the Assess Public API (`/api/v1/public/…`). Coverage includes:

| Area | Examples |
|------|----------|
| Assessments | List, create, update, activate, attach tasks |
| Invitations | Invite, bulk invite, remind, cancel |
| Results | List / retrieve by `invite_token` |
| Webhooks | Create destinations, test, list deliveries, retry |
| Pipelines | List, enroll, hold / unhold / reject |
| Interviews | List / manage interview rooms |
| Organisation | Profile, quota, squads, audit (plan-gated) |
| Integrations | Connector status (no secrets in responses) |

Responses are **flat JSON** (same shape as the Public API — no `{ "data": … }` wrapper).

Remind agents to respect [plan limits](https://docs.praxicraft.com/plan-limits) and to branch on `error.code`.

---

## Live vs Test mode

| | Live (`ct_live_…` / hosted OAuth) | Test (`ct_test_…` via stdio) |
|--|-----------------------------------|------------------------------|
| Data | Production org | Isolated test data |
| Webhooks | Live destinations only | Test destinations only |

A test `candidate.passed` never hits a live Slack or HTTPS destination. See [Live and Test mode](https://docs.praxicraft.com/authentication#live-and-test-mode).

---

## Errors

Public API errors look like:

```json
{ "error": { "code": "SOME_CODE", "message": "…", "details": {} } }
```

Always branch on `error.code`. Reference: [Errors](https://docs.praxicraft.com/errors)

---

## Requirements & support

- Node.js **18+** (stdio package)
- Assess plan that includes API keys (see [plan limits](https://docs.praxicraft.com/plan-limits))
- Product docs: [docs.praxicraft.com](https://docs.praxicraft.com)
- Agent Plugin (API + docs Knowledge MCP + skills): [praxicraft-assess-agent-plugin](https://github.com/praxicraft-platform/praxicraft-assess-agent-plugin)
- Issues: [GitHub Issues](https://github.com/praxicraft-platform/praxicraft-assess-mcp/issues)
- Email: [support@praxicraft.com](mailto:support@praxicraft.com)

Maintainers deploying the hosted `/mcp` service: see [DEPLOYMENT.md](./DEPLOYMENT.md).

---

## License

[MIT](LICENSE)

TDQS

C2.7/5.0

Scored across 59 tools

Disambiguation4/5

Tools are organized by resource (assessments, cases, invites, interviews, webhooks, etc.) with clear action verbs. A few pairs like list_org_team vs list_squad_members and list_cases vs list_platform_cases vs list_interview_org_cases could cause mild confusion, but descriptions disambiguate effectively.

Naming Consistency5/5

All 59 tools follow a consistent snake_case verb_noun pattern (list_*, get_*, create_*, update_*, delete_*, etc.). No camelCase or mixed conventions, making the set highly predictable.

Tool Count1/5

With 59 tools, this server is far beyond the typical well-scoped 3-15 tool range. Even for a broad platform, the size feels excessive and would be better split into focused sub-servers (assessments, interviews, webhooks, etc.).

Completeness4/5

The surface covers core CRUD and lifecycle operations for assessments, invites, interviews, cases, and webhooks, including bulk actions and analytics. Minor gaps exist (e.g., no delete_assessment, no update_pipeline), but agents can work around them without major failures.

Maintenance

ActivityMaintained
ResponsivenessNo issues