Connect Oprex to your AI assistant
A Model Context Protocol (MCP) server for Oprex ALM/SDLC. Give Claude, ChatGPT, Gemini, or your IDE direct access to your projects, issues, requirements, milestones, releases, tests, and pipelines β read and write β with a single API key.
What is Oprex MCP?
MCP is an open standard that lets AI models call "tools" on external services. Oprex MCP exposes your SDLC data as tools, so an AI assistant can answer questions like "how many open high-severity issues?" or take actions like "create a new requirement" β right inside your Oprex workspace, scoped to your tenant and permissions.
Endpoint: POST https://api.oprex.id/mcp β JSON-RPC 2.0 (Streamable HTTP, stateless). Auth: OAuth 2.1 (no API key) or the header Authorization: Bearer oprex_pk_β¦.
The older address https://oprex.id/mcp still works identically β no need to change a configuration that already runs.
What you can do
- Browse projects & groups, resolve a path like
indohrm/enterprise - Read & filter issues, requirements, milestones, releases, specs, tickets, tests, pipelines
- Create & update issues (bugs) and requirements
- View the coverage matrix (requirementβtest traceability)
Write actions require an API key with the write scope.
Version & releases
v1.3.0 Β· current
- OAuth 2.1 β connect Claude.ai/ChatGPT with no API key at all (Dynamic Client Registration + PKCE)
- Connected Apps page in Settings to review & revoke grants
v1.2.0
- Notes & Memory:
list_notes,create_note,list_memories,get_memory,create_memory,update_memoryβ save/read vibe-coding session summaries across agents (Claude, Gemini, etc.) - Tickets:
create_ticket,update_ticket(was list-only) update_requirement(was create-only)- Comments:
add_comment,list_commentsβ discuss on any artifact trigger_autopilotβ request AI auto-repair directly from a bug id (Kinexa staff)
v1.1.0
- +6 tools:
get_project,list_tickets,list_test_cases,list_pipelines,list_release_plans,coverage_matrix - Multi-client docs page (dual EN/ID)
v1.0.0
- Initial release: 12 tools (projects, groups, resolve, issues CRUD, requirements, milestones, releases, specs)
- Streamable HTTP + API-key auth
Authentication: OAuth or API key
There are two ways to connect a client β pick what fits:
- OAuth 2.1 β for AI apps a human uses (Claude.ai, ChatGPT, Gemini). No key to paste: the client registers itself via Dynamic Client Registration, you sign in through the Kinexa SSO, then approve on Oprex's consent screen. Access tokens last 1 hour, refresh 30 days with rotation.
- API key β for CI/CD, scripts, and config-file clients (Claude Code, Cursor, VS Code, Gemini CLI). Tenant-owned, valid until revoked.
OAuth endpoints (if you want to inspect them yourself): /.well-known/oauth-authorization-server, /.well-known/oauth-protected-resource, /oauth/register, /oauth/authorize, /oauth/token, /oauth/revoke.
1. Create an API key
Open member.oprex.id/panel/settings/api-keys β create a key. Choose scope read (safe, read-only) or write. Copy the key oprex_pk_β¦ β shown only once.
Claude Code (CLI)
Run this in your terminal:
claude mcp add --transport http oprex https://api.oprex.id/mcp \
--header "Authorization: Bearer oprex_pk_XXXXXXXX"Claude Desktop
Settings β Developer β Edit Config, then add (using the mcp-remote bridge for the remote server):
{
"mcpServers": {
"oprex": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.oprex.id/mcp",
"--header", "Authorization: Bearer oprex_pk_XXXXXXXX"]
}
}
}Claude.ai (web) β Settings β Connectors
Open Settings β Connectors β Add custom connector, fill in a Name (e.g. "Oprex") and the Remote MCP server URL https://api.oprex.id/mcp.
Leave OAuth Client ID/Secret empty β Oprex supports Dynamic Client Registration, so Claude registers itself. After saving, Claude sends you to the Kinexa login page and then to Oprex's consent screen; click Allow and the connector is live.
No API key is needed for this path at all. Granted access is listed β and revocable any time β under Settings β Connected Apps in member.oprex.id.
Cursor
Create ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):
{
"mcpServers": {
"oprex": {
"url": "https://api.oprex.id/mcp",
"headers": { "Authorization": "Bearer oprex_pk_XXXXXXXX" }
}
}
}VS Code (GitHub Copilot)
Create .vscode/mcp.json in your workspace:
{
"servers": {
"oprex": {
"type": "http",
"url": "https://api.oprex.id/mcp",
"headers": { "Authorization": "Bearer oprex_pk_XXXXXXXX" }
}
}
}
The Cline / Continue extensions also support MCP β add the same URL & header in their MCP settings.
Google Gemini CLI
Edit ~/.gemini/settings.json:
{
"mcpServers": {
"oprex": {
"httpUrl": "https://api.oprex.id/mcp",
"headers": { "Authorization": "Bearer oprex_pk_XXXXXXXX" }
}
}
}ChatGPT
ChatGPT supports MCP via Developer Mode / Custom Connectors (Plus/Pro/Enterprise). Enter the URL https://api.oprex.id/mcp.
ChatGPT's connector UI favours OAuth over a static API-key header β which Oprex now supports: just enter the URL, leave the OAuth fields empty, and approve on Oprex's consent screen.
Honest note: we've tested Oprex's OAuth flow end-to-end (registration, consent, token, refresh, revocation), but not yet through ChatGPT's own UI. If you hit a snag, the API-key path via the Agents/Responses API still works.
Ollama
Ollama runs local models but isn't itself an MCP client. Use an MCP-capable app with your Ollama model β e.g. Cline or Continue in VS Code (pointed at an Ollama model), or LibreChat β then add Oprex as an MCP server there (same URL & header as above).
For stdio-based clients, use the bridge:
npx -y mcp-remote https://api.oprex.id/mcp \
--header "Authorization: Bearer oprex_pk_XXXXXXXX"Antigravity
Open Settings β MCP β Add server, choose HTTP type, set the URL https://api.oprex.id/mcp and header Authorization: Bearer oprex_pk_β¦. If only stdio is supported, use the bridge config mcp-remote as in Claude Desktop.
Xcode
Xcode has no built-in MCP client yet. The easiest path: run a coding agent (e.g. Claude Code in Terminal, or Cursor) inside your Xcode project folder β it can read your code and use Oprex MCP to manage issues/requirements. Follow the Claude Code or Cursor sections above.
Any MCP client / universal bridge
Any MCP client supporting Streamable HTTP: use the URL + header above. For stdio-only clients, bridge with mcp-remote:
npx -y mcp-remote https://api.oprex.id/mcp \
--header "Authorization: Bearer oprex_pk_XXXXXXXX"Tools reference
| Tool | Scope | Description |
|---|---|---|
oprex_list_projects | read | List all projects in your Oprex tenant (GitLab-style). Returns id, name, slug, groupId, visibility. |
oprex_list_groups | read | List all groups (namespaces) in your Oprex tenant. Returns id, name, path. |
oprex_resolve_project | read | Resolve a GitLab-style path <group>/<project> to its group + project records. Use to turn a human path like 'indohrm/enterprise' into ids. |
oprex_list_issues | read | List issues (bugs) β optionally scoped to a project and filtered by status/severity/text. |
oprex_get_issue | read | Get a single issue (bug) by id, with full detail. |
oprex_create_issue | write | Create a new issue (bug). |
oprex_update_issue | write | Update an issue (bug): status, severity, title, description, or which project it belongs to. |
oprex_list_requirements | read | List requirements β optionally scoped to a project and filtered by status/type/text. |
oprex_create_requirement | write | Create a new requirement. |
oprex_list_milestones | read | List milestones β optionally scoped to a project and filtered by status. |
oprex_list_releases | read | List releases (Staging β RC β Stable) β optionally scoped to a project. |
oprex_list_specifications | read | List specifications (technical designs) β optionally scoped to a project. |
oprex_get_project | read | Get a single project by id, with full detail (visibility, group, git repo, type). |
oprex_list_tickets | read | List support/helpdesk tickets β optionally scoped to a project and filtered by status/text. |
oprex_list_test_cases | read | List test cases (TestLink-style scenarios) β optionally scoped to a project. |
oprex_list_pipelines | read | List CI/CD pipelines and their runs β optionally scoped to a project. |
oprex_list_release_plans | read | List release plans (roadmap of planned releases) β optionally scoped to a project. |
oprex_coverage_matrix | read | Get the requirementβtest coverage matrix for a project (traceability). |
oprex_list_notes | read | List Notes (short sticky notes) β optionally scoped to a project, filtered by tag/pinned/text. Standalone notes have no sourceType attached. |
oprex_create_note | write | Create a standalone Note (short sticky note, max ~20k chars). |
oprex_list_memories | read | List Memory documents (long-form markdown imported from AI vibe-coding sessions, e.g. Claude Code). scope='personal' is private to the caller; scope='project' is shared with the project team. |
oprex_get_memory | read | Get a single Memory document by id, including its full markdown body. |
oprex_create_memory | write | Create a Memory document β save a markdown file/summary from a vibe-coding session (Claude Code etc.) into Oprex so a team can read/discuss it. scope='project' requires projectId. |
oprex_create_ticket | write | Create a support/helpdesk ticket. |
oprex_update_ticket | write | Update a ticket: status, priority, severity, subject, body, or assignee. |
oprex_update_requirement | write | Update a requirement: status, title, description, acceptance criteria, type, or priority. |
oprex_add_comment | write | Add a comment to any Oprex artifact (bug, ticket, requirement, test_case, test_plan, test_run, milestone, release, pipeline, project, or specification) β the thread every artifact detail page shows. |
oprex_list_comments | read | List the comment thread on any Oprex artifact. |
oprex_trigger_autopilot | write | Manually trigger Autopilot (AI auto-repair) on a bug: diagnoses the root cause, drafts a fix, opens a PR for human review. NOTE: restricted to Kinexa staff accounts β a tenant/customer API key will get a 403 here even if it works for other tools. |
oprex_update_memory | write | Update an existing Memory document β append/replace its body, title, or tags (e.g. keep a running session log). |
Security & scopes
- Every call is scoped to the API key's tenant β no cross-tenant access.
- Scopes:
read(read-only),write(create/update). Grant the least scope needed. - Revoke a key anytime in the panel if leaked.
- Treat the key like a password β never commit it to a public repo.
- For OAuth: grants are per-user (other tenant members can neither see nor revoke yours), PKCE S256 is mandatory, refresh tokens rotate on every use, and revoking an app under Settings β Connected Apps immediately kills all of its tokens including older refresh tokens.
Getting listed in official connector directories (Claude/ChatGPT/Gemini)
This is an honest status, not a promise β we haven't yet submitted Oprex to any official directory, so this is guidance based on publicly known requirements, not first-hand experience.
- Protocol compliance β already met: MCP 2025-06-18, Streamable HTTP, standard tools/list + tools/call.
- OAuth 2.1 β met as of 3 August 2026. Oprex is now its own authorization server: metadata discovery (RFC 8414 & 9728), Dynamic Client Registration (RFC 7591), authorization code with mandatory PKCE S256, refresh tokens with rotation, and revocation (RFC 7009). Login still goes through the existing Kinexa SSO β Oprex only adds a consent layer on top.
- Policy & security β directory providers typically require a public privacy policy, a description of what data is accessed, and a formal security review/submission process (the actual submission form/process lives in each platform's own developer docs β Anthropic, OpenAI, Google β check there directly for the latest requirements & steps, since this can change and we don't want to guess a URL that may be stale).
Bottom line: the main technical blocker is gone. What remains is a public privacy policy and following each platform's own submission process.
FAQ
Is it free? Yes, included with your Oprex subscription.
Can multiple AIs use it at once? Yes β the same endpoint & key work across all MCP clients.
What about OAuth for claude.ai / ChatGPT web? Available now β just enter the MCP server URL, no API key needed. See the Claude.ai (web) section above.
API key vs OAuth β what's the difference? An API key suits CI/CD and scripts (tenant-owned, valid until revoked). OAuth suits AI apps used by a person (per-user, 1-hour access token, 30-day rotating refresh, revocable under Settings β Connected Apps).