Skip to main content
Glama
README.md
# eduframe-mcp

Eduframe MCP server — exposes [Eduframe](https://www.eduframe.nl/) resources as MCP tools.

## Usage in VSCode

Add the following configuration to your `.vscode/mcp.json` file to use this MCP server with GitHub Copilot in agent mode.

### Using `npx` (from GitHub)

```json
{
  "servers": {
    "eduframe": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "github:martijnpieters/eduframe-mcp"],
      "env": {
        "EDUFRAME_API_TOKEN": "${input:eduframe_api_token}"
      }
    }
  },
  "inputs": [
    {
      "id": "eduframe_api_token",
      "type": "promptString",
      "description": "Eduframe API token",
      "password": true
    }
  ]
}
```

### Development (from this repository)

First, build the project:

```sh
pnpm install && pnpm build
```

Then add the following to `.vscode/mcp.json` in this repository:

```json
{
  "servers": {
    "eduframe": {
      "type": "stdio",
      "command": "node",
      "args": ["${workspaceFolder}/dist/index.js"],
      "env": {
        "EDUFRAME_API_TOKEN": "${input:eduframe_api_token}"
      }
    }
  },
  "inputs": [
    {
      "id": "eduframe_api_token",
      "type": "promptString",
      "description": "Eduframe API token",
      "password": true
    }
  ]
}
```

## Configuration

The server requires one environment variable:

| Variable | Description |
|---|---|
| `EDUFRAME_API_TOKEN` | Your Eduframe API token (Bearer token) |
| `EDUFRAME_API_ENDPOINT` | _(Optional)_ Base URL for the Eduframe API. Defaults to `https://api.eduframe.nl/api/v1`. |

## Debugging

When running the server locally, each successful tool call writes the raw API response to `.last-response.json` in the project root. This file can be inspected to see the complete JSON payload returned by the Eduframe API, independent of the formatted text output sent back to the MCP client.

The file is overwritten on every tool call and contains the tool name, the request parameters, and the full response:

```json
{
  "timestamp": "2024-01-01T00:00:00.000Z",
  "tool": "get_lead",
  "request": { "id": 1 },
  "response": { "id": 1, "email": "lead@example.com", ... }
}
```

TDQS

C2.8/5.0

Scored across 189 tools

Disambiguation4/5

Most tools have distinct names combining verb and entity, but some could be confused, e.g., 'create_planning_attendee' vs 'create_planning_required_teacher_group_attendee'. Overall, the set is fairly clear.

Naming Consistency5/5

The naming convention is consistently verb_noun in snake_case, with standard verbs like create, get, update, delete. Minor exceptions like 'add_label_to_order' still fit the pattern. Very consistent.

Tool Count2/5

189 tools is excessive for an MCP server. Typical scopes are 3-15 tools. This set likely mirrors a full API, which overwhelms agents and reduces coherence.

Completeness3/5

CRUD is available for many entities, but gaps exist: no delete for orders, invoices, or updates for some objects. Tools like 'get_payment_methods' are read-only. Medium coverage.

Maintenance

ActivityInactive
ResponsivenessNo issues