Serveur MCP

SpecPilot

dev.specpilot/specpilot
Outils développeur Public et accessible MCP 2025-11-25

Ce que fait ce MCP

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.
Schéma d’entrée
{'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.
Schéma d’entrée
{'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.'}}}}}
Ajouté
specpilot_generate_specs
17 September 2026 12:39
Ajouté
specpilot_next_questions
17 September 2026 12:39