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
Once published, nothing needs cloning.
Claude Code:
claude mcp add reqcheck -- 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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_reqcheck-0.1.0.tar.gz.
File metadata
- Download URL: mcp_reqcheck-0.1.0.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56e51cc1a1137910d6d7619f8936b1f19c9c0010b645c6878f19ea8196bd9e42
|
|
| MD5 |
fa5a321753eb04992f1d499d306bdce4
|
|
| BLAKE2b-256 |
fa94d3f01bec4533dc4beea9c4e26a37c35d399ffdcfdb5c3576352d7a73f58b
|
File details
Details for the file mcp_reqcheck-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mcp_reqcheck-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fcd3239c916881d2e568ca1aa100d99984f170fce1e6b2178656dc5d9e36169
|
|
| MD5 |
b0d6edce52f7d7f1245ce08cda843c15
|
|
| BLAKE2b-256 |
00b2c3b371405b9d0305743c4f68b73804a4413059e2d6d968ff1bce3058dbcf
|