---
title: "StudioMeyer MCP: connect to public documentation"
description: "Anonymous documentation MCP with search and fetch: connection steps, a complete official SDK example and separate product authentication."
canonical: "https://studiomeyer.io/en/developers/mcp"
language: en
image: "https://studiomeyer.io/og-developers.png"
markdown_versions: ["https://studiomeyer.io/de/developers/mcp.md", "https://studiomeyer.io/en/developers/mcp.md", "https://studiomeyer.io/es/developers/mcp.md"]
publisher: "StudioMeyer, https://studiomeyer.io (llms.txt: https://studiomeyer.io/llms.txt)"
---

[Back to developer overview](https://studiomeyer.io/en/developers)

# StudioMeyer MCP: connect to public documentation

The documentation server at https://studiomeyer.io/api/docs/mcp provides public read-only documentation. It needs neither an API key nor OAuth and has no access to account, Memory or checkout data. Its tools cannot send contact details or book appointments.

## Connect over Streamable HTTP

Add https://studiomeyer.io/api/docs/mcp as a remote MCP URL in a client that supports Streamable HTTP. Leave credentials unset. The client handles initialization and protocol messages; the server is stateless and returns JSON responses.

The endpoint supports POST and OPTIONS. A plain GET request is not an MCP connection. After connecting, discover the available tools with tools/list.

- [Documentation MCP server card](https://studiomeyer.io/api/docs/mcp/server-card)

## Exactly two read-only tools

search accepts a non-empty query of up to 200 characters and an optional limit from 1 to 5, defaulting to 5. Its results array contains id, title, url and snippet. It searches only the fixed public StudioMeyer documents, not the web.

fetch accepts id: either the exact document ID or the unchanged canonical URL from a search result. It returns id, title, url and text. Other hosts, private paths and modified URLs are not fetched. An unknown document produces a tool result with isError: true.

Successful calls return structuredContent and the same data as JSON in a text block. Check isError before using the result.

search arguments

```json
{
  "query": "authentication",
  "limit": 5
}
```

fetch arguments

```json
{
  "id": "authentication"
}
```

## Complete example with the official MCP SDK

This example uses @modelcontextprotocol/sdk version 1.32.2, not a StudioMeyer SDK. Save the JavaScript code as docs-client.mjs in a separate example folder. Install the package there with the commands below and run the file with Node.js.

The client initializes the connection, lists tools, searches public authentication documentation and fetches the first result. finally closes the client even after an error. No product data or credentials are sent.

Install and run in the example folder

```bash
npm init -y
npm install @modelcontextprotocol/sdk@1.32.2
node docs-client.mjs
```

docs-client.mjs

```javascript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({
  name: "studiomeyer-docs-example",
  version: "1.0.0"
});
const transport = new StreamableHTTPClientTransport(
  new URL("https://studiomeyer.io/api/docs/mcp")
);

try {
  await client.connect(transport);
  const tools = await client.listTools();
  console.log(tools.tools.map((tool) => tool.name));

  const search = await client.callTool({
    name: "search",
    arguments: { query: "authentication", limit: 5 }
  });
  if (search.isError) throw new Error(JSON.stringify(search.content));
  const results = search.structuredContent?.results;
  if (!Array.isArray(results) || typeof results[0]?.id !== "string") {
    throw new Error("No public document found");
  }

  const document = await client.callTool({
    name: "fetch",
    arguments: { id: results[0].id }
  });
  if (document.isError) throw new Error(JSON.stringify(document.content));
  console.log(document.structuredContent ?? document.content);
} finally {
  await client.close();
}
```

- [Official SDK client documentation](https://github.com/modelcontextprotocol/typescript-sdk/blob/1.32.2/docs/client.md)

## Seven public documents from maintained sources

authentication maps to /auth.md: access methods and account boundaries. pricing maps to /pricing.md: published website and product prices from current pricing sources. developer-index maps to /developers/llms.txt: interfaces and further contracts.

integration-skill maps to /.well-known/agent-skills/studiomeyer-services/SKILL.md: the public integration guide. public-api maps to /api/v1/docs: public website API documentation as JSON. Content is generated from the same builders as the corresponding public documents.

public-api-guide maps to https://studiomeyer.io/en/developers/api.md and mcp-guide to https://studiomeyer.io/en/developers/mcp.md. These guides use the same DE/EN/ES content as the visible developer documentation; their canonical URLs in the MCP allowlist point to the English Markdown versions.

The server does not accept arbitrary URLs. A document ID or its exact canonical URL returns the existing public content, not general website search or private account content.

- [Authentication](https://studiomeyer.io/auth.md)
- [Current published prices](https://studiomeyer.io/pricing.md)
- [Developer index](https://studiomeyer.io/developers/llms.txt)
- [Public integration skill](https://studiomeyer.io/.well-known/agent-skills/studiomeyer-services/SKILL.md)
- [Website API documentation](https://studiomeyer.io/api/v1/docs)
- [API guide as Markdown](https://studiomeyer.io/en/developers/api.md)
- [MCP guide as Markdown](https://studiomeyer.io/en/developers/mcp.md)

## Product MCPs authenticate separately

Memory, CRM and GEO are separate product servers. The anonymous documentation connection does not sign you into them. Use the MCP catalog and each product server’s own metadata.

For a normal Memory MCP connection, the client uses OAuth 2.1 Authorization Code with PKCE (S256). The documented memory scope grants full access to the authenticated Memory account; separate read and write scopes are not implemented. Explain the scope before the user authorizes the connection.

Your own REST scripts can send the tenant API key as Authorization: Bearer, as described in the Memory contract. A website license key is not a Memory tenant key. Product tokens, API keys and portal cookies do not belong in the anonymous documentation MCP or public website API. On 401, follow the WWW-Authenticate challenge and the server’s own OAuth discovery.

- [MCP catalog with separate servers](https://studiomeyer.io/.well-known/mcp.json)
- [Authentication details](https://studiomeyer.io/auth.md)
- [Memory protected-resource metadata](https://memory.studiomeyer.io/.well-known/oauth-protected-resource/mcp)
- [Memory authorization-server metadata](https://memory.studiomeyer.io/.well-known/oauth-authorization-server)
- [Memory REST and MCP](https://studiomeyer.io/en/developers/memory)

## Discovery and further contracts

The dedicated server card describes the documentation server and its anonymous Streamable HTTP endpoint. It is separate from product cards and uses the experimental MCP Server Cards format. Read the current tool list from the server.

The machine-readable developer index, public agent instructions and MCP catalog link to the actual contracts. Use the API guide for website requests and the separate Memory documentation for your own memory access.

- [Documentation server card](https://studiomeyer.io/api/docs/mcp/server-card)
- [MCP discovery](https://studiomeyer.io/.well-known/mcp.json)
- [Machine-readable developer index](https://studiomeyer.io/developers/llms.txt)
- [Public agent instructions](https://studiomeyer.io/AGENTS.md)
- [Public website API](https://studiomeyer.io/en/developers/api)
- [GitHub organization](https://github.com/madetocreate)

## Sitemap

Every page of this site as Markdown: [sitemap](https://studiomeyer.io/sitemap.md). Curated entry point: [llms.txt](https://studiomeyer.io/llms.txt).
