feat(ST-701): scrum4me-mcp repo skeleton

Initial repo with TypeScript strict, MCP SDK 1.29, Prisma 7,
zod and tsx. Stdio-transport bootstrap in src/index.ts boots
without crashing. Tools and prompts to be added in ST-705..ST-709.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-04-26 22:57:27 +02:00
commit ea00736a13
6 changed files with 3027 additions and 0 deletions

5
.env.example Normal file
View file

@ -0,0 +1,5 @@
# PostgreSQL connection string for the Scrum4Me database
DATABASE_URL="postgresql://user:pass@host:5432/dbname"
# API token from Scrum4Me → /settings/tokens
SCRUM4ME_TOKEN=""

14
.gitignore vendored Normal file
View file

@ -0,0 +1,14 @@
node_modules
dist
.env
.env.local
*.log
.DS_Store
# Generated Prisma Client
src/generated
prisma/generated
# Editor
.vscode
.idea

2919
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

43
package.json Normal file
View file

@ -0,0 +1,43 @@
{
"name": "scrum4me-mcp",
"version": "0.1.0",
"description": "MCP server for Scrum4Me — exposes dev-flow tools and prompts via the Model Context Protocol",
"type": "module",
"bin": {
"scrum4me-mcp": "./dist/index.js"
},
"files": [
"dist",
"prisma",
"README.md"
],
"scripts": {
"dev": "tsx src/index.ts",
"build": "tsc",
"start": "node dist/index.js",
"prisma:generate": "prisma generate",
"typecheck": "tsc --noEmit",
"sync-schema": "bash scripts/sync-schema.sh"
},
"keywords": [
"mcp",
"scrum4me",
"claude"
],
"author": "",
"license": "MIT",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.29.0",
"@prisma/adapter-pg": "^7.8.0",
"@prisma/client": "^7.8.0",
"pg": "^8.13.1",
"zod": "^4.0.0"
},
"devDependencies": {
"@types/node": "^22.10.0",
"@types/pg": "^8.11.10",
"prisma": "^7.8.0",
"tsx": "^4.19.0",
"typescript": "^5.7.0"
}
}

27
src/index.ts Normal file
View file

@ -0,0 +1,27 @@
#!/usr/bin/env node
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
const VERSION = '0.1.0'
async function main() {
const server = new McpServer(
{ name: 'scrum4me-mcp', version: VERSION },
{
instructions:
'Scrum4Me dev-flow tools: read product/sprint/story context, update tasks, log activity. ' +
'Always call get_claude_context before starting work to fetch the next story.',
},
)
// Tools and prompts will be registered here in ST-705..ST-709.
const transport = new StdioServerTransport()
await server.connect(transport)
console.error(`scrum4me-mcp ${VERSION} running on stdio`)
}
main().catch((err) => {
console.error('Fatal error in scrum4me-mcp:', err)
process.exit(1)
})

19
tsconfig.json Normal file
View file

@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"lib": ["ES2022"],
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"declaration": false,
"sourceMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist", "vendor"]
}