Skip to main content
Glama
selfagency

teamdynamix-mcp

by selfagency
README.md
# 🎟️ TeamDynamix MCP Server (unofficial)

![NPM Version](https://img.shields.io/npm/v/@selfagency/teamdynamix-mcp) [![CI](https://github.com/selfagency/teamdynamix-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/selfagency/teamdynamix-mcp/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/selfagency/teamdynamix-mcp/graph/badge.svg?token=kYslnQkMFy)](https://codecov.io/gh/selfagency/teamdynamix-mcp)

A TypeScript [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server that exposes [TeamDynamix](https://www.teamdynamix.com/) ITSM capabilities as agent-callable tools. Designed for AI agents and MCP clients that need structured, safety-gated access to TeamDynamix operations.

## Features

- **11 domain gateway tools** that route validated actions across discovery,
  tickets, relationships, KB, assets, CMDB, people, services, projects,
  time, and reference data
- **Safe by default**: write, delete, and admin tools disabled until
  explicitly opted in; destructive operations require `confirm: true`
- **Two auth modes**: standard (username/password) and admin (BEID/WebServicesKey)
- **Covers 207 API endpoints** across all TeamDynamix domains, verified against the SDK route manifest
- **Rate-limit aware**: SDK built-in retry with exponential backoff on 429 and 5xx responses
- **Zod-validated inputs**: schema enforcement before any API call
- **Agent skill and prompt included**: ready-to-use skill definition for
  GitHub Copilot and compatible agents

## MCP Registry

This server is published to the [MCP Registry](https://modelcontextprotocol.io/) as `io.github.selfagency/teamdynamix-mcp`.

- **Registry name**: `io.github.selfagency/teamdynamix-mcp`
- **Install via registry**: `mcp-install io.github.selfagency/teamdynamix-mcp` (when available)
- **Manual install**: Use npm package `@selfagency/teamdynamix-mcp` as shown below

## Quick start (developer setup)

This quick start is for contributors running the server from source in this
repository. If you are a regular MCP client user, skip to
[MCP client configuration](#mcp-client-configuration) and use the `npx`
command examples.

```sh
# 1. Clone the repository
git clone https://github.com/selfagency/teamdynamix-mcp.git
cd teamdynamix-mcp

# 2. Install dependencies
pnpm install

# 3. Configure environment
cp .env.example .env
# Edit .env with your TeamDynamix credentials and base URL

# 4. Start the development server
pnpm dev
```

### Minimum required environment variables

```sh
TEAMDYNAMIX_BASE_URL=https://your-tenant.teamdynamix.com/TDWebApi
TEAMDYNAMIX_AUTH_MODE=standard          # or: admin
TEAMDYNAMIX_USERNAME=you@example.com    # standard mode
TEAMDYNAMIX_PASSWORD=your-password      # standard mode

# Optional: default application IDs (used when app_id is omitted in tool calls)
TEAMDYNAMIX_DEFAULT_TICKET_APP_ID=12345
TEAMDYNAMIX_DEFAULT_ASSET_APP_ID=23456
TEAMDYNAMIX_DEFAULT_KB_APP_ID=34567
```

For admin mode, use `TEAMDYNAMIX_BEID` and `TEAMDYNAMIX_WEB_SERVICES_KEY` instead.

## MCP client configuration

> **Security notice:** Values shown above are placeholders. **Never commit real credentials to source control.**
> Inject secrets at runtime via a `.env` file (excluded by `.gitignore`), CI/CD secrets, or a secret manager.

### VS Code (`.vscode/mcp.json`)

```json
{
  "servers": {
    "teamdynamix": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@selfagency/teamdynamix-mcp"],
      "env": {
        "TEAMDYNAMIX_BASE_URL": "https://your-tenant.teamdynamix.com/TDWebApi",
        "TEAMDYNAMIX_AUTH_MODE": "standard",
        "TEAMDYNAMIX_USERNAME": "you@example.com",
        "TEAMDYNAMIX_PASSWORD": "your-password"
      }
    }
  }
}
```

### Claude Desktop (`claude_desktop_config.json`)

```json
{
  "mcpServers": {
    "teamdynamix": {
      "command": "npx",
      "args": ["-y", "@selfagency/teamdynamix-mcp"],
      "env": {
        "TEAMDYNAMIX_BASE_URL": "https://your-tenant.teamdynamix.com/TDWebApi",
        "TEAMDYNAMIX_AUTH_MODE": "standard",
        "TEAMDYNAMIX_USERNAME": "you@example.com",
        "TEAMDYNAMIX_PASSWORD": "your-password"
      }
    }
  }
}
```

### Production (built bundle)

```sh
pnpm build   # outputs to dist/
```

```json
{
  "command": "npx",
  "args": ["-y", "@selfagency/teamdynamix-mcp"]
}
```

### Verify connectivity

After connecting your MCP client, call `teamdynamix_discovery` with:

- `action: "server_status"`
- `payload: {}`
- `response_format: "json"`

A successful response shows `status.configured: true`.

## Domain gateway tools

Each gateway tool accepts:

- `action`: domain-specific operation name
- `payload`: object for that action’s parameters
- `response_format`: `"markdown"` or `"json"`

| Domain               | Gateway tool                       |
| -------------------- | ---------------------------------- |
| Discovery            | `teamdynamix_discovery`            |
| Tickets              | `teamdynamix_tickets`              |
| Ticket relationships | `teamdynamix_ticket_relationships` |
| Knowledge Base       | `teamdynamix_knowledge_base`       |
| Assets               | `teamdynamix_assets`               |
| CMDB                 | `teamdynamix_cmdb`                 |
| People               | `teamdynamix_people`               |
| Services             | `teamdynamix_services`             |
| Projects             | `teamdynamix_projects`             |
| Time                 | `teamdynamix_time`                 |
| Reference data       | `teamdynamix_reference_data`       |

† Requires `confirm: true` in addition to write tools being enabled.

All write/mutating actions require `TEAMDYNAMIX_ENABLE_WRITE_TOOLS=true`.

## Safety defaults

| Flag                              | Default | Effect when `true`                                        |
| --------------------------------- | ------- | --------------------------------------------------------- |
| `TEAMDYNAMIX_ENABLE_WRITE_TOOLS`  | `false` | Enables all create/update/comment/mutation tools          |
| `TEAMDYNAMIX_ENABLE_DELETE_TOOLS` | `false` | Enables asset, CI, service, and service category deletion |
| `TEAMDYNAMIX_ENABLE_ADMIN_TOOLS`  | `false` | Enables admin-scope operations                            |

Destructive operations additionally require `confirm: true` in the
tool call regardless of the flag state.

## Agent skill

This repository ships a GitHub Copilot-compatible skill definition:

- **Skill**: [`skills/teamdynamix/SKILL.md`](skills/teamdynamix/SKILL.md)
  — ID-first workflow patterns, safety branching rules, runbooks,
  gotchas, and tool catalog
- **Agent prompt**:
  [`prompts/teamdynamix-agent.prompt.md`](prompts/teamdynamix-agent.prompt.md)
  — system prompt for agent mode with TeamDynamix context

Install the skill via your Copilot skill configuration
(see `skills/teamdynamix/SKILL.md` for full details).

## Documentation

| Section                                         | Purpose                                                      |
| ----------------------------------------------- | ------------------------------------------------------------ |
| [Tutorials](docs/tutorials/index.md)            | Step-by-step setup and first workflows                       |
| [How-to guides](docs/how-to/index.md)           | Task-oriented recipes for real operations                    |
| [Reference](docs/reference/index.md)            | Exhaustive tool catalog, configuration, safety model, errors |
| [Explanation](docs/explanation/index.md)        | Architecture, auth model, safety rationale, rate limiting    |
| [Development](docs/development/architecture.md) | Architecture, contributing, testing                          |

## Development

```sh
pnpm typecheck   # TypeScript strict checks
pnpm lint        # oxlint
pnpm test        # vitest (200+ tests, 90%+ coverage)
pnpm build       # tsup → dist/
```

## License

MIT © [The Self Agency LLC](https://self.agency)

Maintenance

ActivityMaintained
ResponsivenessNo issues