GH-600 MCP Server Lab
# GH-600 MCP Server Lab
A runnable Model Context Protocol server, by [Certy](https://github.com/CertyPro).
Maps to **GH-600 domain 2.0 - Tooling, MCP Servers & Execution Context**.
> Deterministic and local: the tools use fake in-memory data, so the server runs
> with no network and no tokens.
## Run it
```bash
npm install
npm test # 7 tool/security tests
npm run typecheck
npm start # starts the MCP server over stdio
```
Connect a host with `mcp-config.example.json` (runs `npx tsx src/index.ts`).
## What is here
- `src/index.ts` - a real MCP server (using `@modelcontextprotocol/sdk`) that
registers four tools and one resource.
- `src/tools/` - pure tool functions (getRepoInfo, listOpenIssues,
createIssueSummary, safeFileRead).
- `src/security/` - an allowlist and a rate limiter.
- `src/resources/repoContext.ts` - a read-only MCP resource.
- `docs/` - MCP overview, tool registration, stdio vs SSE, execution context.
## Links
- Free GH-600 course and mock exam: https://certy.pro
- Course content: https://github.com/CertyPro/certy-gh600-course-content
## Licence
[MIT](LICENSE).
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: repo info, listing issues, summarizing issues, and reading allowlisted files. There is no overlap or ambiguity among them.
Most tools follow a verb_noun pattern with camelCase (getRepoInfo, listOpenIssues, createIssueSummary), but safeFileRead deviates by placing an adjective before the object and putting the verb last. The mixed pattern is readable but inconsistent.
Four tools is a reasonable number for a small lab server, not too sparse or bloated. However, the inclusion of safeFileRead alongside GitHub tools suggests a slightly unfocused scope, preventing a perfect score.
The GitHub-related tools cover read and summary operations for repos and open issues, but lack issue lifecycle actions like create, update, or close. safeFileRead appears unrelated to the primary domain, creating a notable gap in overall surface coherence.