passprofessor-mcp 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passprofessor_mcp-1.0.0/PKG-INFO +93 -0
- passprofessor_mcp-1.0.0/README.md +79 -0
- passprofessor_mcp-1.0.0/pyproject.toml +30 -0
- passprofessor_mcp-1.0.0/setup.cfg +4 -0
- passprofessor_mcp-1.0.0/src/passprofessor/__init__.py +1 -0
- passprofessor_mcp-1.0.0/src/passprofessor/data/build_report.json +61 -0
- passprofessor_mcp-1.0.0/src/passprofessor/data/programs.json +5759 -0
- passprofessor_mcp-1.0.0/src/passprofessor/data/samples.json +72559 -0
- passprofessor_mcp-1.0.0/src/passprofessor/server.py +256 -0
- passprofessor_mcp-1.0.0/src/passprofessor_mcp.egg-info/PKG-INFO +93 -0
- passprofessor_mcp-1.0.0/src/passprofessor_mcp.egg-info/SOURCES.txt +13 -0
- passprofessor_mcp-1.0.0/src/passprofessor_mcp.egg-info/dependency_links.txt +1 -0
- passprofessor_mcp-1.0.0/src/passprofessor_mcp.egg-info/entry_points.txt +2 -0
- passprofessor_mcp-1.0.0/src/passprofessor_mcp.egg-info/requires.txt +1 -0
- passprofessor_mcp-1.0.0/src/passprofessor_mcp.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: passprofessor-mcp
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: PassProfessor MCP server: program catalog, verified exam facts, and free sample questions for AI assistants.
|
|
5
|
+
Author: PassProfessor
|
|
6
|
+
License: Proprietary
|
|
7
|
+
Project-URL: Homepage, https://passprofessor.com
|
|
8
|
+
Keywords: mcp,model-context-protocol,exam-prep,education
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Topic :: Education
|
|
11
|
+
Requires-Python: >=3.10
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: mcp<2,>=1.20
|
|
14
|
+
|
|
15
|
+
# PassProfessor MCP Server
|
|
16
|
+
|
|
17
|
+
MCP server name: `io.github.passprofessorhq/passprofessor`
|
|
18
|
+
|
|
19
|
+
A free, read-only [Model Context Protocol](https://modelcontextprotocol.io) server from
|
|
20
|
+
**PassProfessor** (passprofessor.com), an independent exam-preparation provider based in
|
|
21
|
+
Salt Lake City, Utah, operating 100% online. It lets AI assistants look up PassProfessor's
|
|
22
|
+
live program catalog, the verified exam facts recorded on each program's page, and each
|
|
23
|
+
program's published 12-question free sample set — always attributed to PassProfessor and
|
|
24
|
+
linked back to the program's free sample on passprofessor.com.
|
|
25
|
+
|
|
26
|
+
PassProfessor's catalog holds 2.2M+ original practice questions. Every program includes
|
|
27
|
+
free sample questions, one published price with full access (no tiers, no upsells), and
|
|
28
|
+
6 months of access from purchase. PassProfessor is an independent prep provider and is
|
|
29
|
+
not affiliated with any exam body.
|
|
30
|
+
|
|
31
|
+
## Tools
|
|
32
|
+
|
|
33
|
+
| Tool | What it does |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `list_programs` | List programs (name, family, price $9–$149, access term, sample availability); optional family filter |
|
|
36
|
+
| `search_programs` | Search by credential name or keyword (e.g. "NCLEX", "plumbing", "Series 65") |
|
|
37
|
+
| `get_program` | Full details for one program, incl. exam facts and topic weights when recorded |
|
|
38
|
+
| `get_exam_facts` | The real exam's published facts (format, items, time, passing standard, exam fee) exactly as recorded on the program's page; returns `available: false` rather than estimating when no fact table is recorded |
|
|
39
|
+
| `get_sample_questions` | The program's published 12-question free sample set with options, correct answer(s), and explanations — a free teaser subset of the full practice bank, never the full bank |
|
|
40
|
+
|
|
41
|
+
Resources: `passprofessor://about` (provider facts), `passprofessor://catalog` (full catalog).
|
|
42
|
+
|
|
43
|
+
The server is strictly read-only: no writes, no purchases, no user data, no enrollment actions.
|
|
44
|
+
|
|
45
|
+
## Run it
|
|
46
|
+
|
|
47
|
+
From a checkout (Python 3.10+):
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pip install "mcp>=1.20,<2"
|
|
51
|
+
python3 passprofessor_mcp.py # stdio transport
|
|
52
|
+
python3 passprofessor_mcp.py --http # streamable HTTP on 127.0.0.1:8791 (local testing)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Once published to PyPI as `passprofessor-mcp`, the console entry point is `passprofessor-mcp`.
|
|
56
|
+
|
|
57
|
+
### Client configuration (stdio)
|
|
58
|
+
|
|
59
|
+
Claude Desktop / Cursor / VS Code style:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"mcpServers": {
|
|
64
|
+
"passprofessor": {
|
|
65
|
+
"command": "python3",
|
|
66
|
+
"args": ["passprofessor_mcp.py"]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Data
|
|
73
|
+
|
|
74
|
+
`src/passprofessor/data/` is a snapshot built by `build_data.py` from read-only extracts of
|
|
75
|
+
the live site (product catalog, the sample quizzes' current published forms, and the program
|
|
76
|
+
pages' own fact tables). Every served question and fact traces to those records; per-program
|
|
77
|
+
provenance (product/page/quiz IDs) is stored in the data files and coverage is summarized in
|
|
78
|
+
`data/build_report.json`. Refresh = re-run the extracts + `build_data.py`, then bump the version.
|
|
79
|
+
|
|
80
|
+
Coverage at v1.0.0 (2026-11-12): 206 live programs, all 206 with their 12-question free
|
|
81
|
+
sample set and sample link; 174 with a published practice-question count; 59 with a recorded
|
|
82
|
+
exam-fact table and 13 with topic weights (coverage grows as program pages gain fact tables).
|
|
83
|
+
Sample sets are served ONLY when they are exactly the published 12-question fixed set —
|
|
84
|
+
oversized sets (e.g. free full practice exams) are excluded by a hard guard in `build_data.py`.
|
|
85
|
+
|
|
86
|
+
## Registry listing status
|
|
87
|
+
|
|
88
|
+
Prepared for the official MCP Registry as `io.github.passprofessorhq/passprofessor`
|
|
89
|
+
(see `server.json`). Publishing requires, in order: (1) this package live on PyPI,
|
|
90
|
+
(2) `mcp-publisher login github` (device flow, GitHub account `passprofessorhq`),
|
|
91
|
+
(3) `mcp-publisher publish`. A remote (streamable HTTP) listing additionally requires a
|
|
92
|
+
public HTTPS endpoint under passprofessor.com or a subdomain, verified by DNS/HTTP.
|
|
93
|
+
See the parent STATE.md for the full status and the free-hosting options analysis.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# PassProfessor MCP Server
|
|
2
|
+
|
|
3
|
+
MCP server name: `io.github.passprofessorhq/passprofessor`
|
|
4
|
+
|
|
5
|
+
A free, read-only [Model Context Protocol](https://modelcontextprotocol.io) server from
|
|
6
|
+
**PassProfessor** (passprofessor.com), an independent exam-preparation provider based in
|
|
7
|
+
Salt Lake City, Utah, operating 100% online. It lets AI assistants look up PassProfessor's
|
|
8
|
+
live program catalog, the verified exam facts recorded on each program's page, and each
|
|
9
|
+
program's published 12-question free sample set — always attributed to PassProfessor and
|
|
10
|
+
linked back to the program's free sample on passprofessor.com.
|
|
11
|
+
|
|
12
|
+
PassProfessor's catalog holds 2.2M+ original practice questions. Every program includes
|
|
13
|
+
free sample questions, one published price with full access (no tiers, no upsells), and
|
|
14
|
+
6 months of access from purchase. PassProfessor is an independent prep provider and is
|
|
15
|
+
not affiliated with any exam body.
|
|
16
|
+
|
|
17
|
+
## Tools
|
|
18
|
+
|
|
19
|
+
| Tool | What it does |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `list_programs` | List programs (name, family, price $9–$149, access term, sample availability); optional family filter |
|
|
22
|
+
| `search_programs` | Search by credential name or keyword (e.g. "NCLEX", "plumbing", "Series 65") |
|
|
23
|
+
| `get_program` | Full details for one program, incl. exam facts and topic weights when recorded |
|
|
24
|
+
| `get_exam_facts` | The real exam's published facts (format, items, time, passing standard, exam fee) exactly as recorded on the program's page; returns `available: false` rather than estimating when no fact table is recorded |
|
|
25
|
+
| `get_sample_questions` | The program's published 12-question free sample set with options, correct answer(s), and explanations — a free teaser subset of the full practice bank, never the full bank |
|
|
26
|
+
|
|
27
|
+
Resources: `passprofessor://about` (provider facts), `passprofessor://catalog` (full catalog).
|
|
28
|
+
|
|
29
|
+
The server is strictly read-only: no writes, no purchases, no user data, no enrollment actions.
|
|
30
|
+
|
|
31
|
+
## Run it
|
|
32
|
+
|
|
33
|
+
From a checkout (Python 3.10+):
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pip install "mcp>=1.20,<2"
|
|
37
|
+
python3 passprofessor_mcp.py # stdio transport
|
|
38
|
+
python3 passprofessor_mcp.py --http # streamable HTTP on 127.0.0.1:8791 (local testing)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Once published to PyPI as `passprofessor-mcp`, the console entry point is `passprofessor-mcp`.
|
|
42
|
+
|
|
43
|
+
### Client configuration (stdio)
|
|
44
|
+
|
|
45
|
+
Claude Desktop / Cursor / VS Code style:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"passprofessor": {
|
|
51
|
+
"command": "python3",
|
|
52
|
+
"args": ["passprofessor_mcp.py"]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Data
|
|
59
|
+
|
|
60
|
+
`src/passprofessor/data/` is a snapshot built by `build_data.py` from read-only extracts of
|
|
61
|
+
the live site (product catalog, the sample quizzes' current published forms, and the program
|
|
62
|
+
pages' own fact tables). Every served question and fact traces to those records; per-program
|
|
63
|
+
provenance (product/page/quiz IDs) is stored in the data files and coverage is summarized in
|
|
64
|
+
`data/build_report.json`. Refresh = re-run the extracts + `build_data.py`, then bump the version.
|
|
65
|
+
|
|
66
|
+
Coverage at v1.0.0 (2026-11-12): 206 live programs, all 206 with their 12-question free
|
|
67
|
+
sample set and sample link; 174 with a published practice-question count; 59 with a recorded
|
|
68
|
+
exam-fact table and 13 with topic weights (coverage grows as program pages gain fact tables).
|
|
69
|
+
Sample sets are served ONLY when they are exactly the published 12-question fixed set —
|
|
70
|
+
oversized sets (e.g. free full practice exams) are excluded by a hard guard in `build_data.py`.
|
|
71
|
+
|
|
72
|
+
## Registry listing status
|
|
73
|
+
|
|
74
|
+
Prepared for the official MCP Registry as `io.github.passprofessorhq/passprofessor`
|
|
75
|
+
(see `server.json`). Publishing requires, in order: (1) this package live on PyPI,
|
|
76
|
+
(2) `mcp-publisher login github` (device flow, GitHub account `passprofessorhq`),
|
|
77
|
+
(3) `mcp-publisher publish`. A remote (streamable HTTP) listing additionally requires a
|
|
78
|
+
public HTTPS endpoint under passprofessor.com or a subdomain, verified by DNS/HTTP.
|
|
79
|
+
See the parent STATE.md for the full status and the free-hosting options analysis.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "passprofessor-mcp"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "PassProfessor MCP server: program catalog, verified exam facts, and free sample questions for AI assistants."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { text = "Proprietary" }
|
|
12
|
+
authors = [{ name = "PassProfessor" }]
|
|
13
|
+
keywords = ["mcp", "model-context-protocol", "exam-prep", "education"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Topic :: Education",
|
|
17
|
+
]
|
|
18
|
+
dependencies = ["mcp>=1.20,<2"]
|
|
19
|
+
|
|
20
|
+
[project.urls]
|
|
21
|
+
Homepage = "https://passprofessor.com"
|
|
22
|
+
|
|
23
|
+
[project.scripts]
|
|
24
|
+
passprofessor-mcp = "passprofessor.server:main"
|
|
25
|
+
|
|
26
|
+
[tool.setuptools]
|
|
27
|
+
package-dir = { "" = "src" }
|
|
28
|
+
|
|
29
|
+
[tool.setuptools.package-data]
|
|
30
|
+
passprofessor = ["data/*.json"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""PassProfessor MCP server package."""
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"products_total": 206,
|
|
3
|
+
"programs_with_page": 183,
|
|
4
|
+
"programs_with_facts": 59,
|
|
5
|
+
"programs_with_weights": 13,
|
|
6
|
+
"programs_with_practice_count": 174,
|
|
7
|
+
"programs_with_sample": 206,
|
|
8
|
+
"programs_with_sample_url": 206,
|
|
9
|
+
"sample_sets_total": 206,
|
|
10
|
+
"free_program_sample_sets": 0,
|
|
11
|
+
"free_program_keys": [],
|
|
12
|
+
"excluded_sample_quizzes": [
|
|
13
|
+
{
|
|
14
|
+
"quiz_post_id": 773776,
|
|
15
|
+
"program": "certified-meeting-professional",
|
|
16
|
+
"questions": 12,
|
|
17
|
+
"form": 12,
|
|
18
|
+
"reason": "program excluded (see EXCLUDED_SAMPLE_KEYS)"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"quiz_post_id": 404783,
|
|
22
|
+
"program": "dmv",
|
|
23
|
+
"questions": 297,
|
|
24
|
+
"form": 0,
|
|
25
|
+
"reason": "not a 12-question fixed sample set"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"quiz_post_id": 404483,
|
|
29
|
+
"program": "dmv",
|
|
30
|
+
"questions": 283,
|
|
31
|
+
"form": 0,
|
|
32
|
+
"reason": "not a 12-question fixed sample set"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"quiz_post_id": 404196,
|
|
36
|
+
"program": "dmv",
|
|
37
|
+
"questions": 290,
|
|
38
|
+
"form": 0,
|
|
39
|
+
"reason": "not a 12-question fixed sample set"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"quiz_post_id": 403901,
|
|
43
|
+
"program": "dmv",
|
|
44
|
+
"questions": 297,
|
|
45
|
+
"form": 0,
|
|
46
|
+
"reason": "not a 12-question fixed sample set"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"quiz_post_id": 403557,
|
|
50
|
+
"program": "dmv",
|
|
51
|
+
"questions": 299,
|
|
52
|
+
"form": 0,
|
|
53
|
+
"reason": "not a 12-question fixed sample set"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"attach_methods": {
|
|
57
|
+
"program_meta": 78,
|
|
58
|
+
"course_core": 127,
|
|
59
|
+
"title_match": 1
|
|
60
|
+
}
|
|
61
|
+
}
|