AtCoder MCP Server
An open-source MCP server that allows agents to search for past AtCoder competitive programming problems and fetch their public problem statements and samples. It supports both a public hosted HTTP endpoint and local execution via Node.js, enabling AI agents to retrieve problem details without requiring user credentials.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.ksrnyx.top/oj-mcp/atcoder/mcpWhat its tools do
4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Fetch AtCoder problem abc086_a and show its samples
- Search for past AtCoder problems by contest or task ID
- Report available AtCoder read operations and transport capabilities
- Run locally using Node.js for private agent integration
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- atcoder-mcp-server 0.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 4 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Tools
4 advertised
oj_capabilities — AtCoder Provider Capabilities
Report the audited anonymous AtCoder read surface and explicitly unsupported operations.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"type": "object",
"required": [
"schemaVersion",
"providerId",
"providerVersion",
"platform",
"protocolVersion",
"operations",
"languages",
"source"
],
"properties": {
"source": {
"type": "object",
"required": [
"kind",
"adapterId",
"adapterVersion",
"fetchedAt",
"sourceUrl",
"confidence"
],
"properties": {
"etag": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"official_api",
"official_open_platform",
"page_adapter",
"browser_companion",
"community_adapter",
"manual"
],
"type": "string"
},
"rawRef": {
"type": "string",
"minLength": 1
},
"adapterId": {
"type": "string",
"minLength": 1
},
"fetchedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"confidence": {
"enum": [
"authoritative",
"derived",
"user_supplied"
],
"type": "string"
},
"adapterVersion": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"platform": {
"enum": [
"luogu",
"leetcode",
"nowcoder",
"codeforces",
"atcoder"
],
"type": "string"
},
"languages": {
"type": "array",
"items": {
"type": "object",
"required": [
"languageKey",
"platformLanguageId",
"displayName"
],
"properties": {
"displayName": {
"type": "string",
"minLength": 1
},
"languageKey": {
"type": "string",
"minLength": 1
},
"platformLanguageId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
},
"operations": {
"type": "object",
"required": [
"searchProblems",
"fetchProblem",
"importProblem",
"fetchProfile",
"listSubmissions",
"localRun",
"platformRun",
"prepareSubmission",
"commitSubmission",
"pollSubmission"
],
"propertyNames": {
"enum": [
"searchProblems",
"fetchProblem",
"importProblem",
"fetchProfile",
"listSubmissions",
"localRun",
"platformRun",
"prepareSubmission",
"commitSubmission",
"pollSubmission"
],
"type": "string"
},
"additionalProperties": {
"type": "object",
"required": [
"name",
"status",
"transport",
"auth",
"risk",
"compliance",
"checkedAt"
],
"properties": {
"auth": {
"enum": [
"none",
"oauth2",
"api_key",
"session_cookie",
"browser"
],
"type": "string"
},
"name": {
"enum": [
"searchProblems",
"fetchProblem",
"importProblem",
"fetchProfile",
"listSubmissions",
"localRun",
"platformRun",
"prepareSubmission",
"commitSubmission",
"pollSubmission"
],
"type": "string"
},
"risk": {
"enum": [
"R0_public_read",
"R1_private_read",
"R2_local_execute",
"R3_prepare_write",
"R4_real_submit"
],
"type": "string"
},
"reason": {
"type": "string",
"minLength": 1
},
"status": {
"enum": [
"available",
"auth_required",
"unsupported",
"disabled_by_policy",
"degraded"
],
"type": "string"
},
"toolName": {
"type": "string",
"minLength": 1
},
"checkedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"transport": {
"enum": [
"remote_http",
"local_stdio"
],
"type": "string"
},
"compliance": {
"enum": [
"official",
"unofficial",
"restricted",
"unknown"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"providerId": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.capabilities/v1"
},
"protocolVersion": {
"type": "string",
"minLength": 1
},
"providerVersion": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"schemaVersion",
"code",
"layer",
"message",
"retryPolicy",
"userAction"
],
"properties": {
"code": {
"enum": [
"request.invalid",
"capability.unsupported",
"policy.blocked",
"auth.required",
"auth.invalid",
"auth.forbidden",
"challenge.required",
"resource.not_found",
"rate_limited",
"network.timeout",
"upstream.unavailable",
"upstream.schema_changed",
"language.unsupported",
"runner.unavailable",
"runner.sandbox_required",
"confirmation.required",
"confirmation.expired",
"confirmation.mismatch",
"submission.closed",
"submission.rejected",
"submission.outcome_unknown",
"internal"
],
"type": "string"
},
"jobId": {
"type": "string",
"minLength": 1
},
"layer": {
"enum": [
"broker",
"transport",
"protocol",
"auth",
"upstream",
"runner",
"policy"
],
"type": "string"
},
"message": {
"type": "string",
"minLength": 1
},
"platform": {
"enum": [
"luogu",
"leetcode",
"nowcoder",
"codeforces",
"atcoder"
],
"type": "string"
},
"requestId": {
"type": "string",
"minLength": 1
},
"httpStatus": {
"type": "integer",
"maximum": 599,
"minimum": 100
},
"providerId": {
"type": "string",
"minLength": 1
},
"userAction": {
"enum": [
"none",
"retry",
"sign_in",
"solve_challenge",
"change_language",
"open_logs"
],
"type": "string"
},
"retryPolicy": {
"enum": [
"never",
"safe_read",
"poll_only",
"after_user_action"
],
"type": "string"
},
"retryAfterMs": {
"type": "number",
"minimum": 0
},
"upstreamCode": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.error/v1"
}
},
"additionalProperties": false
}
]
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}oj_health — AtCoder Provider Health
Report local readiness and the latest observed AtCoder page-read status without probing upstream.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"type": "object",
"required": [
"schemaVersion",
"providerId",
"platform",
"checkedAt",
"overall",
"layers",
"message"
],
"properties": {
"layers": {
"type": "object",
"required": [
"transport",
"protocol",
"schema",
"auth",
"upstream"
],
"properties": {
"auth": {
"enum": [
"not_required",
"valid",
"expired",
"missing",
"challenge"
],
"type": "string"
},
"schema": {
"enum": [
"pass",
"drift",
"unknown"
],
"type": "string"
},
"protocol": {
"enum": [
"pass",
"fail"
],
"type": "string"
},
"upstream": {
"enum": [
"pass",
"timeout",
"rate_limited",
"blocked",
"fail"
],
"type": "string"
},
"transport": {
"enum": [
"pass",
"fail"
],
"type": "string"
}
},
"additionalProperties": false
},
"message": {
"type": "string",
"minLength": 1
},
"overall": {
"enum": [
"healthy",
"degraded",
"unavailable",
"auth_required"
],
"type": "string"
},
"platform": {
"enum": [
"luogu",
"leetcode",
"nowcoder",
"codeforces",
"atcoder"
],
"type": "string"
},
"checkedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"latencyMs": {
"type": "number",
"minimum": 0
},
"providerId": {
"type": "string",
"minLength": 1
},
"retryAfterMs": {
"type": "number",
"minimum": 0
},
"schemaVersion": {
"type": "string",
"const": "oj.provider-health/v1"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"schemaVersion",
"code",
"layer",
"message",
"retryPolicy",
"userAction"
],
"properties": {
"code": {
"enum": [
"request.invalid",
"capability.unsupported",
"policy.blocked",
"auth.required",
"auth.invalid",
"auth.forbidden",
"challenge.required",
"resource.not_found",
"rate_limited",
"network.timeout",
"upstream.unavailable",
"upstream.schema_changed",
"language.unsupported",
"runner.unavailable",
"runner.sandbox_required",
"confirmation.required",
"confirmation.expired",
"confirmation.mismatch",
"submission.closed",
"submission.rejected",
"submission.outcome_unknown",
"internal"
],
"type": "string"
},
"jobId": {
"type": "string",
"minLength": 1
},
"layer": {
"enum": [
"broker",
"transport",
"protocol",
"auth",
"upstream",
"runner",
"policy"
],
"type": "string"
},
"message": {
"type": "string",
"minLength": 1
},
"platform": {
"enum": [
"luogu",
"leetcode",
"nowcoder",
"codeforces",
"atcoder"
],
"type": "string"
},
"requestId": {
"type": "string",
"minLength": 1
},
"httpStatus": {
"type": "integer",
"maximum": 599,
"minimum": 100
},
"providerId": {
"type": "string",
"minLength": 1
},
"userAction": {
"enum": [
"none",
"retry",
"sign_in",
"solve_challenge",
"change_language",
"open_logs"
],
"type": "string"
},
"retryPolicy": {
"enum": [
"never",
"safe_read",
"poll_only",
"after_user_action"
],
"type": "string"
},
"retryAfterMs": {
"type": "number",
"minimum": 0
},
"upstreamCode": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.error/v1"
}
},
"additionalProperties": false
}
]
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}oj_fetch_problem — Fetch AtCoder Problem
Fetch one public problem statement from an exact contest/task pair or canonical atcoder.jp task URL. Returns sanitized HTML with preserved math, samples, limits, hashes, and source provenance.
{
"type": "object",
"anyOf": [
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"pattern": "^https:\\/\\/atcoder\\.jp\\/contests\\/[a-z0-9][a-z0-9_-]{0,63}\\/tasks\\/[a-z0-9][a-z0-9_-]{0,63}(?:\\?lang=(?:en|ja))?$",
"maxLength": 300,
"description": "Canonical HTTPS atcoder.jp task URL, optionally with one en/ja lang query."
},
"locale": {
"enum": [
"en",
"ja"
],
"type": "string",
"description": "Statement locale. Overrides the URL lang query when supplied."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"contestId",
"taskId"
],
"properties": {
"locale": {
"enum": [
"en",
"ja"
],
"type": "string",
"description": "Statement locale. Defaults to English."
},
"taskId": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9_-]{0,63}$",
"description": "Exact AtCoder task id, such as abc086_a."
},
"contestId": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9_-]{0,63}$",
"description": "Exact AtCoder contest id, such as abc086."
}
},
"additionalProperties": false
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}{
"type": "object",
"anyOf": [
{
"type": "object",
"required": [
"schemaVersion",
"ref",
"title",
"locale",
"access",
"tags",
"content",
"constraints",
"samples",
"limits",
"io",
"starterCode",
"source"
],
"properties": {
"io": {
"type": "object",
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"stdin_stdout",
"function",
"file",
"interactive"
],
"type": "string"
},
"inputFile": {
"type": "string",
"minLength": 1
},
"outputFile": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"ref": {
"type": "object",
"required": [
"schemaVersion",
"platform",
"nativeId",
"canonicalId",
"url",
"source"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"site": {
"enum": [
"global",
"cn"
],
"type": "string"
},
"source": {
"type": "object",
"required": [
"kind",
"adapterId",
"adapterVersion",
"fetchedAt",
"sourceUrl",
"confidence"
],
"properties": {
"etag": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"official_api",
"official_open_platform",
"page_adapter",
"browser_companion",
"community_adapter",
"manual"
],
"type": "string"
},
"rawRef": {
"type": "string",
"minLength": 1
},
"adapterId": {
"type": "string",
"minLength": 1
},
"fetchedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"confidence": {
"enum": [
"authoritative",
"derived",
"user_supplied"
],
"type": "string"
},
"adapterVersion": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"contest": {
"type": "object",
"required": [
"nativeId"
],
"properties": {
"index": {
"type": "string",
"minLength": 1
},
"nativeId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"nativeId": {
"type": "string",
"minLength": 1
},
"platform": {
"enum": [
"luogu",
"leetcode",
"nowcoder",
"codeforces",
"atcoder"
],
"type": "string"
},
"canonicalId": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.problem-ref/v1"
}
},
"additionalProperties": false
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"namespace",
"slug",
"name"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"slug": {
"type": "string",
"minLength": 1
},
"namespace": {
"enum": [
"platform",
"canonical"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"title": {
"type": "string",
"minLength": 1
},
"access": {
"enum": [
"public",
"auth_required",
"premium",
"contest_only",
"unknown"
],
"type": "string"
},
"limits": {
"type": "object",
"properties": {
"timeMs": {
"type": "number",
"exclusiveMinimum": 0
},
"memoryBytes": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"locale": {
"type": "string",
"minLength": 1
},
"source": {
"type": "object",
"required": [
"kind",
"adapterId",
"adapterVersion",
"fetchedAt",
"sourceUrl",
"confidence"
],
"properties": {
"etag": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"official_api",
"official_open_platform",
"page_adapter",
"browser_companion",
"community_adapter",
"manual"
],
"type": "string"
},
"rawRef": {
"type": "string",
"minLength": 1
},
"adapterId": {
"type": "string",
"minLength": 1
},
"fetchedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"confidence": {
"enum": [
"authoritative",
"derived",
"user_supplied"
],
"type": "string"
},
"adapterVersion": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"content": {
"type": "object",
"required": [
"statement"
],
"properties": {
"input": {
"type": "object",
"required": [
"text",
"format",
"locale",
"truncated",
"sha256"
],
"properties": {
"text": {
"type": "string"
},
"format": {
"enum": [
"markdown",
"html",
"text"
],
"type": "string"
},
"locale": {
"type": "string",
"minLength": 1
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"truncated": {
"type": "boolean"
},
"originalChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
},
"additionalProperties": false
},
"notes": {
"type": "object",
"required": [
"text",
"format",
"locale",
"truncated",
"sha256"
],
"properties": {
"text": {
"type": "string"
},
"format": {
"enum": [
"markdown",
"html",
"text"
],
"type": "string"
},
"locale": {
"type": "string",
"minLength": 1
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"truncated": {
"type": "boolean"
},
"originalChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"text",
"format",
"locale",
"truncated",
"sha256"
],
"properties": {
"text": {
"type": "string"
},
"format": {
"enum": [
"markdown",
"html",
"text"
],
"type": "string"
},
"locale": {
"type": "string",
"minLength": 1
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"truncated": {
"type": "boolean"
},
"originalChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
},
"additionalProperties": false
},
"statement": {
"type": "object",
"required": [
"text",
"format",
"locale",
"truncated",
"sha256"
],
"properties": {
"text": {
"type": "string"
},
"format": {
"enum": [
"markdown",
"html",
"text"
],
"type": "string"
},
"locale": {
"type": "string",
"minLength": 1
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"truncated": {
"type": "boolean"
},
"originalChars": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"samples": {
"type": "array",
"items": {
"type": "object",
"required": [
"ordinal",
"input",
"output"
],
"properties": {
"input": {
"type": "string"
},
"output": {
"type": "string"
},
"ordinal": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"explanation": {
"type": "string"
}
},
"additionalProperties": false
}
},
"difficulty": {
"type": "object",
"required": [
"scale"
],
"properties": {
"label": {
"type": "string",
"minLength": 1
},
"scale": {
"type": "string",
"minLength": 1
},
"value": {
"type": "number"
}
},
"additionalProperties": false
},
"constraints": {
"type": "array",
"items": {
"type": "string"
}
},
"starterCode": {
"type": "array",
"items": {
"type": "object",
"required": [
"languageKey",
"platformLanguageId",
"code"
],
"properties": {
"code": {
"type": "string"
},
"languageKey": {
"type": "string",
"minLength": 1
},
"platformLanguageId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
},
"schemaVersion": {
"type": "string",
"const": "oj.problem-document/v1"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"schemaVersion",
"code",
"layer",
"message",
"retryPolicy",
"userAction"
],
"properties": {
"code": {
"enum": [
"request.invalid",
"capability.unsupported",
"policy.blocked",
"auth.required",
"auth.invalid",
"auth.forbidden",
"challenge.required",
"resource.not_found",
"rate_limited",
"network.timeout",
"upstream.unavailable",
"upstream.schema_changed",
"language.unsupported",
"runner.unavailable",
"runner.sandbox_required",
"confirmation.required",
"confirmation.expired",
"confirmation.mismatch",
"submission.closed",
"submission.rejected",
"submission.outcome_unknown",
"internal"
],
"type": "string"
},
"jobId": {
"type": "string",
"minLength": 1
},
"layer": {
"enum": [
"broker",
"transport",
"protocol",
"auth",
"upstream",
"runner",
"policy"
],
"type": "string"
},
"message": {
"type": "string",
"minLength": 1
},
"platform": {
"enum": [
"luogu",
"leetcode",
"nowcoder",
"codeforces",
"atcoder"
],
"type": "string"
},
"requestId": {
"type": "string",
"minLength": 1
},
"httpStatus": {
"type": "integer",
"maximum": 599,
"minimum": 100
},
"providerId": {
"type": "string",
"minLength": 1
},
"userAction": {
"enum": [
"none",
"retry",
"sign_in",
"solve_challenge",
"change_language",
"open_logs"
],
"type": "string"
},
"retryPolicy": {
"enum": [
"never",
"safe_read",
"poll_only",
"after_user_action"
],
"type": "string"
},
"retryAfterMs": {
"type": "number",
"minimum": 0
},
"upstreamCode": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.error/v1"
}
},
"additionalProperties": false
}
]
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}oj_search_problems — Find Exact AtCoder Problem
Resolve exactly one contest/task id, atcoder:contest/task id, or canonical task URL. Free-text and catalog crawling are not supported.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"schemaVersion",
"requestId",
"platform",
"query",
"limit"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"locale": {
"enum": [
"en",
"ja"
],
"type": "string"
},
"platform": {
"type": "string",
"const": "atcoder"
},
"requestId": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.search-request/v1"
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"type": "object",
"required": [
"schemaVersion",
"requestId",
"items",
"source"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"schemaVersion",
"ref",
"title",
"tags",
"source"
],
"properties": {
"ref": {
"type": "object",
"required": [
"schemaVersion",
"platform",
"nativeId",
"canonicalId",
"url",
"source"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"site": {
"enum": [
"global",
"cn"
],
"type": "string"
},
"source": {
"type": "object",
"required": [
"kind",
"adapterId",
"adapterVersion",
"fetchedAt",
"sourceUrl",
"confidence"
],
"properties": {
"etag": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"official_api",
"official_open_platform",
"page_adapter",
"browser_companion",
"community_adapter",
"manual"
],
"type": "string"
},
"rawRef": {
"type": "string",
"minLength": 1
},
"adapterId": {
"type": "string",
"minLength": 1
},
"fetchedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"confidence": {
"enum": [
"authoritative",
"derived",
"user_supplied"
],
"type": "string"
},
"adapterVersion": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"contest": {
"type": "object",
"required": [
"nativeId"
],
"properties": {
"index": {
"type": "string",
"minLength": 1
},
"nativeId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"nativeId": {
"type": "string",
"minLength": 1
},
"platform": {
"enum": [
"luogu",
"leetcode",
"nowcoder",
"codeforces",
"atcoder"
],
"type": "string"
},
"canonicalId": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.problem-ref/v1"
}
},
"additionalProperties": false
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"namespace",
"slug",
"name"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"slug": {
"type": "string",
"minLength": 1
},
"namespace": {
"enum": [
"platform",
"canonical"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"title": {
"type": "string",
"minLength": 1
},
"source": {
"type": "object",
"required": [
"kind",
"adapterId",
"adapterVersion",
"fetchedAt",
"sourceUrl",
"confidence"
],
"properties": {
"etag": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"official_api",
"official_open_platform",
"page_adapter",
"browser_companion",
"community_adapter",
"manual"
],
"type": "string"
},
"rawRef": {
"type": "string",
"minLength": 1
},
"adapterId": {
"type": "string",
"minLength": 1
},
"fetchedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"confidence": {
"enum": [
"authoritative",
"derived",
"user_supplied"
],
"type": "string"
},
"adapterVersion": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"acceptance": {
"type": "object",
"properties": {
"ratio": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"accepted": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"submissions": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
},
"additionalProperties": false
},
"difficulty": {
"type": "object",
"required": [
"scale"
],
"properties": {
"label": {
"type": "string",
"minLength": 1
},
"scale": {
"type": "string",
"minLength": 1
},
"value": {
"type": "number"
}
},
"additionalProperties": false
},
"contestLabel": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.problem-summary/v1"
}
},
"additionalProperties": false
}
},
"source": {
"type": "object",
"required": [
"kind",
"adapterId",
"adapterVersion",
"fetchedAt",
"sourceUrl",
"confidence"
],
"properties": {
"etag": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"official_api",
"official_open_platform",
"page_adapter",
"browser_companion",
"community_adapter",
"manual"
],
"type": "string"
},
"rawRef": {
"type": "string",
"minLength": 1
},
"adapterId": {
"type": "string",
"minLength": 1
},
"fetchedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"confidence": {
"enum": [
"authoritative",
"derived",
"user_supplied"
],
"type": "string"
},
"adapterVersion": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"nextCursor": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.search-result/v1"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"schemaVersion",
"code",
"layer",
"message",
"retryPolicy",
"userAction"
],
"properties": {
"code": {
"enum": [
"request.invalid",
"capability.unsupported",
"policy.blocked",
"auth.required",
"auth.invalid",
"auth.forbidden",
"challenge.required",
"resource.not_found",
"rate_limited",
"network.timeout",
"upstream.unavailable",
"upstream.schema_changed",
"language.unsupported",
"runner.unavailable",
"runner.sandbox_required",
"confirmation.required",
"confirmation.expired",
"confirmation.mismatch",
"submission.closed",
"submission.rejected",
"submission.outcome_unknown",
"internal"
],
"type": "string"
},
"jobId": {
"type": "string",
"minLength": 1
},
"layer": {
"enum": [
"broker",
"transport",
"protocol",
"auth",
"upstream",
"runner",
"policy"
],
"type": "string"
},
"message": {
"type": "string",
"minLength": 1
},
"platform": {
"enum": [
"luogu",
"leetcode",
"nowcoder",
"codeforces",
"atcoder"
],
"type": "string"
},
"requestId": {
"type": "string",
"minLength": 1
},
"httpStatus": {
"type": "integer",
"maximum": 599,
"minimum": 100
},
"providerId": {
"type": "string",
"minLength": 1
},
"userAction": {
"enum": [
"none",
"retry",
"sign_in",
"solve_challenge",
"change_language",
"open_logs"
],
"type": "string"
},
"retryPolicy": {
"enum": [
"never",
"safe_read",
"poll_only",
"after_user_action"
],
"type": "string"
},
"retryAfterMs": {
"type": "number",
"minimum": 0
},
"upstreamCode": {
"type": "string",
"minLength": 1
},
"schemaVersion": {
"type": "string",
"const": "oj.error/v1"
}
},
"additionalProperties": false
}
]
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 183 ms
- 95th percentile latency
- 183 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 183 ms · metadata changed · 4 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http atcoder-mcp-server https://api.ksrnyx.top/oj-mcp/atcoder/mcpCodex
codex mcp add atcoder-mcp-server --url https://api.ksrnyx.top/oj-mcp/atcoder/mcpCursor
{
"mcpServers": {
"atcoder-mcp-server": {
"url": "https://api.ksrnyx.top/oj-mcp/atcoder/mcp"
}
}
}Cline
{
"mcpServers": {
"atcoder-mcp-server": {
"type": "streamableHttp",
"url": "https://api.ksrnyx.top/oj-mcp/atcoder/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"atcoder-mcp-server": {
"type": "http",
"url": "https://api.ksrnyx.top/oj-mcp/atcoder/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http atcoder-mcp-server https://api.ksrnyx.top/oj-mcp/atcoder/mcpClaude Desktop
https://api.ksrnyx.top/oj-mcp/atcoder/mcpWindsurf
{
"mcpServers": {
"atcoder-mcp-server": {
"serverUrl": "https://api.ksrnyx.top/oj-mcp/atcoder/mcp"
}
}
}Let your agent find its tools
Find servers like AtCoder MCP Server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.