---
schemaVersion: 1.1.0
title: "Hosted MCP server"
audience: developers
canonical: https://sprachpass.com/docs/api/hosted-mcp
markdown: https://sprachpass.com/docs/markdown/api/hosted-mcp
---

# Hosted MCP server

Connect an MCP client to the hosted Sprachpass server. Compare sign-in options, tool lists, limits and audio support, with a dated table of tested apps.

The hosted server lives at https://sprachpass.com/mcp. It speaks MCP over Streamable HTTP and needs no install. It offers the same tools as the local @sprachpass/mcp package, plus a practice card for apps that can show one.

> **Direct setup, not a directory listing.** You will not find Sprachpass in ChatGPT's list of plugins. Instead, you add it yourself by typing our web address: https://sprachpass.com/mcp.

## Sign-in options

- Learner sign-in (OAuth). The client gets a 401 with a resource_metadata challenge, reads https://sprachpass.com/.well-known/oauth-protected-resource/mcp, signs in at https://api.sprachpass.com and opens the Sprachpass consent page. The learner chooses Allow. Practice is saved to the learner's own History and counts against their daily limits.
- Business sign-in (OAuth). On the same consent page, a member of a Sprachpass API client chooses "A business account". The connection uses that client's question-bank tools and its minute limit.
- API key. Send Authorization: Bearer with an issued key, from your server or a local tool. Each tool call counts once on the developer client's minute limit, shared with REST, the CLI and local MCP.

Credentials come only from the Authorization header. Query strings and cookies are ignored. What a connection may do is fixed by its sign-in type, not by OAuth scopes. Learners disconnect in Connected apps on sprachpass.com, which ends the connection at once.

## Tools for each sign-in

A learner sign-in lists 8 tools: sprachpass_get_access, sprachpass_start_practice, sprachpass_get_practice, sprachpass_submit_answer, sprachpass_complete_practice, sprachpass_list_history, sprachpass_get_result, sprachpass_show_practice.

- sprachpass_get_access: your plan, the exams you can practise and how many runs you can still do today.
- sprachpass_start_practice: start a run of ten questions, or continue your unfinished run for that exam and skill.
- sprachpass_get_practice: read the run and its next question.
- sprachpass_submit_answer: save one answer and get the result, the right answer and the explanation.
- sprachpass_complete_practice: finish the run after ten answers and save the score to History.
- sprachpass_list_history: list your finished runs.
- sprachpass_get_result: read one finished run.
- sprachpass_show_practice: show the question as a card with a Play button, if your app can show cards.

An API key or a business sign-in lists 5 tools: sprachpass_get_catalog, sprachpass_list_questions, sprachpass_get_question, sprachpass_check_answer, sprachpass_get_access.

- sprachpass_get_catalog: levels, skills, parts and question counts for one exam board.
- sprachpass_list_questions: one small page of questions.
- sprachpass_get_question: one question with its options and answer format, without the answer.
- sprachpass_check_answer: check one answer; it saves nothing.
- sprachpass_get_access: what this connection may do and its limits.

Every call is checked against the sign-in first. A learner calling a question-bank tool, or a key calling a practice tool, gets the tool error insufficient_scope and no data. Tool results use one envelope: data, error, request_id, retry_after and rate_limit. Errors carry error.code and error.recovery.

## Limits

The server takes POST requests only and keeps no session. A request body can be at most 256 KB and a batch at most 10 messages. Each tool call stops after 20 seconds. A request sent from a web page is refused unless it comes from https://sprachpass.com, https://chatgpt.com, https://chat.openai.com, https://claude.ai.

- A learner sign-in has no minute limit. The learner's daily practice limits apply.
- An API key or business sign-in shares its developer client's minute limit. Wait for retry_after after rate_limit_exceeded.
- Server-side clients send no Origin header and are not affected by the web page check.

## Practice card and audio

For learner sign-ins the server also lists sprachpass_show_practice. It returns the current question with an MCP Apps card, ui://sprachpass/practice-card-v1.html, of type text/html;profile=mcp-app. The card loads audio and pictures only from https://media.sprachpass.com, starts audio only when the learner presses Play, and sends the learner's own choice with sprachpass_submit_answer.

Audio plays inside the Sprachpass card in ChatGPT on the web (we tested the Pro plan) and in the MCP Inspector developer tool. In other apps, you get a link to the audio and a link to the same run on sprachpass.com.

Apps that cannot show the card get the same question as text: the prompt, the options, the audio link marked audio/mpeg, the replay note and a link to the same run on sprachpass.com. Transcripts are never sent, before or after the answer.

> **Answers come from the learner.** Only the learner picks an answer. The assistant sends only that answer and never picks or guesses one. Once saved, an answer cannot be changed.

## Tested clients

Tested on 4 November 2026 in ChatGPT on the web (Pro plan, Chrome) and in MCP Inspector 2.13.0. Not tested: the ChatGPT phone and desktop apps, other ChatGPT plans, Claude, Cursor, Codex and Claude Code with a learner sign-in.

```text
Client          | ChatGPT on the web             | MCP Inspector 2.13.0 (browser)  | MCP Inspector 2.13.0 (command line)
Tested on       | 4 Nov 2026                     | 4 Nov 2026                      | 4 Nov 2026
Version         | web build f4c5b06756ba,        | 2.13.0                          | 2.13.0
                | Chrome 157                     |                                 |
Plan            | Pro                            | none needed                     | none needed
Transport       | Streamable HTTP                | Streamable HTTP, 2025-11-25     | Streamable HTTP
Sign-in         | learner (OAuth)                | learner (OAuth); business       | API key
                |                                | sign-in tested 1 Nov 2026       |
Tools listed    | 8: Read 5, Write 3             | 8 learner tools, or 5 with      | 5 tools
                |                                | a business sign-in              |
Practice card   | yes, after one "Try again"     | yes, first try (Apps tab)       | no card; text results
Audio           | plays in the card              | plays in the card; the Tools    | audio link only
                |                                | tab shows the link as text      |
Approval asked  | no, with ChatGPT's default     | no                              | no
per call        | "Allow low-risk" setting       |                                 |
Known limits    | card often fails to show the   | developer tool, not for         | none found
                | first time; see the ChatGPT    | learners                        |
                | guide                          |                                 |

Not tested: ChatGPT phone and desktop apps, other ChatGPT plans, other browsers,
Claude, Cursor, Codex and Claude Code with a learner sign-in.
```

## Connect with an API key

This MCP Inspector command was run against the hosted server. Keep the key in your environment, never in a file or chat.

```bash
npx -y @modelcontextprotocol/inspector --cli https://sprachpass.com/mcp --transport http \
  --header "Authorization: Bearer $SPRACHPASS_API_KEY" --method tools/list
```

If MCP Inspector has a saved OAuth sign-in for this address from an earlier session, it may try that first and fail with refresh_token_not_found. Run it with an empty storage folder, or remove the saved sign-in, then try again.

Other clients that support remote MCP servers with a bearer header should work the same way, but Codex, Claude Code and Cursor were not tested against the hosted server. For a tested local setup in those clients, use the CLI and MCP guide.

## Connect with a learner sign-in

Add https://sprachpass.com/mcp as a remote server with OAuth and no key. The client opens the Sprachpass consent page in the browser. In MCP Inspector, choose Streamable HTTP, enter the address and connect. For ChatGPT, follow the ChatGPT guide.

### Next steps

- [Agent quickstart](https://sprachpass.com/docs/api/agent-quickstart)
- [Practise in ChatGPT](https://sprachpass.com/docs/students/chatgpt)
- [CLI and MCP](https://sprachpass.com/docs/api/cli-and-mcp)
- [Rate limits](https://sprachpass.com/docs/api/rate-limits)
- [Errors](https://sprachpass.com/docs/api/errors)
