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