From 58c0437dae97031af29321e6ff4b2e923e69d389 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Oct 2025 02:16:30 +0000 Subject: [PATCH 1/4] Initial plan From 1ec56cf8c02f38fc68e7f2302e7a695dfce5d080 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Oct 2025 02:19:15 +0000 Subject: [PATCH 2/4] docs: plan to update README with degit usage and MCP inspector info Co-authored-by: nickytonline <833231+nickytonline@users.noreply.github.com> --- test-results.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-results.json b/test-results.json index e95951d..e6f5ee6 100644 --- a/test-results.json +++ b/test-results.json @@ -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"}]} \ No newline at end of file +{"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":1760581121016,"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.430175999999989,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle mock data correctly","status":"passed","title":"should handle mock data correctly","duration":0.32095999999998526,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle null data","status":"passed","title":"should handle null data","duration":0.23275499999999738,"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.1688259999999957,"failureMessages":[],"meta":{}}],"startTime":1760581121270,"endTime":1760581121273.169,"status":"passed","message":"","name":"/home/runner/work/mcp-typescript-template/mcp-typescript-template/src/lib/utils.test.ts"}]} \ No newline at end of file From 617342cc38fea4f3055293761ef59690b9839332 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Oct 2025 02:22:02 +0000 Subject: [PATCH 3/4] docs: update README with degit usage and MCP inspector info Co-authored-by: nickytonline <833231+nickytonline@users.noreply.github.com> --- README.md | 34 +++++++++++++++++++++++++++++++--- test-results.json | 2 +- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 89d2643..bc4eb63 100644 --- a/README.md +++ b/README.md @@ -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 - cd mcp-typescript-template + npx degit nickytonline/mcp-typescript-template my-mcp-server + cd my-mcp-server ``` 2. **Install dependencies** @@ -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 +cd my-mcp-server +npm install +``` + ## Development ### Watch mode for development (with hot reloading) @@ -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: diff --git a/test-results.json b/test-results.json index e6f5ee6..0166e69 100644 --- a/test-results.json +++ b/test-results.json @@ -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":1760581121016,"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.430175999999989,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle mock data correctly","status":"passed","title":"should handle mock data correctly","duration":0.32095999999998526,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle null data","status":"passed","title":"should handle null data","duration":0.23275499999999738,"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.1688259999999957,"failureMessages":[],"meta":{}}],"startTime":1760581121270,"endTime":1760581121273.169,"status":"passed","message":"","name":"/home/runner/work/mcp-typescript-template/mcp-typescript-template/src/lib/utils.test.ts"}]} \ No newline at end of file +{"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":1760581238866,"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.4323200000000043,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle mock data correctly","status":"passed","title":"should handle mock data correctly","duration":0.2882290000000012,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle null data","status":"passed","title":"should handle null data","duration":0.2556989999999928,"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.16639099999997597,"failureMessages":[],"meta":{}}],"startTime":1760581239127,"endTime":1760581239130.2883,"status":"passed","message":"","name":"/home/runner/work/mcp-typescript-template/mcp-typescript-template/src/lib/utils.test.ts"}]} \ No newline at end of file From c091b003f0d81d29eba34b0c02adbb3be55d4617 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Oct 2025 02:23:15 +0000 Subject: [PATCH 4/4] docs: add degit usage and MCP Inspector instructions to README Co-authored-by: nickytonline <833231+nickytonline@users.noreply.github.com> --- test-results.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-results.json b/test-results.json index 0166e69..e5d3dd4 100644 --- a/test-results.json +++ b/test-results.json @@ -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":1760581238866,"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.4323200000000043,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle mock data correctly","status":"passed","title":"should handle mock data correctly","duration":0.2882290000000012,"failureMessages":[],"meta":{}},{"ancestorTitles":["createTextResult"],"fullName":"createTextResult should handle null data","status":"passed","title":"should handle null data","duration":0.2556989999999928,"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.16639099999997597,"failureMessages":[],"meta":{}}],"startTime":1760581239127,"endTime":1760581239130.2883,"status":"passed","message":"","name":"/home/runner/work/mcp-typescript-template/mcp-typescript-template/src/lib/utils.test.ts"}]} \ No newline at end of file +{"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"}]} \ No newline at end of file