diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index e5f6c21..dbfbf8a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -30,4 +30,4 @@ jobs: uses: softprops/action-gh-release@v3 with: generate_release_notes: true - files: dist/pcm-mcp.mcpb + files: dist/pcmstack.mcpb diff --git a/.lintstagedrc.json b/.lintstagedrc.json index 9961650..e6dd7e6 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,5 +1,5 @@ { - "*.json": ["biome check --write", "biome lint --write"], - "*.ts": ["biome check --write", "biome lint --write"], - "*.js": ["biome check --write", "biome lint --write"] + "*.json": ["biome check --write"], + "*.ts": ["biome check --write"], + "*.js": ["biome check --write"] } diff --git a/README.md b/README.md index 5b8fae4..3e73041 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- PCM MCP + PCMStack MCP Server

Pro Cycling Manager MCP Server

@@ -9,13 +9,13 @@

- npm version - license - node version + npm version + license + node version MCP compatible

-`pcm-mcp` is a [Model Context Protocol](https://modelcontextprotocol.io) server that lets AI assistants such as Claude Desktop, ChatGPT and Gemini query your [Pro Cycling Manager](https://www.cyanide-studio.com/) (PCM) databases. Ask about a cyclist's ratings, browse a team's roster, run SQL against the database, or generate a race startlist, all in plain language. +`@pcmstack/mcp` is a [Model Context Protocol](https://modelcontextprotocol.io) server that lets AI assistants such as Claude Desktop, ChatGPT and Gemini query your [Pro Cycling Manager](https://www.cyanide-studio.com/) (PCM) databases. Ask about a cyclist's ratings, browse a team's roster, run SQL against the database, or generate a race startlist, all in plain language. > [!IMPORTANT] > This server never modifies your existing files. PCM stores its data as binary `.cdb` files; each call re-reads the `.cdb` from disk and loads it into an **in-memory** SQLite database. Every read tool leaves the source untouched. The write tools, `pcm_update_database` and `pcm_update_cyclist_ratings`, serialize their changes to a **new** `.cdb` file (`outputPath`) and refuse to overwrite the input, so keep your original as a backup. @@ -51,7 +51,7 @@ That is why one tool speaks of saves and the rest speak of databases:
MCP Bundle (Claude Desktop, no terminal) -Download the latest `pcm-mcp.mcpb` from the [Releases page](https://github.com/PCMStack/mcp/releases) and open it with **Claude for macOS or Windows**. An installation dialog appears, no terminal required. +Download the latest `pcmstack.mcpb` from the [Releases page](https://github.com/PCMStack/mcp/releases) and open it with **Claude for macOS or Windows**. An installation dialog appears, no terminal required. > [!NOTE] > This method does not auto-update. To get a newer version, download and re-install the latest `.mcpb` from the Releases page. @@ -66,9 +66,9 @@ Add the following to your client's MCP configuration file (`claude_desktop_confi ```json { "mcpServers": { - "pcm-mcp": { + "pcmstack": { "command": "npx", - "args": ["-y", "pcm-mcp"] + "args": ["-y", "@pcmstack/mcp"] } } } @@ -126,7 +126,7 @@ npm run test:watch # vitest in watch mode npm run coverage # vitest with v8 coverage npm run lint # biome lint --write . (autofixes) npm run format # biome format --write . -npm run pack # produce dist/pcm-mcp.mcpb +npm run pack # produce dist/pcmstack.mcpb ``` To debug the server interactively with the [MCP Inspector](https://github.com/modelcontextprotocol/inspector): diff --git a/assets/icon.png b/assets/icon.png index 0b9902f..8dd5a83 100644 Binary files a/assets/icon.png and b/assets/icon.png differ diff --git a/manifest.json b/manifest.json index c1fe382..a25c924 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,7 @@ { "manifest_version": "0.3", - "name": "pcm-mcp-server", + "name": "pcmstack", + "display_name": "PCMStack", "version": "0.4.1", "description": "MCP server for querying and editing Pro Cycling Manager game databases", "long_description": "MCP server for querying and editing Pro Cycling Manager game databases. PCM stores its data as binary .cdb database files. Your own saves, but also the official releases and community updates. This server discovers your saves, and inspects and queries any .cdb via the MCP protocol, so AI assistants can explore it in a structured way. Write tools never modify the source: edits are always serialized to a new .cdb file, and existing files are never overwritten.", diff --git a/package-lock.json b/package-lock.json index a9b9170..dd8d862 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "pcm-mcp", + "name": "@pcmstack/mcp", "version": "0.4.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "pcm-mcp", + "name": "@pcmstack/mcp", "version": "0.4.1", "license": "MIT", "dependencies": { @@ -17,7 +17,7 @@ "zod": "^4.4.3" }, "bin": { - "pcm-mcp": "dist/index.js" + "pcmstack": "dist/index.js" }, "devDependencies": { "@biomejs/biome": "2.5.9", diff --git a/package.json b/package.json index c98fe89..08eea49 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,17 @@ { - "name": "pcm-mcp", + "name": "@pcmstack/mcp", "version": "0.4.1", "description": "MCP server for querying and editing Pro Cycling Manager game databases", "type": "module", "bin": { - "pcm-mcp": "dist/index.js" + "pcmstack": "dist/index.js" }, "files": [ "dist" ], + "publishConfig": { + "access": "public" + }, "scripts": { "build": "tsup", "dev": "tsup --watch", @@ -19,7 +22,7 @@ "test:watch": "vitest", "coverage": "vitest run --coverage", "prepare": "husky", - "pack": "mcpb pack . dist/pcm-mcp.mcpb", + "pack": "mcpb pack . dist/pcmstack.mcpb", "start": "node ./dist/index.js", "start:dev": "tsup --watch --onSuccess \"node ./dist/index.js\"" }, diff --git a/src/index.ts b/src/index.ts index 0611da4..d5a3e88 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,7 +9,7 @@ const { version, description } = JSON.parse( ) as { version: string; description: string }; const server = new McpServer({ - name: "pcm-mcp", + name: "pcmstack", version, description, }); @@ -19,7 +19,7 @@ registerTools(server); async function main() { const transport = new StdioServerTransport(); await server.connect(transport); - console.error("PCM MCP Server running on stdio"); + console.error("PCMStack MCP Server running on stdio"); } main().catch((error) => {