Skip to main content

README.md

# AtpMcp

An [MCP](https://modelcontextprotocol.io) server that exposes
[SystemOnTPTP](https://www.tptp.org/cgi-bin/SystemOnTPTP) theorem provers as
tools for Claude Code and other MCP clients. Built on
[AtpClient](https://hex.pm/packages/atp_client).

## Installation

Install the escript via Hex:

```bash
mix escript.install hex atp_mcp
```

This places the `atp_mcp` binary in `~/.mix/escripts/`. Make sure that directory is on your `PATH`:

```bash
export PATH="$HOME/.mix/escripts:$PATH"
```

## Configuration

Add the server to your project's `.mcp.json`:

```json
{
	"mcpServers": {
		"atp": {
			"command": "atp_mcp"
		}
	}
}
```

For Claude Code, also approve it in `.claude/settings.json`:

```json
{
	"enabledMcpjsonServers": ["atp"]
}
```

## Tools

### `list_provers`

Lists all theorem prover systems currently available on SystemOnTPTP.

### `run_prover`

Submits a TPTP-format problem to a single prover and returns the SZS status.

| Argument         | Type    | Required | Description                                           |
| ---------------- | ------- | -------- | ----------------------------------------------------- |
| `problem`        | string  | yes      | TPTP problem text                                     |
| `system_id`      | string  | yes      | Prover ID (from `list_provers`)                       |
| `time_limit_sec` | integer | no       | Time limit in seconds                                 |
| `raw`            | boolean | no       | Return raw prover output instead of normalized status |

### `compare_provers`

Runs the same problem against multiple provers simultaneously and returns all
results side by side.

| Argument         | Type     | Required | Description                      |
| ---------------- | -------- | -------- | -------------------------------- |
| `problem`        | string   | yes      | TPTP problem text                |
| `system_ids`     | string[] | yes      | List of prover IDs to compare    |
| `time_limit_sec` | integer  | no       | Time limit per prover in seconds |

## Example

Once the MCP server is active, you can ask Claude Code things like:

> "Which provers on SystemOnTPTP can prove this TPTP problem? Compare Vampire,
> E, and Satallax."

Claude will call `compare_provers` directly and report the SZS results.

## Configuration via `config.exs`

SystemOnTPTP connection settings are read from `AtpClient` configuration. To
override the default endpoint or cache behavior, add to your
`config/config.exs`:

```elixir
config :atp_client, :sotptp,
  url: "https://tptp.org/cgi-bin/SystemOnTPTPFormReply",
  default_time_limit_sec: 30
```

See the [AtpClient docs](https://hexdocs.pm/atp_client) for all available
options.

## License

MIT.