ReqCheck MCP server
Finds ambiguous terms in a requirements document, checked against ISO/IEC/IEEE 29148:2018, and hands the client the question templates needed to ask the author what they actually meant.
Detection is deterministic — regex over a versioned rule catalog, no model involved — so the same text always produces the same findings, and every finding cites the clause it came from.
Part of ReqCheck, which also ships a web app for the same checks.
What it exposes
| Kind | Name | Purpose |
|---|---|---|
| Tool | ambiguity_analysis(text) |
Every flagged term with its statement, severity, explanation, ISO citation, and question templates |
| Resource | reqcheck://knowledge-base |
The full rule catalog as authored, with citations |
| Prompt | check_requirements(text) |
Analyses a document and reports findings in a fixed format |
Install from PyPI
1. Install uv (skip if you already have it): This command is for macOS/linus
curl -LsSf https://astral.sh/uv/install.sh | sh
Claude Code:
claude mcp add reqcheck -- uvx mcp-reqcheck
This command is for installing mcp in the directory you are cd into only.
To install this MCP for all directories, use claude mcp add reqcheck --scope user -- uvx mcp-reqcheck
Claude Desktop — add to
~/Library/Application Support/Claude/claude_desktop_config.json:
"mcpServers": {
"ReqCheck": { "command": "uvx", "args": ["mcp-reqcheck"] }
},
Then restart Desktop.
Install from source
1. Install uv (skip if you already have it):
curl -LsSf https://astral.sh/uv/install.sh | sh
2. Get the code:
git clone https://github.com/hjchen114514/ReqCheck.git
cd ReqCheck/apps/mcp_reqCheck
3a. Claude Desktop:
uv run mcp install src/mcp_reqcheck/server.py --with PyYAML
Restart Desktop. ReqCheck should show green under Settings → Developer.
3b. Claude Code — needs the absolute path. Print it from this folder:
pwd
# /Users/you/ReqCheck/apps/mcp_reqCheck
claude mcp add reqcheck -- uv run --with "mcp[cli]" --with PyYAML mcp run <paste-path>/src/mcp_reqcheck/server.py
Check it with claude mcp list.
--with PyYAMLis required when running from source. The client launches the server from its own working directory, so uv never reads this project'spyproject.tomland builds an environment from the--withflags alone. Without it the catalog loader fails onimport yamland the client reports "Server disconnected". Installed users don't need it —uvxresolves declared dependencies.
Use it
Ask your client something like:
Check these requirements for ambiguity: The system shall be user-friendly and load significantly faster than the old site.
It calls ambiguity_analysis, gets back the flagged terms with their reasons
and citations, and asks you follow-up questions rather than rewriting your
requirement for you.
Develop
uv run mcp dev src/mcp_reqcheck/server.py
Opens the MCP Inspector, where you can call the tool, read the resource, and render the prompt without a client.
Layout
server.py holds the records, the rule catalog, the analyser, and the MCP
surface in one module, with ambiguity_rules.yaml beside it. That is
deliberate: a client may load the file directly (mcp run server.py, with no
package around it) or run the installed console script (uvx mcp-reqcheck,
with one), and imports between sibling files resolve differently in those two
cases. Importing nothing of its own makes both behave identically.
Two details in that file must stay as they are, or the file-based launch breaks:
- no
from __future__ import annotations— it turns annotations into strings, whichdataclassesresolves throughsys.modules[cls.__module__], and that isNonefor a directly-loaded file Pattern[str], notre.Pattern[str]— same reason
The catalog and analyser are copied from apps/api. Rule changes made there
need copying here too.
Publishing
uv build
uv publish --index testpypi # sandbox first
uv publish # then the real index
Metadata
Release files for mcp-reqcheck 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcp_reqcheck-0.1.2.tar.gz | 13.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_reqcheck-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.9 kB
Release files / mcp_reqcheck-0.1.2.tar.gz
| Download URL | mcp_reqcheck-0.1.2.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62bc46dfb142588a81a3c5a875a3569cfeef32ddb1e82141b498dc99330b3ae8
|
|
BLAKE2b-256 checksum How to use checksums |
6bd578cf79c66daa03f2ba16dcce291e11d434c9017403b95aee267d92dcf307
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mcp_reqcheck-0.1.2-py3-none-any.whl
| Download URL | mcp_reqcheck-0.1.2-py3-none-any.whl |
|---|---|
| Size | 14.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c626b0b12a7e427658dfb53b8bdc932ac04d94698d727a458d7392a5b2cee965
|
|
BLAKE2b-256 checksum How to use checksums |
d0984c763c372e8a4c964c12bd4c8cf0c58d0dce3de85880f57feeea64974e16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|