Skip to main content
Glama
README.md
# OTP/OJP MCP Server

An MCP server for the [Open Talent Protocol](https://opentalentprotocol.org) (OTP) and [Open Job Protocol](https://opentalentprotocol.org) (OJP) — open standards for structuring candidate profiles and job postings for AI agent reasoning.

## Tools

| Tool | Description |
|------|-------------|
| `otp_parse_resume` | Raw resume text → OTP skeleton with `_EXTRACT_*` placeholders for an LLM to fill |
| `otp_validate_profile` | Validate an OTP document against the JSON Schema |
| `otp_introspect_profile` | Extract an agent-friendly summary from an OTP document |
| `ojp_parse_job_posting` | Raw job posting text → OJP skeleton with `_EXTRACT_*` placeholders |
| `ojp_validate_job_posting` | Validate an OJP document against the JSON Schema |
| `ojp_introspect_job_posting` | Extract an agent-friendly summary from an OJP document |

## Key traits

- **Pure functions** — no LLM calls, no network calls, no API keys needed
- **JSON Schema draft 2020-12** validation via AJV
- **LLM-free parsers** — produce structured templates for the calling agent to complete
- **Zero config** — just install and run

## Install

```bash
npm install -g @opentalentprotocol/mcp-server
```

Or run directly with npx:

```bash
npx @opentalentprotocol/mcp-server
```

## Setup

### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "otp-ojp": {
      "command": "npx",
      "args": ["-y", "@opentalentprotocol/mcp-server"]
    }
  }
}
```

### Claude Code

Add to your project or global MCP settings:

```json
{
  "mcpServers": {
    "otp-ojp": {
      "command": "npx",
      "args": ["-y", "@opentalentprotocol/mcp-server"]
    }
  }
}
```

### From source

```bash
git clone https://github.com/neogene-ai/otp-ojp-mcp-server.git
cd otp-ojp-mcp-server
npm install
npm run build
node dist/index.js
```

## How it works

### Parsing workflow

The parsers follow a **skeleton + fill** pattern:

1. Call `otp_parse_resume` (or `ojp_parse_job_posting`) with raw text
2. Get back a document skeleton with `_EXTRACT_*` annotations, confidence levels, and known gaps
3. The calling agent fills in the skeleton using its own reasoning
4. Call `otp_validate_profile` (or `ojp_validate_job_posting`) to verify the result

This keeps the MCP server LLM-free while giving agents structured guidance on what to extract.

### Introspection

The introspect tools flatten an OTP/OJP document into a normalized, agent-friendly object with an `agentSummary` string — ready for system prompts, retrieval-augmented context, or matching logic.

## Schemas

The JSON Schemas are bundled in the `schema/` directory:

- `schema/opentalent-protocol.schema.json` — OTP v0.1
- `schema/openjob-protocol.schema.json` — OJP v0.1

## Requirements

- Node.js >= 18

## License

MIT

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct purpose clearly indicated by the name: OTP vs OJP, then validate, parse, or introspect. No two tools overlap in function.

Naming Consistency5/5

All tools follow a consistent pattern of 'protocol_action_target' in snake_case, e.g., otp_validate_profile, ojp_parse_job_posting. No deviations.

Tool Count5/5

5 tools cover two protocols (OTP and OJP) with essential operations: validation, parsing, and introspection (for OJP). The count feels well-scoped for the domain.

Completeness4/5

The set covers validation and parsing for both protocols, plus introspection for OJP. A minor gap is the lack of an introspection tool for OTP, but the stated purpose is sufficiently served.

Maintenance

ActivityInactive
ResponsivenessUnresponsive