Skip to main content
Glama
abhishekjkrsna

SWAPI MCP

README.md
# SWAPI MCP

A TypeScript-based Model Context Protocol (MCP) server that exposes Star Wars API data as MCP tools.

This project connects to the Star Wars API (SWAPI) and makes selected Star Wars information available through
MCP-compatible clients using stdio transport.

## Features

- MCP server built with TypeScript
- stdio-based MCP transport
- Fetches Star Wars data from SWAPI
- Tool schema validation with Zod
- Includes Vitest test setup
- Supports coverage reports

## Tech Stack

- TypeScript
- Node.js
- Model Context Protocol SDK
- Zod
- Vitest
- tsx

## Project Structure

text swapi-mcp/ 
├── src/ # Source code 
├── tests/ # Test files and mock data 
│ ├── api/ 
│ └── mock_data/ 
├── package.json 
├── package-lock.json 
├── tsconfig.json 
└── vitest.config.js


## Requirements

- Node.js 20 or newer
- npm

Some MCP-related dependencies require Node.js 20+, so using the latest LTS version is recommended.

## Installation

`npm install`

Clone the repository and install dependencies:

## Available Scripts

### Start the development server

`npm run start`

Runs the MCP server directly from TypeScript using `tsx`.

### Build the project

`npm run build`

Compiles TypeScript into JavaScript using the TypeScript compiler.

### Run tests

`npm run test`

When started, the server connects using stdio and can be used by MCP-compatible clients.

## Available Tools

### `get-list-of-star-wars-information`

Returns a comma-separated list of available Star Wars information categories from SWAPI, such as:

- people
- planets
- films
- species
- vehicles
- starships

### `get-information-of-star-wars-characters`

Returns Star Wars character information exposed by the project’s character tool.

## Example MCP Client Configuration

You can configure an MCP-compatible client to run this server with npm:

```json 
{ "mcpServers": { "swapi-mcp": { "command": "npm", "args": ["start"] } } }
```

If your client requires an absolute working directory, configure it like this:

```json
{ "mcpServers": { "swapi-mcp": { "command": "npm", "args": ["start"], "cwd": "/absolute/path/to/swapi-mcp" } } }
```

TDQS

B3.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: listing characters, listing information categories, and searching for a specific character. Though two tools involve characters, one explicitly returns a list while the other handles specific searches, creating clear separation.

Naming Consistency4/5

All names use a consistent lowercase-hyphenated style with action verbs, but the verbs vary (get, get, search) and the nouns are not uniform (characters, information, character). This is mostly consistent with minor deviations.

Tool Count3/5

With only 3 tools, the set is on the lower end for a Star Wars API server, which typically covers many resources. The count is within an acceptable range but feels minimal for the apparent scope of the SWAPI domain.

Completeness2/5

The server lacks tools to retrieve specific non-character resources such as films, planets, or species, despite listing these categories. This significant gap prevents agents from acting on the category information, limiting the server's usefulness.

Maintenance

ActivitySlowing
ResponsivenessNo issues