MCP-Server

SpecPilot

dev.specpilot/specpilot
Entwicklertools Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Guides project specification onboarding and generates repository specification files, IDE rules, and slash commands.

specpilot_generate_specs
SpecPilot: generate the .specs/ files
Generates the complete SpecPilot .specs/ file set plus the matching IDE rules and slash-command files from a full answer set - identical to what the SpecPilot web chat produces for the same answers. Requires projectName and projectDescription. Returns the files to write and the steps to follow after writing them.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['answers'], 'properties': {'answers': {'type': 'object', 'properties': {'cicd': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CI/CD practices - automatically running tests and deploying on every change.'}, 'handle': {'type': 'string', 'description': 'The developer GitHub handle. Optional; it namespaces generated task IDs (e.g. CD-jsmith-001). Infer from git config or the origin remote.'}, 'apiStyle': {'type': 'string', 'description': 'API style - REST, GraphQL, gRPC or tRPC. Shapes how the architecture spec documents client-server communication.'}, 'ideAgent': {'type': 'string', 'description': 'The editor or AI IDE in use - claudecode, cursor, copilot, codex, windsurf. You are the IDE, so set this yourself; it decides which rules and config files are generated.'}, 'nonGoals': {'type': 'string', 'description': 'What this project explicitly will NOT do. Becomes the non-goals section of the specs.'}, 'teamSize': {'type': 'string', 'description': 'How many people are building this.'}, 'databases': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Database kinds in use - SQL, NoSQL, cache/key-value, vector. As many as apply.'}, 'otherApis': {'type': 'string', 'description': 'External APIs or services not covered by integrations.'}, 'platforms': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Platforms this should run on, e.g. web, ios, android, desktop. Infer from the dependency manifests and repo layout.'}, 'scaleTier': {'type': 'string', 'description': 'Expected scale of the system. Drives infrastructure and architecture choices.'}, 'userTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Who is going to use this system, e.g. end users, admins, internal staff.'}, 'compliance': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Compliance regimes that apply - GDPR, HIPAA, SOC 2. Pick by the actual situation (EU users, health data, payments), since getting it wrong has legal consequences.'}, 'isNewBuild': {'type': 'boolean', 'description': 'True for a greenfield project, false when adding onto an existing codebase. Decides which onboarding analysis is generated at the end.'}, 'activeUsers': {'type': 'string', 'description': 'Roughly how many active users are expected, as a range.'}, 'projectName': {'type': 'string', 'description': 'Short name for the project. Required by specpilot_generate_specs. Infer from the package manifest or the folder name.'}, 'authStrategy': {'type': 'string', 'description': 'Auth approach - a protocol built in-house (JWT/OAuth/SAML) or a managed service (Clerk, Auth0, Firebase). Feeds the security spec.'}, 'availability': {'type': 'string', 'description': 'Availability SLA target as a fraction of uptime; higher percentages allow far less downtime per year.'}, 'integrations': {'type': 'object', 'description': 'Third-party integrations keyed by category, e.g. { payments: ["stripe"] }. Only categories relevant to the project type apply.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'accessControl': {'type': 'string', 'description': 'The access control model. Drives the security spec auth/authorization section and the permission model.'}, 'buildTimeline': {'type': 'string', 'description': 'How long the build is expected to take.'}, 'realtimeTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Realtime transports - WebSockets, SSE, polling. Leave empty when nothing needs to update live.'}, 'systemPattern': {'type': 'string', 'description': 'Architecture pattern - monolith, modular monolith, or microservices.'}, 'customUserType': {'type': 'string', 'description': 'A user type in free text, when none of the userTypes options fit.'}, 'localDatabases': {'type': 'array', 'items': {'type': 'string'}, 'description': 'On-device stores backing offline support. Leave empty when offline is not needed.'}, 'offlineSupport': {'type': 'boolean', 'description': 'Whether this has to work offline. Set automatically when localDatabases is non-empty.'}, 'apiResponseTime': {'type': 'string', 'description': 'Target API response time.'}, 'projectCategory': {'anyOf': [{'enum': ['saas', 'api', 'mobile', 'cli', 'pipeline', 'ml', 'static', 'docs', 'extension', 'library', 'other'], 'type': 'string'}, {'type': 'null'}], 'description': 'Project archetype. Normally inferred from projectDescription when it exactly matches a returned chip label - send it only if you already know it.'}, 'realtimeEnabled': {'type': 'boolean', 'description': 'Whether anything updates live without a refresh. Set automatically when realtimeTypes is non-empty.'}, 'testingStrategy': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Testing approaches this project will use.'}, 'dataSyncStrategy': {'type': 'string', 'description': 'How conflicting local and server state gets reconciled once the device is back online.'}, 'languageOverride': {'type': 'string', 'description': 'Primary language, when it should override what SpecPilot infers from the repo.'}, 'securityConcerns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Security measures to plan for - encryption, rate limiting, audit logging.'}, 'deploymentTargets': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Where this ships - cloud hosting, a package registry, a browser store. The option list depends on the project type.'}, 'accessibilityNotes': {'type': 'string', 'description': 'Anything further on accessibility or constraints, in free text.'}, 'projectDescription': {'type': 'string', 'description': 'One line saying what the project is. Required by specpilot_generate_specs. Sending one of the chip labels returned by specpilot_next_questions verbatim is what infers projectCategory and gates every later question; free prose infers nothing.'}, 'technicalConstraints': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hard constraints - budget, existing infrastructure, legacy systems, a fixed deadline.'}, 'constraintDescription': {'type': 'string', 'description': 'More detail on whatever was named in technicalConstraints.'}, 'specialConsiderations': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Cross-cutting concerns that apply, such as accessibility, internationalisation or offline support.'}}}}}
specpilot_next_questions
SpecPilot: next onboarding questions
Returns the still-unanswered SpecPilot onboarding questions of the next incomplete step, gated by the answers supplied so far - questions that do not apply to this kind of project are omitted, and options are filtered, badged or flagged the same way the SpecPilot web chat would. Stateless: send every answer collected so far on each call. Procedure: (1) Decide whether the repository already has real source code and set `isNewBuild` accordingly - it changes which onboarding analysis is generated at the end. (2) Infer what the repo already answers rather than asking: `platforms` from the dependency manifests and layout, `languageOverride`, `ideAgent` (you are the IDE - claudecode, cursor, copilot, codex, windsurf), `handle` from git config or the origin remote, `projectName` from the package manifest or folder name, and `projectDescription` from the README only if it plainly says what the project is. (3) Call this tool with what you have; answer what the repo makes obvious and ask the developer the rest, a whole step per message. Send an empty value for an optional question the developer declines, or it will be asked again; send `todoSentinel` verbatim when they do not know yet. For `projectDescription`, sending one of the returned chip labels exactly is what infers `projectCategory` and gates every later question - free prose infers nothing. Confirm any pre-seeded value rather than accepting it silently. (4) Loop until `done` is true, then call specpilot_generate_specs and follow its `nextSteps` for where each file goes.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'answers': {'type': 'object', 'properties': {'cicd': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CI/CD practices - automatically running tests and deploying on every change.'}, 'handle': {'type': 'string', 'description': 'The developer GitHub handle. Optional; it namespaces generated task IDs (e.g. CD-jsmith-001). Infer from git config or the origin remote.'}, 'apiStyle': {'type': 'string', 'description': 'API style - REST, GraphQL, gRPC or tRPC. Shapes how the architecture spec documents client-server communication.'}, 'ideAgent': {'type': 'string', 'description': 'The editor or AI IDE in use - claudecode, cursor, copilot, codex, windsurf. You are the IDE, so set this yourself; it decides which rules and config files are generated.'}, 'nonGoals': {'type': 'string', 'description': 'What this project explicitly will NOT do. Becomes the non-goals section of the specs.'}, 'teamSize': {'type': 'string', 'description': 'How many people are building this.'}, 'databases': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Database kinds in use - SQL, NoSQL, cache/key-value, vector. As many as apply.'}, 'otherApis': {'type': 'string', 'description': 'External APIs or services not covered by integrations.'}, 'platforms': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Platforms this should run on, e.g. web, ios, android, desktop. Infer from the dependency manifests and repo layout.'}, 'scaleTier': {'type': 'string', 'description': 'Expected scale of the system. Drives infrastructure and architecture choices.'}, 'userTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Who is going to use this system, e.g. end users, admins, internal staff.'}, 'compliance': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Compliance regimes that apply - GDPR, HIPAA, SOC 2. Pick by the actual situation (EU users, health data, payments), since getting it wrong has legal consequences.'}, 'isNewBuild': {'type': 'boolean', 'description': 'True for a greenfield project, false when adding onto an existing codebase. Decides which onboarding analysis is generated at the end.'}, 'activeUsers': {'type': 'string', 'description': 'Roughly how many active users are expected, as a range.'}, 'projectName': {'type': 'string', 'description': 'Short name for the project. Required by specpilot_generate_specs. Infer from the package manifest or the folder name.'}, 'authStrategy': {'type': 'string', 'description': 'Auth approach - a protocol built in-house (JWT/OAuth/SAML) or a managed service (Clerk, Auth0, Firebase). Feeds the security spec.'}, 'availability': {'type': 'string', 'description': 'Availability SLA target as a fraction of uptime; higher percentages allow far less downtime per year.'}, 'integrations': {'type': 'object', 'description': 'Third-party integrations keyed by category, e.g. { payments: ["stripe"] }. Only categories relevant to the project type apply.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'accessControl': {'type': 'string', 'description': 'The access control model. Drives the security spec auth/authorization section and the permission model.'}, 'buildTimeline': {'type': 'string', 'description': 'How long the build is expected to take.'}, 'realtimeTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Realtime transports - WebSockets, SSE, polling. Leave empty when nothing needs to update live.'}, 'systemPattern': {'type': 'string', 'description': 'Architecture pattern - monolith, modular monolith, or microservices.'}, 'customUserType': {'type': 'string', 'description': 'A user type in free text, when none of the userTypes options fit.'}, 'localDatabases': {'type': 'array', 'items': {'type': 'string'}, 'description': 'On-device stores backing offline support. Leave empty when offline is not needed.'}, 'offlineSupport': {'type': 'boolean', 'description': 'Whether this has to work offline. Set automatically when localDatabases is non-empty.'}, 'apiResponseTime': {'type': 'string', 'description': 'Target API response time.'}, 'projectCategory': {'anyOf': [{'enum': ['saas', 'api', 'mobile', 'cli', 'pipeline', 'ml', 'static', 'docs', 'extension', 'library', 'other'], 'type': 'string'}, {'type': 'null'}], 'description': 'Project archetype. Normally inferred from projectDescription when it exactly matches a returned chip label - send it only if you already know it.'}, 'realtimeEnabled': {'type': 'boolean', 'description': 'Whether anything updates live without a refresh. Set automatically when realtimeTypes is non-empty.'}, 'testingStrategy': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Testing approaches this project will use.'}, 'dataSyncStrategy': {'type': 'string', 'description': 'How conflicting local and server state gets reconciled once the device is back online.'}, 'languageOverride': {'type': 'string', 'description': 'Primary language, when it should override what SpecPilot infers from the repo.'}, 'securityConcerns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Security measures to plan for - encryption, rate limiting, audit logging.'}, 'deploymentTargets': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Where this ships - cloud hosting, a package registry, a browser store. The option list depends on the project type.'}, 'accessibilityNotes': {'type': 'string', 'description': 'Anything further on accessibility or constraints, in free text.'}, 'projectDescription': {'type': 'string', 'description': 'One line saying what the project is. Required by specpilot_generate_specs. Sending one of the chip labels returned by specpilot_next_questions verbatim is what infers projectCategory and gates every later question; free prose infers nothing.'}, 'technicalConstraints': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hard constraints - budget, existing infrastructure, legacy systems, a fixed deadline.'}, 'constraintDescription': {'type': 'string', 'description': 'More detail on whatever was named in technicalConstraints.'}, 'specialConsiderations': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Cross-cutting concerns that apply, such as accessibility, internationalisation or offline support.'}}}}}
Hinzugefügt
specpilot_generate_specs
17. September 2026 12:39
Hinzugefügt
specpilot_next_questions
17. September 2026 12:39