# PRIMAMCP

Feeds your coding assistant verified German and EU legal text with a link to the official source. Useful when the model invents paragraphs and case numbers.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 11
- Author: PLANIT-TECH
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/PLANIT-TECH/primamcp
- Updated: 2026-09-24
- HTML: https://affpapa.org/en/nevibecode/mcp/primamcp

## What it does

PRIMAMCP plugs into an assistant as an MCP server and returns German and European legal provisions: the full text, the revision date, and a direct link to the official source. Updates come daily from official sources, with hosting in Germany. Search works in three tiers and is hybrid, and every hit carries an exact citation.

You can connect it two ways. The remote endpoint `https://mcp.planitprima.com/mcp` speaks Streamable HTTP and takes either a Bearer token or OAuth 2.1. Or run it locally with `npx -y @planit-tech/primamcp`. The key is issued on the service site, and the plaintext shows up once at creation, so copy it into the client config right away. Ready-made rules and prompts exist for Cursor and Copilot Studio so the assistant reaches for the server on legal questions by itself.

Keep the token out of the repository: put it in an environment variable, or add the config file to `.gitignore`. Rate limits cap out between 15 and 300 requests per minute per seat depending on the plan, and a long research session can hit that ceiling. One OAuth subject counts as one seat, even when you sign in from two clients.

## Requirements
- Needs: Node.js (commands run via npx)
- Remote server: `https://mcp.planitprima.com/mcp`
- Environment variables: `PRIMAMCP_API_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

1. **Platform CLI**
```bash
claude mcp add primamcp -e PRIMAMCP_API_KEY=<PRIMAMCP_API_KEY> -- npx -y @planit-tech/primamcp
```
Replace <…> with your own values

2. **Platform CLI: remote server**
```bash
claude mcp add --transport http primamcp https://mcp.planitprima.com/mcp
```

### Codex

1. **Platform CLI: remote server**
```bash
codex mcp add primamcp --url https://mcp.planitprima.com/mcp
```

2. **Platform CLI**
```bash
codex mcp add primamcp --env PRIMAMCP_API_KEY=<PRIMAMCP_API_KEY> -- npx -y @planit-tech/primamcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "primamcp": {
            "url": "https://mcp.planitprima.com/mcp"
        }
    }
}
```
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "primamcp": {
            "command": "npx",
            "args": [
                "-y",
                "@planit-tech/primamcp"
            ],
            "env": {
                "PRIMAMCP_API_KEY": "<PRIMAMCP_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "primamcp": {
            "type": "http",
            "url": "https://mcp.planitprima.com/mcp"
        }
    }
}
```
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "primamcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@planit-tech/primamcp"
            ],
            "env": {
                "PRIMAMCP_API_KEY": "<PRIMAMCP_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

1. **Platform CLI: remote server**
```bash
gemini mcp add -t http primamcp https://mcp.planitprima.com/mcp
```

2. **Platform CLI**
```bash
gemini mcp add -e PRIMAMCP_API_KEY=<PRIMAMCP_API_KEY> primamcp npx -y @planit-tech/primamcp
```
Replace <…> with your own values

## When to use it
- check whether a paragraph the assistant named actually exists
- drop the current revision of a provision into a contract draft
- pull up a court ruling by case number and read its holding
- match data-processing code against GDPR requirements
- classify an AI system's risk under the EU regulation

## Example prompts
- What are the requirements for a damages claim under § 253 BGB? Cite the provisions.
- Check in PRIMAMCP whether this revision of Art. 9 DSGVO is still current and show the date.
- Find the ruling BGH VI ZR 175/22 and list the provisions it cites.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
