# Connect your agent over MCP

The Skmtc MCP server lets an agent look up APIs, read the documentation of
one operation and, with your sign-in, publish a schema. This page tells you
which address to use, how to add the server to four clients, and what each tool
does.

## The two endpoints [#the-two-endpoints]

| Endpoint                            | Use it to                                                 | Account             |
| ----------------------------------- | --------------------------------------------------------- | ------------------- |
| `https://mcp.skmtc.dev/mcp`         | Find and read public APIs, and ask the catalog a question | None                |
| `https://mcp.skmtc.dev/mcp/publish` | Do the same, and publish schemas and revisions            | Sign in with GitHub |

The public endpoint needs no account and no token. The `/mcp/publish` endpoint
answers `401` until the client signs in with the browser flow. It asks for the
`publish:schemas` and `offline_access` scopes and uses `https://skmtc.dev` as the authorization server.

## Add the server to your client [#add-the-server-to-your-client]

Each block adds the public endpoint. To publish from Claude Code, see
[Publish from Claude Code](#publish-from-claude-code).

### Claude Code [#claude-code]

```sh
claude mcp add --transport http skmtc https://mcp.skmtc.dev/mcp
```

Run `/mcp` in Claude Code, or `claude mcp list` in your terminal, to check the
connection. Add `--scope user` to make the server available in every project.
See the [Claude Code MCP documentation](https://code.claude.com/docs/en/mcp).

### Claude Desktop and claude.ai [#claude-desktop-and-claudeai]

Add a custom connector. A Free plan can add one custom connector. On a Team or
Enterprise plan, an owner adds it for the organization.

1. Go to **Customize > Connectors**.
2. Select **Add**, then **Add custom connector**.
3. Enter the name `skmtc` and the URL `https://mcp.skmtc.dev/mcp`.
4. Under **Authentication**, select **No sign in**, then select **Add**.

To use the connector in a chat, select **+**, then **Connectors**, and turn it
on. See [Get started with custom connectors using remote MCP](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp).

### Cursor [#cursor]

Add the server to `.cursor/mcp.json` in your project, or to `~/.cursor/mcp.json`
for every project:

```json
{
  "mcpServers": {
    "skmtc": {
      "url": "https://mcp.skmtc.dev/mcp"
    }
  }
}
```

See [Model Context Protocol in Cursor](https://cursor.com/docs/context/mcp).

### VS Code [#vs-code]

Add the server to `.vscode/mcp.json` in your workspace. VS Code uses the key
`servers`, not `mcpServers`:

```json
{
  "servers": {
    "skmtc": {
      "type": "http",
      "url": "https://mcp.skmtc.dev/mcp"
    }
  }
}
```

You can also run **MCP: Add Server** from the Command Palette and choose
**HTTP**. See [MCP configuration reference](https://code.visualstudio.com/docs/agents/reference/mcp-configuration).

## Publish from Claude Code [#publish-from-claude-code]

You can publish over MCP from Claude Code. Add the `/mcp/publish` endpoint
instead of the public one. If you already added the public endpoint under the
name `skmtc`, remove it first:

```sh
claude mcp remove skmtc
claude mcp add --transport http skmtc https://mcp.skmtc.dev/mcp/publish
```

Then run `/mcp`, select **skmtc** and sign in with GitHub. The agent must show
you the account, the API slug and the visibility before it publishes. For the
destination rules and the REST alternative, see
[Publish an API](/docs/getting-started/publish-api#publish-from-claude-code).

## Tools [#tools]

### Public tools [#public-tools]

Both endpoints serve these tools.

- `lookup_apis`: takes a list of service or API names, each with an optional hint. Returns a match, up to five candidates, or no match for each name. A match has the freshness pair, the operation count, the spec type and links.
- `search_apis`: takes a query and optional filters for owner, auth scheme, webhooks, pagination style, spec type and operation count. Returns ranked API cards.
- `get_api`: takes `owner/slug`. Returns the JSON record of one API: its sources, versions, latest content ref, and operation and schema counts.
- `list_operations`: takes `owner/slug` and an optional path prefix. Returns the operations of the API, or one node of its path tree, as `llms.txt`.
- `get_operation`: takes `owner/slug` and an operation key. Returns the documentation of that operation as markdown: parameters, request body, responses and recorded changes.
- `chat`: takes a message. It also takes an optional `conversation_id` and an optional scope of one API or one publisher. Answers from the public catalog, with citations and the pages it read.

### Publish tools [#publish-tools]

The `/mcp/publish` endpoint serves these tools. The `/mcp` endpoint serves them
only to a request that carries a Bearer token. They use your own sign-in.

- `publish_schema`: takes an owner, an API slug, a visibility, a confirmation and an OpenAPI document as text. Publishes the document to that API.
- `publish_revision`: takes the same input. Adds a revision to an API that exists. The visibility must match the API.
- `create_upload_url`: takes an owner, an API slug, a visibility, a confirmation, a mode and a local file path. Returns a single-use upload URL and a `curl` command. The file goes to the service and not through the model.
- `create_org`: takes a handle, a display name, a bio, an optional location and a confirmation. Creates an organization that you own. You cannot change the handle later.
- `update_org`: takes the handle of an organization that you own, a confirmation and the new display name, bio or location. Fields that you leave out keep their value. It cannot change the handle.
- `set_org_icon`: takes the handle of an organization that you own, a local image file path and a confirmation. Returns a single-use upload URL and a `curl` command. The image goes to the service and not through the model.

The organization tools need the `admin:org` scope, which is not part of the
first sign-in. When Claude first calls one of them, Claude Code asks you to
approve it.

For the confirmation and the upload URL flow, see
[Publish an API](/docs/getting-started/publish-api#publish-from-claude-code).

## Subscribe to changes [#subscribe-to-changes]

An MCP client can also subscribe to API changes. See [MCP events](/docs/mcp-events).
