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 mcp add codequiry --env CODEQUIRY_API_KEY=your_key -- npx -y codequiry-mcp
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.
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.
Get an API key
It is on your dashboard, 64 characters long. No account yet? Start a trial first.
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.
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.
{
"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.
{
"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.
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.
What a session looks like
This one is made up, but it is the shape of it.
codequiry_quick_check codequiry_wait_for_check codequiry_get_overview codequiry_get_ai_results
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?
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 |
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 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.