Skip to main content
Glama
JulianThorpe

mcp-availability-server

by JulianThorpe
README.md
# mcp-availability-server

A small [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server written in TypeScript. It exposes two tools that an MCP-capable client (such as Claude Desktop or Claude Code) can discover and call:

- **`check_availability`** — returns available appointment slots for a given date.
- **`format_call_summary`** — turns a caller, intent and next action into a tidy SMS-style summary.

The server communicates over stdio, the transport MCP clients use to launch and talk to a local server process. The tool logic is self-contained so the server runs anywhere with no API keys or external services.

## Why this exists

I build production AI systems that use tool-calling and orchestration (a conversational agent on the Anthropic API, and a phone voice agent on Telnyx). This repo is a clean, minimal example of authoring an MCP server: defining tools with typed input schemas, returning structured content, and serving them over the MCP stdio transport.

## Requirements

- Node.js 18 or later

## Install and build

```bash
npm install
npm run build
```

## Run

```bash
npm start
# or
node build/index.js
```

The server runs on stdio and logs `availability-server: MCP server running on stdio` to stderr.

## Use it with Claude Desktop

Add this to your Claude Desktop MCP config (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "availability": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-availability-server/build/index.js"]
    }
  }
}
```

Restart Claude Desktop, and the two tools will be available in conversation.

## Tools

### `check_availability`

| Input | Type | Description |
|-------|------|-------------|
| `date` | string (`YYYY-MM-DD`) | The date to check. Weekends return no slots. |

### `format_call_summary`

| Input | Type | Description |
|-------|------|-------------|
| `caller` | string | Caller name or number |
| `intent` | string | What the caller wanted |
| `next_action` | string | The agreed next step |

## License

MIT

TDQS

A3.5/5.0

Scored across 2 tools

Disambiguation5/5

The two tools serve entirely different purposes—one for checking appointment availability and one for formatting call summaries—so there is no ambiguity between them.

Naming Consistency5/5

Both tools use a clear verb_noun pattern with underscores (check_availability and format_call_summary), maintaining consistency.

Tool Count2/5

With only two tools covering disparate domains (availability and call summaries), the tool count is too low for coherent scope; each domain would benefit from additional related tools.

Completeness2/5

The tool surface is severely incomplete for both implied domains: for availability, CRUD operations are missing; for call summaries, creation and editing are absent, leaving significant gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues