Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 31 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,13 @@ This template provides:

## Getting Started

1. **Clone or use this template**
The easiest way to get started is using `degit`:

1. **Create a new project from this template**

```bash
git clone <your-repo-url>
cd mcp-typescript-template
npx degit nickytonline/mcp-typescript-template my-mcp-server
cd my-mcp-server
```

2. **Install dependencies**
Expand All @@ -41,6 +43,16 @@ This template provides:

The server will be available at `http://localhost:3000` for MCP connections.

### Alternative: Using GitHub Template

You can also click the "Use this template" button on GitHub to create a new repository, then clone it:

```bash
git clone <your-repo-url>
cd my-mcp-server
npm install
```

## Development

### Watch mode for development (with hot reloading)
Expand Down Expand Up @@ -83,6 +95,22 @@ npm run format
npm run format:check
```

## Testing Your MCP Server

You can test your MCP server using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector):

```bash
npx @modelcontextprotocol/inspector
```

This will launch a web interface that allows you to:
- Connect to your MCP server
- Test your tools interactively
- View request/response messages
- Debug your MCP implementation

Make sure your server is running (using `npm start` or `npm run dev`) before connecting with the inspector.

## Available Tools

The template includes one example tool:
Expand Down
2 changes: 1 addition & 1 deletion test-results.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"numTotalTestSuites":2,"numPassedTestSuites":2,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":4,"numPassedTests":4,"numFailedTests":0,"numPendingTests":0,"numTodoTests":0,"snapshot":{"added":0,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0,"didUpdate":false},"startTime":1753977365976,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should create a CallToolResult with correct structure","status":"passed","title":"should create a CallToolResult with correct structure","duration":0.927375000000012,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle mock data correctly","status":"passed","title":"should handle mock data correctly","duration":0.15808400000000233,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle null data","status":"passed","title":"should handle null data","duration":0.05737499999997908,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle undefined data gracefully by converting to null","status":"passed","title":"should handle undefined data gracefully by converting to null","duration":0.07670899999999392,"failureMessages":[],"meta":{}}],"startTime":1753977366165,"endTime":1753977366166.1582,"status":"passed","message":"","name":"/Users/nicktaylor/dev/oss/mcp-typescript-template/src/lib/utils.test.ts"}]}
{"numTotalTestSuites":2,"numPassedTestSuites":2,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":4,"numPassedTests":4,"numFailedTests":0,"numPendingTests":0,"numTodoTests":0,"snapshot":{"added":0,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0,"didUpdate":false},"startTime":1760581355543,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should create a CallToolResult with correct structure","status":"passed","title":"should create a CallToolResult with correct structure","duration":2.7596029999999985,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle mock data correctly","status":"passed","title":"should handle mock data correctly","duration":0.29587399999999775,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle null data","status":"passed","title":"should handle null data","duration":0.23338599999999587,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle undefined data gracefully by converting to null","status":"passed","title":"should handle undefined data gracefully by converting to null","duration":0.20286899999999264,"failureMessages":[],"meta":{}}],"startTime":1760581355808,"endTime":1760581355811.296,"status":"passed","message":"","name":"/home/runner/work/mcp-typescript-template/mcp-typescript-template/src/lib/utils.test.ts"}]}
Loading