Skip to main content
Glama
README.md
# 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

B3/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency3/5

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.

Tool Count4/5

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.

Completeness3/5

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.

Maintenance

ActivitySlowing
ResponsivenessNo issues