Detect plagiarized and similar code across code sources on the web See what's new
Model Context Protocol

Your AI assistant can run plagiarism checks

Install this once and Claude or Cursor can point at a folder of submissions and check them for you. It zips them up, starts the check, waits for it to finish, and tells you what came back. You never leave the chat.

Claude Code
claude mcp add codequiry --env CODEQUIRY_API_KEY=your_key -- npx -y codequiry-mcp
What it does

The same checks, asked for differently

The server wraps our API, so your assistant gets the three things the dashboard does. Nothing new, just reachable from where you already are.

👥

Compares submissions to each other

Every submission against every other one. You get a score per person and the actual line ranges that line up.

🌐

Searches the web and our database

GitHub, Stack Overflow, and code that has been submitted to us before. This is how you find the thing it was copied from.

🤖

Flags AI-generated code

Two models look at it. One is trained on AI and human code samples, the other reads patterns and style. Neither costs extra.

Setup

Setting it up

It runs locally through npx, so there is nothing to host and nothing to build. Node 18 or newer is the only requirement.

1

Get an API key

It is on your dashboard, 64 characters long. No account yet? Start a trial first.

2

Paste the config into your client

Pick yours below and swap your_key for the real one. Restart the client afterwards or it will not pick up the change.

Terminal
claude mcp add codequiry --env CODEQUIRY_API_KEY=your_key -- npx -y codequiry-mcp

Add --scope user to make it available in every project instead of just this one. Verify with claude mcp list.

claude_desktop_config.json
{
  "mcpServers": {
    "codequiry": {
      "command": "npx",
      "args": ["-y", "codequiry-mcp"],
      "env": {
        "CODEQUIRY_API_KEY": "your_key"
      }
    }
  }
}

Open it from Settings, Developer, Edit Config. Restart Claude Desktop after saving.

~/.cursor/mcp.json
{
  "mcpServers": {
    "codequiry": {
      "command": "npx",
      "args": ["-y", "codequiry-mcp"],
      "env": {
        "CODEQUIRY_API_KEY": "your_key"
      }
    }
  }
}

Use .cursor/mcp.json inside a project to scope it to that project instead.

Terminal
code --add-mcp '{"name":"codequiry","command":"npx","args":["-y","codequiry-mcp"],"env":{"CODEQUIRY_API_KEY":"your_key"}}'

Windsurf and Zed use the same JSON block as Claude Desktop in their own MCP settings file.

Example

What a session looks like

This one is made up, but it is the shape of it.

You
there are 24 submissions in ~/cs101/hw3, one folder each. zip them and check them against each other. also turn on the AI detection
Claude
Zipping the 24 folders now. That is one check, so I will start it and wait.
codequiry_quick_check codequiry_wait_for_check codequiry_get_overview codequiry_get_ai_results
Claude
Took about four minutes. One pair is hard to explain away: student_07 and student_19 come back at 87 percent across 6 files, and they share a helper function with the same variable names that the assignment never asked for.

student_04 is a maybe. Only 12 percent against the others, but it scores high on AI detection. Worth a look rather than an accusation.

The other 21 are in normal range. Want the line ranges for the first pair?
Reference

The tools it adds

Fourteen of them. You will mostly use the first three and let the assistant work out the rest, but they are all here if you want to drive it yourself.

Tool What it does Balance
codequiry_quick_check Creates the check, uploads the zips and starts it, in one call. Normally the one it reaches for. Spends 1
codequiry_wait_for_check Waits for the check to finish without hammering the API. Free
codequiry_get_overview The scores once it is done, one per submission. Free
codequiry_get_results Matched files and matched line ranges for one submission. Free
codequiry_get_ai_results AI-generated-code detection scores for a check run with AI detection on. Free
codequiry_account The account behind the key, including how many checks remain. Free
codequiry_list_checks Past checks, newest first. Free
codequiry_get_check_status Status of a single check. Free
codequiry_service_status Engine health and current queue depth. Free
codequiry_list_languages Language ids, including the language-agnostic option. Free
codequiry_list_test_types Test-type ids accepted when creating or starting a check. Free
codequiry_create_check Create an empty check, for the multi-step flow. Free
codequiry_upload_submission Upload one ZIP into an existing check. Up to 10 MB per submission. Free
codequiry_start_check Start analysis on a check that already has submissions. Spends 1
Cost

About your balance

It cannot spend checks behind your back

Starting a check costs one check, the same as running it from the dashboard. Everything else on that list is free to call as often as you like.

The two tools that do spend are flagged destructive in the protocol, so your client asks before running them. Creating a check and uploading files to it are writes, but they cost nothing, so they are not flagged. A prompt on a free action only teaches you to click through the one that matters.

If you would rather not rely on a prompt, set CODEQUIRY_MCP_READONLY=1. That leaves only the ten tools that read, so the assistant can still go through every old result but cannot create, upload or start anything.

One other thing worth knowing: the API allows 60 requests a minute per IP, shared across everything. That is why codequiry_wait_for_check exists. It backs off instead of hammering, and if you do hit the limit the server waits as long as the API asks it to.

Questions

Questions we get

What is MCP?

An open standard for letting AI assistants call outside tools. The assistant is handed a list of things it can do and decides when to use them. This server is our list.

Which assistants work with it?

Any MCP client. The setup above covers Claude Code, Claude Desktop, Cursor and VS Code. Windsurf and Zed take the same JSON as Claude Desktop, in their own settings file.

Does this replace the API or the CLI?

No, it sits on top of the same API. For scripts and anything on a schedule, use the API or the CLI. Use this when you would rather just ask.

How big can a submission be?

10 MB per zip, one zip per submission. The server checks the size before it uploads, so you get a real message back instead of a request that fails halfway.

Where does my code go?

To Codequiry, the same as uploading through the dashboard. The MCP server is a thin client and keeps nothing itself. Details are in the privacy policy.

Is it open source?

Yes, MIT. It is on npm as codequiry-mcp.

That is the whole thing

Get a key, paste one line into your assistant, and it can check code for you.