specrails-desktop 2.16.0 → 2.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/dist/assets/{ActivityFeedPage-C_clKk8d.js → ActivityFeedPage-BLDMBgwL.js} +1 -1
- package/client/dist/assets/AgentsPage-CFaIiyAA.js +86 -0
- package/client/dist/assets/{AnalyticsPage-DZkVU3yd.js → AnalyticsPage-DY8ECq2R.js} +1 -1
- package/client/dist/assets/{BarChart-Dq1h8eYR.js → BarChart-ouivqe5L.js} +2 -2
- package/client/dist/assets/CodePage-DAFtRafz.js +2 -0
- package/client/dist/assets/{DesktopAnalyticsPage-CYhXhJoQ.js → DesktopAnalyticsPage-DIMhuuv0.js} +1 -1
- package/client/dist/assets/{DocsDialog-CS3Syf61.js → DocsDialog-DBYhv3SM.js} +2 -2
- package/client/dist/assets/{DocsPage-l3ZcTO2E.js → DocsPage-DeLRn8W_.js} +2 -2
- package/client/dist/assets/{ExportDropdown-DdB2ncYh.js → ExportDropdown-2XwQ08sz.js} +1 -1
- package/client/dist/assets/{IntegrationsPage-CJ_Om1zu.js → IntegrationsPage-DB-a4FDV.js} +3 -3
- package/client/dist/assets/JobDetailPage-C3lljMiV.js +16 -0
- package/client/dist/assets/JobsPage-CzquwJ6G.js +1 -0
- package/client/dist/assets/LoopBuilderPage-TkoalfW5.js +7 -0
- package/client/dist/assets/LoopsPage-ypooVAQ5.js +1 -0
- package/client/dist/assets/{agents-CQlu1nOm.js → agents-4fnKlwcG.js} +1 -1
- package/client/dist/assets/{agents-DcoUUFZl.js → agents-B-rVIhuw.js} +1 -1
- package/client/dist/assets/{agents-DVYpVGur.js → agents-BRUz6RJs.js} +1 -1
- package/client/dist/assets/{agents-DCX9D3-Q.js → agents-CZQvKDIb.js} +1 -1
- package/client/dist/assets/{agents-BYjUOrLD.js → agents-CuRY-Zg_.js} +1 -1
- package/client/dist/assets/{agents-Jc-CjBDB.js → agents-D7nWnLg6.js} +1 -1
- package/client/dist/assets/{agents-CIhRSOna.js → agents-DzhSlNZd.js} +1 -1
- package/client/dist/assets/{agents-1lhqEcXH.js → agents-E-42N3b1.js} +1 -1
- package/client/dist/assets/{cssMode-DSHXamUH.js → cssMode-BijCvCxs.js} +1 -1
- package/client/dist/assets/{dist-js-Ele_sHO7.js → dist-js-D7m9--SN.js} +1 -1
- package/client/dist/assets/{dist-js-D27I-bfi.js → dist-js-nZhsq1qo.js} +1 -1
- package/client/dist/assets/{editor.main-Cd8qBRAT.js → editor.main-DMIcqwXb.js} +2 -2
- package/client/dist/assets/{freemarker2-CkEKTBm2.js → freemarker2-CP2AizpZ.js} +1 -1
- package/client/dist/assets/{handlebars-BRGx0JpL.js → handlebars-8ElanPOm.js} +1 -1
- package/client/dist/assets/{html-BfRIaGgN.js → html-Mu3b73tG.js} +1 -1
- package/client/dist/assets/{htmlMode-BTpSnsDE.js → htmlMode-tHprGCEv.js} +1 -1
- package/client/dist/assets/index-CDEQ4aU_.js +144 -0
- package/client/dist/assets/{javascript-DMmE2kKN.js → javascript-DlG0apUe.js} +1 -1
- package/client/dist/assets/{jsonMode-hYuaUleY.js → jsonMode-Cr0T4SXO.js} +1 -1
- package/client/dist/assets/{lib-qdRfWwE1.js → lib-Bu76JzdB.js} +2 -2
- package/client/dist/assets/{liquid-C-VbuTr7.js → liquid-QgTgbClC.js} +1 -1
- package/client/dist/assets/{lspLanguageFeatures-BALx-vjn.js → lspLanguageFeatures-D-BxkRza.js} +1 -1
- package/client/dist/assets/mcp-BSCAtU6Y.js +1 -0
- package/client/dist/assets/mcp-Cb6fUaFJ.js +1 -0
- package/client/dist/assets/mcp-CyP0quZ7.js +1 -0
- package/client/dist/assets/mcp-D-zQCO5E.js +1 -0
- package/client/dist/assets/mcp-DCTNWpfB.js +1 -0
- package/client/dist/assets/mcp-DEFGJ1OJ.js +1 -0
- package/client/dist/assets/mcp-DFG9OEXM.js +1 -0
- package/client/dist/assets/mcp-DyERgHA2.js +1 -0
- package/client/dist/assets/{mdx-Cs8MNCzn.js → mdx-B2QTaeRe.js} +1 -1
- package/client/dist/assets/{monaco.contribution-CIvCAJs4.js → monaco.contribution-CkdGfXCC.js} +2 -2
- package/client/dist/assets/{python-CGShLxuI.js → python-BlF0qnMQ.js} +1 -1
- package/client/dist/assets/{razor-CvOBQGd5.js → razor--3PSy3lb.js} +1 -1
- package/client/dist/assets/setup-BiQ7ut8d.js +1 -0
- package/client/dist/assets/setup-BxvjG5Xp.js +1 -0
- package/client/dist/assets/setup-CQ-F6Ciq.js +1 -0
- package/client/dist/assets/setup-D2JlpJEz.js +1 -0
- package/client/dist/assets/setup-DG1R6J6o.js +1 -0
- package/client/dist/assets/setup-DuFJZJsm.js +1 -0
- package/client/dist/assets/setup-DyJszDqm.js +1 -0
- package/client/dist/assets/setup-Ynw19V8w.js +1 -0
- package/client/dist/assets/{tsMode-04uOpiiP.js → tsMode-CHfsvcOI.js} +1 -1
- package/client/dist/assets/{typescript-CX0CwyIZ.js → typescript-Bjxf6BOp.js} +1 -1
- package/client/dist/assets/{upload-DPG87J4t.js → upload-x42OZJr2.js} +1 -1
- package/client/dist/assets/{value-BRVOAvhY.js → value-fEDhg5Bd.js} +1 -1
- package/client/dist/assets/{workers-yr2u4c3C.js → workers-CAAvSda9.js} +1 -1
- package/client/dist/assets/{xml-C0OFlt5X.js → xml-iYCSJ4oL.js} +1 -1
- package/client/dist/assets/{yaml-DgabaPs5.js → yaml-DtO-_yDY.js} +1 -1
- package/client/dist/index.html +10 -9
- package/docs/README.md +2 -0
- package/docs/guide/de/integrations/5-mcp-server.md +74 -0
- package/docs/guide/en/integrations/5-mcp-server.md +74 -0
- package/docs/guide/es/integrations/5-mcp-server.md +74 -0
- package/docs/guide/fr/integrations/5-mcp-server.md +74 -0
- package/docs/guide/it/integrations/5-mcp-server.md +74 -0
- package/docs/guide/ja/integrations/5-mcp-server.md +74 -0
- package/docs/guide/pt/integrations/5-mcp-server.md +74 -0
- package/docs/guide/zh/integrations/5-mcp-server.md +74 -0
- package/docs/mcp.md +249 -0
- package/package.json +8 -5
- package/server/dist/index.js +30 -0
- package/server/dist/mcp/guide.js +82 -0
- package/server/dist/mcp/index.js +21 -0
- package/server/dist/mcp/mcp-admin-router.js +71 -0
- package/server/dist/mcp/mcp-server.js +143 -0
- package/server/dist/mcp/mcp-tiers.js +48 -0
- package/server/dist/mcp/mcp-token.js +119 -0
- package/server/dist/mcp/resources.js +24 -0
- package/server/dist/mcp/tools/agents.js +319 -0
- package/server/dist/mcp/tools/analytics.js +168 -0
- package/server/dist/mcp/tools/app-settings.js +81 -0
- package/server/dist/mcp/tools/catalog.js +45 -0
- package/server/dist/mcp/tools/chat.js +147 -0
- package/server/dist/mcp/tools/code.js +145 -0
- package/server/dist/mcp/tools/jira.js +222 -0
- package/server/dist/mcp/tools/jobs.js +258 -0
- package/server/dist/mcp/tools/loops.js +229 -0
- package/server/dist/mcp/tools/meta.js +96 -0
- package/server/dist/mcp/tools/plugins.js +83 -0
- package/server/dist/mcp/tools/projects.js +62 -0
- package/server/dist/mcp/tools/rails.js +181 -0
- package/server/dist/mcp/tools/setup.js +187 -0
- package/server/dist/mcp/tools/specs.js +327 -0
- package/server/dist/mcp/tools/types.js +137 -0
- package/server/dist/mcp/tools/watch.js +93 -0
- package/server/dist/mobile/mobile-event-bus.js +2 -0
- package/server/dist/project-router-tickets.js +2 -2
- package/server/dist/rails-router.js +5 -0
- package/client/dist/assets/AgentsPage-jcPUtPhP.js +0 -86
- package/client/dist/assets/CodePage-BcbZT88K.js +0 -2
- package/client/dist/assets/JobDetailPage-D5Cxw0md.js +0 -16
- package/client/dist/assets/JobsPage-3v_iX83r.js +0 -1
- package/client/dist/assets/LoopBuilderPage-4s_adZy5.js +0 -7
- package/client/dist/assets/LoopsPage-DA94-o0j.js +0 -1
- package/client/dist/assets/index-meTWPBzY.js +0 -144
- package/client/dist/assets/setup-BOmQ4vh2.js +0 -1
- package/client/dist/assets/setup-BwO2-kuK.js +0 -1
- package/client/dist/assets/setup-CUTNWz-0.js +0 -1
- package/client/dist/assets/setup-Cf3hjChU.js +0 -1
- package/client/dist/assets/setup-CsuXrbJ2.js +0 -1
- package/client/dist/assets/setup-Df4cJOqu.js +0 -1
- package/client/dist/assets/setup-Do0fWx6W.js +0 -1
- package/client/dist/assets/setup-GlkDhBlJ.js +0 -1
- /package/client/dist/assets/{abap-CK68cr9-.js → abap-BFJA_Joo.js} +0 -0
- /package/client/dist/assets/{activity-D4dhNEwO.js → activity-BXBMi28x.js} +0 -0
- /package/client/dist/assets/{activity-usnNa7FX.js → activity-By6I70Ws.js} +0 -0
- /package/client/dist/assets/{activity-BbNkUmW4.js → activity-CfedQaof.js} +0 -0
- /package/client/dist/assets/{activity-B2MvEH54.js → activity-D62CDlQz.js} +0 -0
- /package/client/dist/assets/{activity-DHjfmAyT.js → activity-DAFuSwnt.js} +0 -0
- /package/client/dist/assets/{activity-C7VdmeGb.js → activity-Did0FnrH.js} +0 -0
- /package/client/dist/assets/{activity-Di2f50_Z.js → activity-oLgwaVyt.js} +0 -0
- /package/client/dist/assets/{addon-image-biWX2UUm.js → addon-image-bPlduuUZ.js} +0 -0
- /package/client/dist/assets/{addon-ligatures-D4EiDb5r.js → addon-ligatures-BexpF7xb.js} +0 -0
- /package/client/dist/assets/{addon-webgl-CDCIZQ03.js → addon-webgl-Zy4IOieH.js} +0 -0
- /package/client/dist/assets/{addspec-BxMn39wn.js → addspec-B2fTENuq.js} +0 -0
- /package/client/dist/assets/{addspec-DAveBiCE.js → addspec-BmggyuCD.js} +0 -0
- /package/client/dist/assets/{addspec-1HEtmLv1.js → addspec-CFsLeQKV.js} +0 -0
- /package/client/dist/assets/{addspec-DfuR6EAl.js → addspec-CkHI5c5H.js} +0 -0
- /package/client/dist/assets/{addspec-CO1xv6BL.js → addspec-Cvm06hGe.js} +0 -0
- /package/client/dist/assets/{addspec-IozoiiGs.js → addspec-DwoLTocx.js} +0 -0
- /package/client/dist/assets/{addspec-CNyAUGz_.js → addspec-gthH-H1g.js} +0 -0
- /package/client/dist/assets/{agentstudio-Q0Sq_jTg.js → agentstudio-BtASTJl7.js} +0 -0
- /package/client/dist/assets/{agentstudio-9NbsoGXk.js → agentstudio-CIe9C892.js} +0 -0
- /package/client/dist/assets/{agentstudio-B-jQgYV-.js → agentstudio-CYGk-jjo.js} +0 -0
- /package/client/dist/assets/{agentstudio-Bwa72b1S.js → agentstudio-CwiS3BTp.js} +0 -0
- /package/client/dist/assets/{agentstudio-B1y0JWY-.js → agentstudio-D0bQBWpI.js} +0 -0
- /package/client/dist/assets/{agentstudio-DCyDW8sy.js → agentstudio-Dq-bZrI3.js} +0 -0
- /package/client/dist/assets/{agentstudio-1E-bag77.js → agentstudio-n0pmwz2I.js} +0 -0
- /package/client/dist/assets/{aiedit-qTGI_PGs.js → aiedit-1Z-UYKFb.js} +0 -0
- /package/client/dist/assets/{aiedit-CGxeml8D.js → aiedit-BAJM9Cch.js} +0 -0
- /package/client/dist/assets/{aiedit-CfBNanHE.js → aiedit-CYnsp1Iv.js} +0 -0
- /package/client/dist/assets/{aiedit-CvSspQmE.js → aiedit-CZBZAyeK.js} +0 -0
- /package/client/dist/assets/{aiedit-kAU7KADg.js → aiedit-CunYxmW0.js} +0 -0
- /package/client/dist/assets/{aiedit-DUpe7NxI.js → aiedit-s1T1EMK8.js} +0 -0
- /package/client/dist/assets/{aiedit-DSLtsYIu.js → aiedit-uIDh2tlc.js} +0 -0
- /package/client/dist/assets/{analytics-DBGO8B6-.js → analytics-B95FiMuD.js} +0 -0
- /package/client/dist/assets/{analytics-CgEkAUiP.js → analytics-DPIkvuTS.js} +0 -0
- /package/client/dist/assets/{analytics-DDqve9Ma.js → analytics-DPmCEzvJ.js} +0 -0
- /package/client/dist/assets/{analytics-D1ElChhs.js → analytics-DRexho82.js} +0 -0
- /package/client/dist/assets/{analytics-DEsEAJZL.js → analytics-DVFNjjAv.js} +0 -0
- /package/client/dist/assets/{analytics-BDlELxc7.js → analytics-DZKGAUdm.js} +0 -0
- /package/client/dist/assets/{analytics-CQqu1yE5.js → analytics-g9ASAR_r.js} +0 -0
- /package/client/dist/assets/{apex-BHHyAVNb.js → apex-C1f-z6NO.js} +0 -0
- /package/client/dist/assets/{atom-one-dark-DrWoEEbZ.js → atom-one-dark-CT4DolNR.js} +0 -0
- /package/client/dist/assets/{attachments-3CuBBRFu.js → attachments--jr2QLGv.js} +0 -0
- /package/client/dist/assets/{attachments-pW3zm9nu.js → attachments-BgqfeoOx.js} +0 -0
- /package/client/dist/assets/{attachments-BNgH6Tcu.js → attachments-Bj3HHTXV.js} +0 -0
- /package/client/dist/assets/{attachments-D5fVsMgb.js → attachments-C3skjFyH.js} +0 -0
- /package/client/dist/assets/{attachments-UJtEq892.js → attachments-CnPS8YWu.js} +0 -0
- /package/client/dist/assets/{attachments-CppM7de8.js → attachments-DejzxE0C.js} +0 -0
- /package/client/dist/assets/{attachments-BLqqPGyy.js → attachments-FFb2xHc_.js} +0 -0
- /package/client/dist/assets/{azcli-C56lfIEP.js → azcli-Dr0WBJTP.js} +0 -0
- /package/client/dist/assets/{bat-BLamSaf-.js → bat-BKG3k49W.js} +0 -0
- /package/client/dist/assets/{bicep-lrOcEItS.js → bicep-DXs2wTcS.js} +0 -0
- /package/client/dist/assets/{browser-C91MQBxx.js → browser-BS9t1qMc.js} +0 -0
- /package/client/dist/assets/{browser-B7i7Ysc8.js → browser-BpMo-amf.js} +0 -0
- /package/client/dist/assets/{browser-DwE289IS.js → browser-CsC3NOZ-.js} +0 -0
- /package/client/dist/assets/{browser-C__Vz7KR.js → browser-DS6xnywt.js} +0 -0
- /package/client/dist/assets/{browser-DhwTc0ry.js → browser-Dm6F9bqQ.js} +0 -0
- /package/client/dist/assets/{browser-EFmPpkvO.js → browser-Dm_Of27q.js} +0 -0
- /package/client/dist/assets/{browser-BVQgd1_1.js → browser-U3iouSXn.js} +0 -0
- /package/client/dist/assets/{cameligo-BK_p0bgU.js → cameligo-Detknuxp.js} +0 -0
- /package/client/dist/assets/{chat-PVakYp92.js → chat-B2tWTbZL.js} +0 -0
- /package/client/dist/assets/{chat-BnJPyeUK.js → chat-CXOJHDUZ.js} +0 -0
- /package/client/dist/assets/{chat-CE8bx6Rz.js → chat-Cy78lw1n.js} +0 -0
- /package/client/dist/assets/{chat-UMl6H55K.js → chat-D78VMi-v.js} +0 -0
- /package/client/dist/assets/{chat-BXVx6rb5.js → chat-De1RgOXU.js} +0 -0
- /package/client/dist/assets/{chat-C5nJF6L0.js → chat-DyTbH-0F.js} +0 -0
- /package/client/dist/assets/{chat-9RcD5Lcn.js → chat-sqZyn0C4.js} +0 -0
- /package/client/dist/assets/{clojure-BQ7JOykv.js → clojure-CCu4UNKg.js} +0 -0
- /package/client/dist/assets/{clsx-CjLeUJfG.js → clsx-pVRQNNR0.js} +0 -0
- /package/client/dist/assets/{code-u9Sg9ohM.js → code-6LokPmIE.js} +0 -0
- /package/client/dist/assets/{code-OoLqhjoI.js → code-CLTuhuvM.js} +0 -0
- /package/client/dist/assets/{code-Lg4awa35.js → code-CwGlPuwb.js} +0 -0
- /package/client/dist/assets/{code-BPMR8_Vp.js → code-DFCDV5e1.js} +0 -0
- /package/client/dist/assets/{code-eh4vO2-_.js → code-Djq48g0s.js} +0 -0
- /package/client/dist/assets/{code-aCUqkVN_.js → code-Do27r8WG.js} +0 -0
- /package/client/dist/assets/{code-BsOBm1Fb.js → code-Drc7f197.js} +0 -0
- /package/client/dist/assets/{coffee-BD3DiL5s.js → coffee-Bam7Y9IR.js} +0 -0
- /package/client/dist/assets/{commands-B9XEyMj-.js → commands-CxReviyc.js} +0 -0
- /package/client/dist/assets/{commands-Ic1DJDxm.js → commands-CzP1qQyD.js} +0 -0
- /package/client/dist/assets/{commands-BdI0CtOL.js → commands-DGP46UxM.js} +0 -0
- /package/client/dist/assets/{commands-DSX3yJyr.js → commands-DQvoMqa7.js} +0 -0
- /package/client/dist/assets/{commands-yNn4IA4C.js → commands-DeKaz04Q.js} +0 -0
- /package/client/dist/assets/{commands-BI1Ta-E7.js → commands-DwYhwQsF.js} +0 -0
- /package/client/dist/assets/{commands-C2ewlyXo.js → commands-lm6Vlght.js} +0 -0
- /package/client/dist/assets/{common-CzCQ0rpW.js → common-B0crwfK0.js} +0 -0
- /package/client/dist/assets/{common-CNoRVpnA.js → common-BlqmiTj4.js} +0 -0
- /package/client/dist/assets/{common-CcHFVATT.js → common-CIUPtPdu.js} +0 -0
- /package/client/dist/assets/{common-LDwESeCX.js → common-C_-0fZsp.js} +0 -0
- /package/client/dist/assets/{common-C9VyfY7g.js → common-DH9A-wTo.js} +0 -0
- /package/client/dist/assets/{common-Dmpyh323.js → common-DJM41wFl.js} +0 -0
- /package/client/dist/assets/{common-ULlk84G4.js → common-SyTaRc_K.js} +0 -0
- /package/client/dist/assets/{cpp-splnCwCh.js → cpp-BhOkAe-9.js} +0 -0
- /package/client/dist/assets/{csharp-BCpsl-o3.js → csharp-BgHArJNx.js} +0 -0
- /package/client/dist/assets/{csp-tkCWrZmb.js → csp-Xzh56_3-.js} +0 -0
- /package/client/dist/assets/{css-B_xdnReq.js → css-CD7-RYRS.js} +0 -0
- /package/client/dist/assets/{cypher-OL1zq-y3.js → cypher-l2xAdF3X.js} +0 -0
- /package/client/dist/assets/{dart-CtTlOkrm.js → dart-CDOWeyzt.js} +0 -0
- /package/client/dist/assets/{dashboard-C-dXxut-.js → dashboard-B1rs1wki.js} +0 -0
- /package/client/dist/assets/{dashboard-CUjyhohl.js → dashboard-D9QPCmv3.js} +0 -0
- /package/client/dist/assets/{dashboard-C52PElPV.js → dashboard-Dxgb47lO.js} +0 -0
- /package/client/dist/assets/{dashboard-03EpOoMM.js → dashboard-TuElRCZX.js} +0 -0
- /package/client/dist/assets/{dashboard-Ch6H-457.js → dashboard-UWXs9_wy.js} +0 -0
- /package/client/dist/assets/{dashboard-zH9quXks.js → dashboard-ajT8usAi.js} +0 -0
- /package/client/dist/assets/{dashboard-C2owt3eN.js → dashboard-zwN2xswo.js} +0 -0
- /package/client/dist/assets/{dockerfile-DcQ5CNiW.js → dockerfile-Dv8atx7v.js} +0 -0
- /package/client/dist/assets/{ecl-DZpiDRt6.js → ecl-DIYTlbD_.js} +0 -0
- /package/client/dist/assets/{editor.api2-Cwla1nvV.js → editor.api2-CrNrMVfe.js} +0 -0
- /package/client/dist/assets/{elixir-Dzj2lqtK.js → elixir-CR7PLJja.js} +0 -0
- /package/client/dist/assets/{explore-4SD1DxR0.js → explore-BYFCCka4.js} +0 -0
- /package/client/dist/assets/{explore-xQoaak6e.js → explore-CE0wSNV1.js} +0 -0
- /package/client/dist/assets/{explore-CZt4Ncpa.js → explore-CSDcRUNj.js} +0 -0
- /package/client/dist/assets/{explore-DQ0XEjed.js → explore-CvM08PpD.js} +0 -0
- /package/client/dist/assets/{explore-CCcPXrHg.js → explore-Jkw93usp.js} +0 -0
- /package/client/dist/assets/{explore-BxR9q8Hq.js → explore-kK239uoZ.js} +0 -0
- /package/client/dist/assets/{explore-B2n8r9Ye.js → explore-mLI5eXks.js} +0 -0
- /package/client/dist/assets/{flow9-CFENCHIZ.js → flow9-DCK5-6NG.js} +0 -0
- /package/client/dist/assets/{format-command-CMsBTOPN.js → format-command-rVyGPxWE.js} +0 -0
- /package/client/dist/assets/{fsharp-D-4bv7FB.js → fsharp-DJ1xiUVU.js} +0 -0
- /package/client/dist/assets/{go-djxbTJq7.js → go-BEvbHcbb.js} +0 -0
- /package/client/dist/assets/{graphql-DHIFrkZ6.js → graphql-DN1ktXnz.js} +0 -0
- /package/client/dist/assets/{hcl-CXVoowNb.js → hcl-DJaIjIEr.js} +0 -0
- /package/client/dist/assets/{ini-Crzc5kly.js → ini-PlKfLEnb.js} +0 -0
- /package/client/dist/assets/{integrations-A9f08E0o.js → integrations-B8hT0Qf_.js} +0 -0
- /package/client/dist/assets/{integrations-DwSVdCpf.js → integrations-Bdk5dMyv.js} +0 -0
- /package/client/dist/assets/{integrations-B46ac3sf.js → integrations-CYqz7YFS.js} +0 -0
- /package/client/dist/assets/{integrations-9qxUNhPD.js → integrations-Cj_BsXxJ.js} +0 -0
- /package/client/dist/assets/{integrations-B17KyA-i.js → integrations-D8M8eJH2.js} +0 -0
- /package/client/dist/assets/{integrations-DkBi-Gsh.js → integrations-TJuDBl-9.js} +0 -0
- /package/client/dist/assets/{integrations-C7u7SInG.js → integrations-TwQV3sLw.js} +0 -0
- /package/client/dist/assets/{java-CYLaJrdE.js → java-3PUwMlx-.js} +0 -0
- /package/client/dist/assets/{jira-01H1RfQj.js → jira--rI5PfuE.js} +0 -0
- /package/client/dist/assets/{jira-CBU0200d.js → jira-BoRyckbb.js} +0 -0
- /package/client/dist/assets/{jira-BpnpUFlb.js → jira-C95FN3yk.js} +0 -0
- /package/client/dist/assets/{jira-DzIVvNmy.js → jira-CNUUgTs4.js} +0 -0
- /package/client/dist/assets/{jira-Dht8qNck.js → jira-DHFnvEm8.js} +0 -0
- /package/client/dist/assets/{jira-4Fin3fu7.js → jira-NhkbrDXe.js} +0 -0
- /package/client/dist/assets/{jira-0ldfMByG.js → jira-wiIvGma5.js} +0 -0
- /package/client/dist/assets/{jobs-Oz3UtLQn.js → jobs-Bjp7v9aA.js} +0 -0
- /package/client/dist/assets/{jobs-jEQidSIb.js → jobs-Bjt5PyVv.js} +0 -0
- /package/client/dist/assets/{jobs-BF9raUkL.js → jobs-BmTs4Bn3.js} +0 -0
- /package/client/dist/assets/{jobs-DcCONARH.js → jobs-Cchy-18B.js} +0 -0
- /package/client/dist/assets/{jobs-DM9owF1j.js → jobs-D2QVTPbz.js} +0 -0
- /package/client/dist/assets/{jobs-Bw4hqEro.js → jobs-LK1ImiDH.js} +0 -0
- /package/client/dist/assets/{jobs-ym72SIR9.js → jobs-yPz4Dvi-.js} +0 -0
- /package/client/dist/assets/{julia-BJ7tUU-T.js → julia-DC6LnY15.js} +0 -0
- /package/client/dist/assets/{kotlin-CeWcU3lC.js → kotlin-CoGntbZF.js} +0 -0
- /package/client/dist/assets/{less-CviwWNG4.js → less-DCFflTXL.js} +0 -0
- /package/client/dist/assets/{lexon-Dt28jqDS.js → lexon-BTOivnjP.js} +0 -0
- /package/client/dist/assets/{loops-Fv4Bs-9A.js → loops-BFIcYvpy.js} +0 -0
- /package/client/dist/assets/{loops-D_ZxkD4l.js → loops-BU314kSd.js} +0 -0
- /package/client/dist/assets/{loops-DE-2cmLw.js → loops-C3OaXou9.js} +0 -0
- /package/client/dist/assets/{loops-mcoeFMat.js → loops-Cv6Aeszq.js} +0 -0
- /package/client/dist/assets/{loops-B_w7STrw.js → loops-IQe23ef6.js} +0 -0
- /package/client/dist/assets/{loops-BYNUJVyD.js → loops-LqZ4MC6J.js} +0 -0
- /package/client/dist/assets/{loops-B_gS4Pqu.js → loops-SbkOdciY.js} +0 -0
- /package/client/dist/assets/{lua-B6AOaJSi.js → lua-ClKCZMmP.js} +0 -0
- /package/client/dist/assets/{m3-VnMkHJcy.js → m3-25hKFWMb.js} +0 -0
- /package/client/dist/assets/{markdown-8vKNdvIM.js → markdown-BGAj9q0K.js} +0 -0
- /package/client/dist/assets/{mips-DoEcuzan.js → mips-BrVgY2Pf.js} +0 -0
- /package/client/dist/assets/{msdax-CNzvHyEp.js → msdax-7EhcRsm8.js} +0 -0
- /package/client/dist/assets/{mysql-Buk3vUtL.js → mysql-B5_atCBH.js} +0 -0
- /package/client/dist/assets/{nav-_0vAgZ_k.js → nav-B2Cv1vjz.js} +0 -0
- /package/client/dist/assets/{nav-Cw3_40fA.js → nav-Br2AivTc.js} +0 -0
- /package/client/dist/assets/{nav-DNDJ3H-_.js → nav-CFofO7QO.js} +0 -0
- /package/client/dist/assets/{nav-CCz4krPP.js → nav-CyHKTZxn.js} +0 -0
- /package/client/dist/assets/{nav-B5W9IMnf.js → nav-DqyLGJmF.js} +0 -0
- /package/client/dist/assets/{nav-CrG_mYRr.js → nav-_-siCrRv.js} +0 -0
- /package/client/dist/assets/{nav-DbAbG5_k.js → nav-rO4Nqnh-.js} +0 -0
- /package/client/dist/assets/{nav-DVp1nEsi.js → nav-zyBhf29M.js} +0 -0
- /package/client/dist/assets/{objective-c-DfOmda-5.js → objective-c-CLUvUl9T.js} +0 -0
- /package/client/dist/assets/{pascal-DoAA2yjy.js → pascal-BnU1HU42.js} +0 -0
- /package/client/dist/assets/{pascaligo-C65Vn1fu.js → pascaligo-dsKvjFzi.js} +0 -0
- /package/client/dist/assets/{perl-INlfQ_ro.js → perl-CZne1GYG.js} +0 -0
- /package/client/dist/assets/{pgsql-DtwRzglx.js → pgsql-CMa5W_iF.js} +0 -0
- /package/client/dist/assets/{php-DfHqVNet.js → php-Cu4mS35J.js} +0 -0
- /package/client/dist/assets/{pla-D3dNVRYk.js → pla-B7COwnnm.js} +0 -0
- /package/client/dist/assets/{postiats-UKXD1rM4.js → postiats-GLeNtnBQ.js} +0 -0
- /package/client/dist/assets/{powerquery-zE3E3O7s.js → powerquery-BqPf3R1W.js} +0 -0
- /package/client/dist/assets/{powershell-Df9b3zQl.js → powershell-D9btb5su.js} +0 -0
- /package/client/dist/assets/{protobuf-BF0nUVrW.js → protobuf-6GHSuaNm.js} +0 -0
- /package/client/dist/assets/{pug-Bj6Yikv_.js → pug-ct6rYKQd.js} +0 -0
- /package/client/dist/assets/{qsharp-BI4h-raZ.js → qsharp-CIrAQNPy.js} +0 -0
- /package/client/dist/assets/{r-DhpnmaXx.js → r-Bk-a0sON.js} +0 -0
- /package/client/dist/assets/{redis-DwYYPr4d.js → redis-C9yfaWYh.js} +0 -0
- /package/client/dist/assets/{redshift-D2f3Bc-4.js → redshift-DaOT1jRU.js} +0 -0
- /package/client/dist/assets/{restructuredtext-Dkiif6fe.js → restructuredtext-C1t9LQfS.js} +0 -0
- /package/client/dist/assets/{ruby-C6hLmHy0.js → ruby-COiPZJjc.js} +0 -0
- /package/client/dist/assets/{rust-X8WAGtxB.js → rust--gZOJZzj.js} +0 -0
- /package/client/dist/assets/{sb-4M2la0Kr.js → sb-NHf3iazF.js} +0 -0
- /package/client/dist/assets/{scala-CaCXz58E.js → scala-D1nO1TBd.js} +0 -0
- /package/client/dist/assets/{scheme-CMdjpmP7.js → scheme-Bref42s5.js} +0 -0
- /package/client/dist/assets/{scss-QopmvPyp.js → scss-BS9CCLr3.js} +0 -0
- /package/client/dist/assets/{settings-DyBxunCh.js → settings-BN4dufu6.js} +0 -0
- /package/client/dist/assets/{settings-BN7OusER.js → settings-Bap_q3rt.js} +0 -0
- /package/client/dist/assets/{settings-Bi5FFkIw.js → settings-BlYjWMy5.js} +0 -0
- /package/client/dist/assets/{settings-iQe5Dim-.js → settings-C7t_uUz4.js} +0 -0
- /package/client/dist/assets/{settings-fk-WlnUt.js → settings-CIFrUsKt.js} +0 -0
- /package/client/dist/assets/{settings-BA1V6KdK.js → settings-Cbj9VWmI.js} +0 -0
- /package/client/dist/assets/{settings-CRJxyTNN.js → settings-D7saHMU8.js} +0 -0
- /package/client/dist/assets/{settings-0m2iuTzd.js → settings-DrRjM5e8.js} +0 -0
- /package/client/dist/assets/{shell-CDBchS00.js → shell-DT3joMBB.js} +0 -0
- /package/client/dist/assets/{solidity-DvBfi5mC.js → solidity-o2Fm9dvg.js} +0 -0
- /package/client/dist/assets/{sophia-HSnXR17u.js → sophia-Dj1N6Xqb.js} +0 -0
- /package/client/dist/assets/{sparql-DhG_ppup.js → sparql-D2fjpTWm.js} +0 -0
- /package/client/dist/assets/{specs-BvsFNKTs.js → specs-C-WXGBqy.js} +0 -0
- /package/client/dist/assets/{specs-D4ORogcT.js → specs-C57koADY.js} +0 -0
- /package/client/dist/assets/{specs-CnH7dOiF.js → specs-CCXV-eSF.js} +0 -0
- /package/client/dist/assets/{specs-CUE3xSFM.js → specs-CYA5Bv7Q.js} +0 -0
- /package/client/dist/assets/{specs-C2wW5bq8.js → specs-DFCFg51O.js} +0 -0
- /package/client/dist/assets/{specs-C_8j4ELZ.js → specs-Dslng_yW.js} +0 -0
- /package/client/dist/assets/{specs-D6Y76Bgi.js → specs-DwRPiJTc.js} +0 -0
- /package/client/dist/assets/{specs-Bku8SypT.js → specs-DzlROLy7.js} +0 -0
- /package/client/dist/assets/{sql-DHeIS-tf.js → sql-BArhsPUz.js} +0 -0
- /package/client/dist/assets/{st-CMWchiRU.js → st-Bd2-tALj.js} +0 -0
- /package/client/dist/assets/{swift-CDXvBefj.js → swift-DvEpXBKj.js} +0 -0
- /package/client/dist/assets/{systemverilog-0RTukYUE.js → systemverilog-mHEbsnVH.js} +0 -0
- /package/client/dist/assets/{tcl-CbBF_Ttl.js → tcl-DePutp1e.js} +0 -0
- /package/client/dist/assets/{terminal-CB33IsO1.js → terminal-2S-Wsk6L.js} +0 -0
- /package/client/dist/assets/{terminal-Cz_Puz0q.js → terminal-BRQMrU74.js} +0 -0
- /package/client/dist/assets/{terminal-DFEH9XTQ.js → terminal-BTiemy98.js} +0 -0
- /package/client/dist/assets/{terminal-BTanJIt_.js → terminal-CjQeWfpp.js} +0 -0
- /package/client/dist/assets/{terminal-CY_sPfdD.js → terminal-CmP5riTU.js} +0 -0
- /package/client/dist/assets/{terminal-BLh00ouM.js → terminal-CnObBCAh.js} +0 -0
- /package/client/dist/assets/{terminal-CR6t-Oey.js → terminal-DcPKgKMN.js} +0 -0
- /package/client/dist/assets/{terminal-Cj4HzP3p.js → terminal-XciDq6VV.js} +0 -0
- /package/client/dist/assets/{tickets-OrJwUxJR.js → tickets-7kl_0jgM.js} +0 -0
- /package/client/dist/assets/{tickets-68LH1xp6.js → tickets-BSyaZI8d.js} +0 -0
- /package/client/dist/assets/{tickets-blQnNA4N.js → tickets-CcTcvwKS.js} +0 -0
- /package/client/dist/assets/{tickets-D6f3GSYn.js → tickets-D75vyZJj.js} +0 -0
- /package/client/dist/assets/{tickets-PtHNxQo5.js → tickets-D79ZT2SZ.js} +0 -0
- /package/client/dist/assets/{tickets-DBQXMYYA.js → tickets-DbcMWq5L.js} +0 -0
- /package/client/dist/assets/{tickets-jxsTrApR.js → tickets-ZA_2iPd1.js} +0 -0
- /package/client/dist/assets/{tickets-REr-EQx9.js → tickets-mxd23fWX.js} +0 -0
- /package/client/dist/assets/{twig-DCcGd8FE.js → twig-DQ2zIX0b.js} +0 -0
- /package/client/dist/assets/{typespec-HTphp-Uh.js → typespec-DPoaiGTJ.js} +0 -0
- /package/client/dist/assets/{vb-Cb_yUcVd.js → vb-Jo98wdMr.js} +0 -0
- /package/client/dist/assets/{wgsl-DrKU3YXj.js → wgsl-DZc4h_eS.js} +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Control Specrails from any AI (MCP server)
|
|
2
|
+
|
|
3
|
+
Specrails can expose **itself** to any AI assistant that speaks the [Model Context Protocol](https://modelcontextprotocol.io) — Claude Desktop, Claude Code, Cursor, Cline, or your own agent. Turn it on, point your assistant at Specrails, and you can drive the whole app by chatting: *"list my projects", "create a spec for social login in the API project", "launch rail 0 and tell me when it's done", "how much did I spend this week?"*. Your assistant calls Specrails' tools under the hood instead of you clicking around.
|
|
4
|
+
|
|
5
|
+
This is the opposite direction from the plugins and "My approved MCPs" features: those let Specrails *use* other MCP servers; this lets other apps use **Specrails**.
|
|
6
|
+
|
|
7
|
+
## Turning it on
|
|
8
|
+
|
|
9
|
+
It's **off by default**. Open **Settings ▸ MCP** and flip **Enable MCP**. That's it — the server starts immediately, no restart.
|
|
10
|
+
|
|
11
|
+
You stay in control of *what* an external AI may do through a set of permission tiers:
|
|
12
|
+
|
|
13
|
+
| Tier | What it allows | Default |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Read** | List and inspect projects, specs, jobs, analytics… | Always on (when MCP is enabled) |
|
|
16
|
+
| **Write** | Create and edit specs, change settings and rail config | Off — opt in |
|
|
17
|
+
| **AI-spawn** | Actions that run an AI and **cost money** (launch a rail, generate a spec, send a chat turn) | Off — opt in |
|
|
18
|
+
| **Destructive** | Delete projects/specs/jobs, stop running work | Off — opt in |
|
|
19
|
+
|
|
20
|
+
If your assistant tries something a disabled tier covers, Specrails refuses with a clear message telling you which tier to switch on. So you can start read-only and open up exactly what you need.
|
|
21
|
+
|
|
22
|
+
## Connecting your assistant
|
|
23
|
+
|
|
24
|
+
The panel shows a ready-to-paste configuration block. The simplest, universal path is the bundled **bridge** (`specrails-mcp`): your assistant runs it, and it relays to Specrails for you. The bridge reads the access token locally, so **the token never appears in your assistant's config**.
|
|
25
|
+
|
|
26
|
+
In a client like Claude Desktop or Cursor, the config looks like:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "mcpServers": { "specrails": { "command": "specrails-mcp" } } }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Clients that support remote HTTP MCP servers can instead point straight at `http://127.0.0.1:4200/api/mcp` with the token from the panel.
|
|
33
|
+
|
|
34
|
+
Once connected, your assistant sees about **18 tools** covering the whole app — projects, specs, rails and jobs, chat/Explore, agents, plugins, Jira, loops, the code explorer, analytics, settings — plus a built-in **guide** tool it reads first so it understands how Specrails works without you explaining anything.
|
|
35
|
+
|
|
36
|
+
## What you can do with it
|
|
37
|
+
|
|
38
|
+
A few recipes once your assistant is connected. Start with **Read** on, then turn on **Write** and **AI-spawn** when you want it to actually create and launch work.
|
|
39
|
+
|
|
40
|
+
**Turn work from your other tools into specs.** If your assistant also has GitHub, Jira, Gmail or Slack connected, it can bring the work to Specrails for you:
|
|
41
|
+
> *"Take this week's open GitHub issues labelled 'bug', create a spec for each in the API project, and launch them."*
|
|
42
|
+
>
|
|
43
|
+
> *"Read my latest customer-feedback emails, group them by theme, and create one spec per theme."*
|
|
44
|
+
|
|
45
|
+
**Overnight autopilot.** Leave it running with the app in the tray and come back to a report:
|
|
46
|
+
> *"Here are 12 ideas. Turn each into a spec, launch them three at a time across the rails, watch every job, and tomorrow give me a summary of what finished, what failed and what it cost."*
|
|
47
|
+
|
|
48
|
+
Keep **Destructive** off and it can build all night without ever deleting anything.
|
|
49
|
+
|
|
50
|
+
**Across all your projects.** Something the dashboard doesn't do on its own:
|
|
51
|
+
> *"Check all my projects. Tell me which have specs in the backlog and no rail running, and start the highest-priority one in each."*
|
|
52
|
+
|
|
53
|
+
**Hands-free while you code.** Drive Specrails from your editor or by voice, without switching windows:
|
|
54
|
+
> *"Launch rail 0 in ultracode mode with Opus for ticket #42 and tell me when it's done."*
|
|
55
|
+
|
|
56
|
+
**Ask about cost and history.** Your analytics, in plain language:
|
|
57
|
+
> *"Where did I spend the most on AI this week, by project and by model? Show me the five most expensive tickets."*
|
|
58
|
+
|
|
59
|
+
**Your daily standup.**
|
|
60
|
+
> *"Write my standup: which rails ran yesterday, what completed, what failed, total cost — as bullets ready to paste into Slack."*
|
|
61
|
+
|
|
62
|
+
**Understand the code.** No editor needed:
|
|
63
|
+
> *"Which files did ticket #38 touch? Summarise in one line what changed in each."*
|
|
64
|
+
|
|
65
|
+
Because your assistant reads the built-in guide first, you rarely need to name tools or specs — describe the outcome and it works out the calls.
|
|
66
|
+
|
|
67
|
+
## A few things to know
|
|
68
|
+
|
|
69
|
+
- **Specrails must be running.** The MCP server lives inside the app, so your assistant can reach it only while Specrails is open. Thanks to the tray, closing the window keeps it running in the background — only **Exit** from the tray (Mac menu bar / Windows system tray) actually stops it.
|
|
70
|
+
- **Long actions stream.** Launching a rail or generating a spec returns immediately and finishes in the background; your assistant can "watch" it and report back when it settles.
|
|
71
|
+
- **Security.** The MCP uses its own access token, separate from everything else, and only listens on your own machine (loopback). You can copy or regenerate that token any time from the panel.
|
|
72
|
+
- **Not exposed (v1).** For safety, a few high-risk capabilities are intentionally left out: running shell commands in the terminal, the embedded browser, in-app file editing, and installing system prerequisites. Everything that *manages* Specrails is available; raw machine access is not.
|
|
73
|
+
|
|
74
|
+
You can disable MCP at any time from the same panel — your assistant simply loses access, and nothing else changes.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Controla Specrails desde cualquier IA (servidor MCP)
|
|
2
|
+
|
|
3
|
+
Specrails puede exponerse **a sí mismo** a cualquier asistente de IA que hable el [Model Context Protocol](https://modelcontextprotocol.io) — Claude Desktop, Claude Code, Cursor, Cline o tu propio agente. Actívalo, apunta tu asistente a Specrails y podrás manejar toda la app conversando: *"lista mis proyectos", "crea una spec para login social en el proyecto de la API", "lanza el rail 0 y avísame cuando termine", "¿cuánto he gastado esta semana?"*. Tu asistente llama por debajo a las herramientas de Specrails en lugar de que tú andes haciendo clics.
|
|
4
|
+
|
|
5
|
+
Esta es la dirección opuesta a las funciones de plugins y "Mis MCPs aprobados": esas dejan que Specrails *use* otros servidores MCP; esta deja que otras apps usen **Specrails**.
|
|
6
|
+
|
|
7
|
+
## Cómo activarlo
|
|
8
|
+
|
|
9
|
+
Está **desactivado por defecto**. Abre **Configuración ▸ MCP** y activa **Habilitar MCP**. Eso es todo — el servidor arranca de inmediato, sin reiniciar.
|
|
10
|
+
|
|
11
|
+
Tú mantienes el control de *qué* puede hacer una IA externa mediante un conjunto de niveles de permiso:
|
|
12
|
+
|
|
13
|
+
| Nivel | Qué permite | Por defecto |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Lectura** | Listar e inspeccionar proyectos, specs, trabajos, analíticas… | Siempre activo (cuando MCP está habilitado) |
|
|
16
|
+
| **Escritura** | Crear y editar specs, cambiar la configuración y la config de los rails | Desactivado — actívalo tú |
|
|
17
|
+
| **Lanzar IA** | Acciones que ejecutan una IA y **cuestan dinero** (lanzar un rail, generar una spec, enviar un turno de chat) | Desactivado — actívalo tú |
|
|
18
|
+
| **Destructivo** | Borrar proyectos/specs/trabajos, detener trabajo en curso | Desactivado — actívalo tú |
|
|
19
|
+
|
|
20
|
+
Si tu asistente intenta algo que cubre un nivel desactivado, Specrails lo rechaza con un mensaje claro que te indica qué nivel activar. Así puedes empezar en modo solo lectura y abrir exactamente lo que necesites.
|
|
21
|
+
|
|
22
|
+
## Conectar tu asistente
|
|
23
|
+
|
|
24
|
+
El panel muestra un bloque de configuración listo para pegar. La vía más sencilla y universal es el **puente** (bridge) incluido (`specrails-mcp`): tu asistente lo ejecuta y este se encarga de retransmitir a Specrails por ti. El puente lee el token de acceso localmente, así que **el token nunca aparece en la configuración de tu asistente**.
|
|
25
|
+
|
|
26
|
+
En un cliente como Claude Desktop o Cursor, la configuración tiene este aspecto:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "mcpServers": { "specrails": { "command": "specrails-mcp" } } }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Los clientes que admiten servidores MCP remotos por HTTP pueden, en su lugar, apuntar directamente a `http://127.0.0.1:4200/api/mcp` con el token del panel.
|
|
33
|
+
|
|
34
|
+
Una vez conectado, tu asistente ve unas **18 herramientas** que cubren toda la app — proyectos, specs, rails y trabajos, chat/Explore, agentes, plugins, Jira, loops, el explorador de código, analíticas, configuración — más una herramienta de **guía** incorporada que lee primero para entender cómo funciona Specrails sin que tú tengas que explicar nada.
|
|
35
|
+
|
|
36
|
+
## Qué puedes hacer con él
|
|
37
|
+
|
|
38
|
+
Unas cuantas recetas una vez que tu asistente está conectado. Empieza con **Lectura** activado y, cuando quieras que de verdad cree y lance trabajo, activa **Escritura** y **Lanzar IA**.
|
|
39
|
+
|
|
40
|
+
**Convierte en specs el trabajo de tus otras herramientas.** Si tu asistente también tiene conectados GitHub, Jira, Gmail o Slack, puede traerte el trabajo a Specrails:
|
|
41
|
+
> *"Coge las incidencias abiertas de GitHub de esta semana con la etiqueta 'bug', crea una spec para cada una en el proyecto de la API y lánzalas."*
|
|
42
|
+
>
|
|
43
|
+
> *"Lee mis últimos correos de feedback de clientes, agrúpalos por tema y crea una spec por tema."*
|
|
44
|
+
|
|
45
|
+
**Piloto automático nocturno.** Déjalo en marcha con la app en la bandeja y vuelve a un informe:
|
|
46
|
+
> *"Aquí tienes 12 ideas. Convierte cada una en una spec, lánzalas de tres en tres por los rails, vigila cada trabajo y mañana dame un resumen de lo que terminó, lo que falló y lo que costó."*
|
|
47
|
+
|
|
48
|
+
Mantén **Destructivo** desactivado y podrá trabajar toda la noche sin borrar nada nunca.
|
|
49
|
+
|
|
50
|
+
**En todos tus proyectos.** Algo que el panel no hace por sí solo:
|
|
51
|
+
> *"Revisa todos mis proyectos. Dime cuáles tienen specs en el backlog y ningún rail en marcha, y arranca el de mayor prioridad en cada uno."*
|
|
52
|
+
|
|
53
|
+
**Sin manos mientras programas.** Maneja Specrails desde tu editor o por voz, sin cambiar de ventana:
|
|
54
|
+
> *"Lanza el rail 0 en modo ultracode con Opus para el ticket #42 y avísame cuando termine."*
|
|
55
|
+
|
|
56
|
+
**Pregunta por el coste y el historial.** Tus analíticas, en lenguaje natural:
|
|
57
|
+
> *"¿Dónde he gastado más en IA esta semana, por proyecto y por modelo? Enséñame los cinco tickets más caros."*
|
|
58
|
+
|
|
59
|
+
**Tu standup diario.**
|
|
60
|
+
> *"Escribe mi standup: qué rails se ejecutaron ayer, qué se completó, qué falló y el coste total — en viñetas listas para pegar en Slack."*
|
|
61
|
+
|
|
62
|
+
**Entiende el código.** Sin necesidad de editor:
|
|
63
|
+
> *"¿Qué archivos tocó el ticket #38? Resume en una línea qué cambió en cada uno."*
|
|
64
|
+
|
|
65
|
+
Como tu asistente lee primero la guía incorporada, rara vez necesitas nombrar herramientas ni specs — describe el resultado que quieres y él se encarga de las llamadas.
|
|
66
|
+
|
|
67
|
+
## Algunas cosas que conviene saber
|
|
68
|
+
|
|
69
|
+
- **Specrails tiene que estar en ejecución.** El servidor MCP vive dentro de la app, así que tu asistente solo puede alcanzarlo mientras Specrails esté abierto. Gracias al icono de la bandeja, cerrar la ventana lo mantiene en ejecución en segundo plano — solo **Salir** desde la bandeja (barra de menú de Mac / bandeja del sistema de Windows) lo detiene de verdad.
|
|
70
|
+
- **Las acciones largas se transmiten.** Lanzar un rail o generar una spec devuelve el control de inmediato y termina en segundo plano; tu asistente puede "vigilarlo" e informarte cuando se resuelva.
|
|
71
|
+
- **Seguridad.** El MCP usa su propio token de acceso, separado de todo lo demás, y solo escucha en tu propia máquina (loopback). Puedes copiar o regenerar ese token en cualquier momento desde el panel.
|
|
72
|
+
- **No expuesto (v1).** Por seguridad, unas pocas capacidades de alto riesgo se dejan fuera a propósito: ejecutar comandos de shell en la terminal, el navegador integrado, la edición de archivos dentro de la app y la instalación de prerrequisitos del sistema. Todo lo que *gestiona* Specrails está disponible; el acceso directo a la máquina, no.
|
|
73
|
+
|
|
74
|
+
Puedes desactivar MCP en cualquier momento desde el mismo panel — tu asistente simplemente pierde el acceso y nada más cambia.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Piloter Specrails depuis n'importe quelle IA (serveur MCP)
|
|
2
|
+
|
|
3
|
+
Specrails peut s'exposer **lui-même** à n'importe quel assistant IA qui parle le [Model Context Protocol](https://modelcontextprotocol.io) — Claude Desktop, Claude Code, Cursor, Cline, ou votre propre agent. Activez-le, pointez votre assistant vers Specrails, et vous pouvez piloter toute l'app en discutant : *« liste mes projets », « crée une spec pour la connexion sociale dans le projet API », « lance le rail 0 et préviens-moi quand c'est terminé », « combien ai-je dépensé cette semaine ? »*. Votre assistant appelle les outils de Specrails en coulisses, plutôt que de vous faire cliquer partout.
|
|
4
|
+
|
|
5
|
+
C'est la direction inverse des fonctionnalités plugins et « Mes MCP approuvés » : celles-ci permettent à Specrails d'*utiliser* d'autres serveurs MCP ; ceci permet à d'autres apps d'utiliser **Specrails**.
|
|
6
|
+
|
|
7
|
+
## L'activer
|
|
8
|
+
|
|
9
|
+
C'est **désactivé par défaut**. Ouvrez **Paramètres ▸ MCP** et basculez **Activer MCP**. C'est tout — le serveur démarre immédiatement, sans redémarrage.
|
|
10
|
+
|
|
11
|
+
Vous gardez le contrôle de *ce qu'*une IA externe peut faire grâce à un ensemble de niveaux de permission :
|
|
12
|
+
|
|
13
|
+
| Niveau | Ce qu'il autorise | Par défaut |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Lecture** | Lister et inspecter les projets, specs, jobs, analyses… | Toujours actif (lorsque MCP est activé) |
|
|
16
|
+
| **Écriture** | Créer et modifier des specs, changer les paramètres et la configuration des rails | Désactivé — à activer |
|
|
17
|
+
| **Lancement d'IA** | Actions qui exécutent une IA et **coûtent de l'argent** (lancer un rail, générer une spec, envoyer un tour de chat) | Désactivé — à activer |
|
|
18
|
+
| **Destructif** | Supprimer des projets/specs/jobs, arrêter un travail en cours | Désactivé — à activer |
|
|
19
|
+
|
|
20
|
+
Si votre assistant tente quelque chose que couvre un niveau désactivé, Specrails refuse avec un message clair vous indiquant quel niveau activer. Vous pouvez donc commencer en lecture seule et ouvrir exactement ce dont vous avez besoin.
|
|
21
|
+
|
|
22
|
+
## Connecter votre assistant
|
|
23
|
+
|
|
24
|
+
Le panneau affiche un bloc de configuration prêt à coller. La voie la plus simple et universelle est le **pont** (« bridge ») embarqué (`specrails-mcp`) : votre assistant l'exécute, et il relaie vers Specrails pour vous. Le pont lit le jeton d'accès localement, donc **le jeton n'apparaît jamais dans la configuration de votre assistant**.
|
|
25
|
+
|
|
26
|
+
Dans un client comme Claude Desktop ou Cursor, la configuration ressemble à ceci :
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "mcpServers": { "specrails": { "command": "specrails-mcp" } } }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Les clients qui prennent en charge les serveurs MCP HTTP distants peuvent à la place pointer directement vers `http://127.0.0.1:4200/api/mcp` avec le jeton du panneau.
|
|
33
|
+
|
|
34
|
+
Une fois connecté, votre assistant voit environ **18 outils** couvrant toute l'app — projets, specs, rails et jobs, chat/Explore, agents, plugins, Jira, loops, l'explorateur de code, les analyses, les paramètres — plus un outil **guide** intégré qu'il lit en premier afin de comprendre le fonctionnement de Specrails sans que vous ayez à expliquer quoi que ce soit.
|
|
35
|
+
|
|
36
|
+
## Ce que vous pouvez en faire
|
|
37
|
+
|
|
38
|
+
Quelques recettes une fois votre assistant connecté. Commencez avec **Lecture** activée, puis activez **Écriture** et **Lancement d'IA** quand vous voulez qu'il crée et lance réellement du travail.
|
|
39
|
+
|
|
40
|
+
**Transformez le travail de vos autres outils en specs.** Si votre assistant a aussi GitHub, Jira, Gmail ou Slack connectés, il peut amener le travail jusqu'à Specrails pour vous :
|
|
41
|
+
> *« Prends les issues GitHub ouvertes cette semaine étiquetées "bug", crée une spec pour chacune dans le projet API, et lance-les. »*
|
|
42
|
+
>
|
|
43
|
+
> *« Lis mes derniers e-mails de retours clients, regroupe-les par thème, et crée une spec par thème. »*
|
|
44
|
+
|
|
45
|
+
**Pilote automatique nocturne.** Laissez-le tourner avec l'app dans la zone de notification et revenez à un rapport :
|
|
46
|
+
> *« Voici 12 idées. Transforme chacune en une spec, lance-les trois par trois à travers les rails, surveille chaque job, et demain donne-moi un résumé de ce qui s'est terminé, ce qui a échoué et ce que ça a coûté. »*
|
|
47
|
+
|
|
48
|
+
Gardez **Destructif** désactivé et il peut construire toute la nuit sans jamais rien supprimer.
|
|
49
|
+
|
|
50
|
+
**À travers tous vos projets.** Quelque chose que le tableau de bord ne fait pas tout seul :
|
|
51
|
+
> *« Vérifie tous mes projets. Dis-moi lesquels ont des specs dans le backlog sans aucun rail en cours, et démarre la plus prioritaire dans chacun. »*
|
|
52
|
+
|
|
53
|
+
**Sans les mains pendant que vous codez.** Pilotez Specrails depuis votre éditeur ou à la voix, sans changer de fenêtre :
|
|
54
|
+
> *« Lance le rail 0 en mode ultracode avec Opus pour le ticket #42 et préviens-moi quand c'est terminé. »*
|
|
55
|
+
|
|
56
|
+
**Interrogez les coûts et l'historique.** Vos analyses, en langage clair :
|
|
57
|
+
> *« Où ai-je le plus dépensé en IA cette semaine, par projet et par modèle ? Montre-moi les cinq tickets les plus coûteux. »*
|
|
58
|
+
|
|
59
|
+
**Votre point quotidien.**
|
|
60
|
+
> *« Rédige mon point quotidien : quels rails ont tourné hier, ce qui s'est terminé, ce qui a échoué, le coût total — sous forme de puces prêtes à coller dans Slack. »*
|
|
61
|
+
|
|
62
|
+
**Comprenez le code.** Aucun éditeur nécessaire :
|
|
63
|
+
> *« Quels fichiers le ticket #38 a-t-il touchés ? Résume en une ligne ce qui a changé dans chacun. »*
|
|
64
|
+
|
|
65
|
+
Parce que votre assistant lit d'abord le guide intégré, vous avez rarement besoin de nommer des outils ou des specs — décrivez le résultat voulu et il trouve les appels à faire.
|
|
66
|
+
|
|
67
|
+
## Quelques points à connaître
|
|
68
|
+
|
|
69
|
+
- **Specrails doit être en cours d'exécution.** Le serveur MCP vit à l'intérieur de l'app, donc votre assistant ne peut l'atteindre que tant que Specrails est ouvert. Grâce à la zone de notification, fermer la fenêtre laisse l'app tourner en arrière-plan — seul **Quitter** depuis la zone de notification (barre de menus Mac / zone de notification Windows) l'arrête réellement.
|
|
70
|
+
- **Les actions longues sont diffusées en flux.** Lancer un rail ou générer une spec renvoie une réponse immédiate et se termine en arrière-plan ; votre assistant peut le « surveiller » et vous faire un retour une fois l'action stabilisée.
|
|
71
|
+
- **Sécurité.** Le MCP utilise son propre jeton d'accès, distinct de tout le reste, et n'écoute que sur votre propre machine (boucle locale). Vous pouvez copier ou régénérer ce jeton à tout moment depuis le panneau.
|
|
72
|
+
- **Non exposé (v1).** Par sécurité, quelques capacités à haut risque sont volontairement laissées de côté : exécuter des commandes shell dans le terminal, le navigateur embarqué, l'édition de fichiers dans l'app, et l'installation des prérequis système. Tout ce qui *gère* Specrails est disponible ; l'accès brut à la machine ne l'est pas.
|
|
73
|
+
|
|
74
|
+
Vous pouvez désactiver MCP à tout moment depuis le même panneau — votre assistant perd simplement l'accès, et rien d'autre ne change.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Controlla Specrails da qualsiasi AI (server MCP)
|
|
2
|
+
|
|
3
|
+
Specrails può esporre **se stesso** a qualsiasi assistente AI che parli il [Model Context Protocol](https://modelcontextprotocol.io) — Claude Desktop, Claude Code, Cursor, Cline o un tuo agente. Attivalo, punta il tuo assistente verso Specrails e potrai pilotare l'intera app chiacchierando: *"elenca i miei progetti", "crea una spec per il login social nel progetto API", "lancia il rail 0 e dimmi quando ha finito", "quanto ho speso questa settimana?"*. Il tuo assistente richiama gli strumenti di Specrails dietro le quinte, al posto tuo che clicchi qua e là.
|
|
4
|
+
|
|
5
|
+
Questa è la direzione opposta rispetto alle funzionalità dei plugin e degli "MCP approvati da me": quelle permettono a Specrails di *usare* altri server MCP; questa permette ad altre app di usare **Specrails**.
|
|
6
|
+
|
|
7
|
+
## Come attivarlo
|
|
8
|
+
|
|
9
|
+
È **disattivato di default**. Apri **Impostazioni ▸ MCP** e attiva **Abilita MCP**. Fatto — il server si avvia immediatamente, senza riavvii.
|
|
10
|
+
|
|
11
|
+
Resti tu a controllare *cosa* può fare un'AI esterna tramite una serie di livelli di permesso:
|
|
12
|
+
|
|
13
|
+
| Livello | Cosa consente | Default |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Lettura** | Elencare e ispezionare progetti, spec, job, analisi… | Sempre attivo (quando l'MCP è abilitato) |
|
|
16
|
+
| **Scrittura** | Creare e modificare spec, cambiare impostazioni e configurazione dei rail | Disattivato — da abilitare |
|
|
17
|
+
| **AI-spawn** | Azioni che eseguono un'AI e **costano denaro** (lanciare un rail, generare una spec, inviare un turno di chat) | Disattivato — da abilitare |
|
|
18
|
+
| **Distruttivo** | Eliminare progetti/spec/job, fermare il lavoro in corso | Disattivato — da abilitare |
|
|
19
|
+
|
|
20
|
+
Se il tuo assistente prova a fare qualcosa coperto da un livello disattivato, Specrails rifiuta con un messaggio chiaro che ti indica quale livello attivare. Così puoi partire in sola lettura e aprire esattamente ciò che ti serve.
|
|
21
|
+
|
|
22
|
+
## Collegare il tuo assistente
|
|
23
|
+
|
|
24
|
+
Il pannello mostra un blocco di configurazione pronto da incollare. Il percorso più semplice e universale è il **bridge** incluso (`specrails-mcp`): il tuo assistente lo esegue e quello fa da tramite verso Specrails per te. Il bridge legge il token di accesso in locale, quindi **il token non compare mai nella configurazione del tuo assistente**.
|
|
25
|
+
|
|
26
|
+
In un client come Claude Desktop o Cursor, la configurazione si presenta così:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "mcpServers": { "specrails": { "command": "specrails-mcp" } } }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
I client che supportano i server MCP HTTP remoti possono invece puntare direttamente a `http://127.0.0.1:4200/api/mcp` con il token preso dal pannello.
|
|
33
|
+
|
|
34
|
+
Una volta collegato, il tuo assistente vede circa **18 strumenti** che coprono l'intera app — progetti, spec, rail e job, chat/Explore, agenti, plugin, Jira, loop, l'esploratore del codice, le analisi, le impostazioni — più uno strumento **guida** integrato che legge per primo, così capisce come funziona Specrails senza che tu debba spiegargli nulla.
|
|
35
|
+
|
|
36
|
+
## Cosa puoi farci
|
|
37
|
+
|
|
38
|
+
Qualche ricetta una volta collegato il tuo assistente. Parti con la **Lettura** attiva, poi accendi **Scrittura** e **AI-spawn** quando vuoi che crei e lanci davvero il lavoro.
|
|
39
|
+
|
|
40
|
+
**Trasforma il lavoro degli altri tuoi strumenti in spec.** Se il tuo assistente ha collegati anche GitHub, Jira, Gmail o Slack, può portare il lavoro dentro Specrails al posto tuo:
|
|
41
|
+
> *"Prendi le issue GitHub aperte di questa settimana con etichetta 'bug', crea una spec per ognuna nel progetto API e lanciale."*
|
|
42
|
+
>
|
|
43
|
+
> *"Leggi le ultime email di feedback dei clienti, raggruppale per tema e crea una spec per ogni tema."*
|
|
44
|
+
|
|
45
|
+
**Pilota automatico notturno.** Lascialo in esecuzione con l'app nella barra di sistema e torna a un resoconto:
|
|
46
|
+
> *"Ecco 12 idee. Trasforma ognuna in una spec, lanciale tre alla volta sui rail, tieni d'occhio ogni job e domani dammi un riepilogo di cosa è finito, cosa è fallito e quanto è costato."*
|
|
47
|
+
|
|
48
|
+
Tieni **Distruttivo** disattivato e potrà lavorare tutta la notte senza mai eliminare nulla.
|
|
49
|
+
|
|
50
|
+
**Su tutti i tuoi progetti.** Qualcosa che la dashboard da sola non fa:
|
|
51
|
+
> *"Controlla tutti i miei progetti. Dimmi quali hanno spec nel backlog e nessun rail in esecuzione, e avvia in ognuno quella a priorità più alta."*
|
|
52
|
+
|
|
53
|
+
**Senza mani mentre programmi.** Pilota Specrails dal tuo editor o a voce, senza cambiare finestra:
|
|
54
|
+
> *"Lancia il rail 0 in modalità ultracode con Opus per il ticket #42 e dimmi quando ha finito."*
|
|
55
|
+
|
|
56
|
+
**Chiedi di costi e cronologia.** Le tue analisi, in linguaggio naturale:
|
|
57
|
+
> *"Dove ho speso di più in AI questa settimana, per progetto e per modello? Mostrami i cinque ticket più costosi."*
|
|
58
|
+
|
|
59
|
+
**Il tuo standup quotidiano.**
|
|
60
|
+
> *"Scrivi il mio standup: quali rail hanno girato ieri, cosa è stato completato, cosa è fallito, costo totale — come elenco puntato pronto da incollare in Slack."*
|
|
61
|
+
|
|
62
|
+
**Capire il codice.** Senza bisogno di un editor:
|
|
63
|
+
> *"Quali file ha toccato il ticket #38? Riassumi in una riga cosa è cambiato in ognuno."*
|
|
64
|
+
|
|
65
|
+
Dato che il tuo assistente legge per prima la guida integrata, raramente devi nominare strumenti o spec — descrivi il risultato e lui calcola le chiamate da fare.
|
|
66
|
+
|
|
67
|
+
## Qualche cosa da sapere
|
|
68
|
+
|
|
69
|
+
- **Specrails deve essere in esecuzione.** Il server MCP vive dentro l'app, quindi il tuo assistente può raggiungerlo solo finché Specrails è aperto. Grazie all'icona nella barra di sistema, chiudere la finestra lo mantiene attivo in background — solo **Esci** dall'icona (barra dei menu su Mac / barra di sistema su Windows) lo ferma davvero.
|
|
70
|
+
- **Le azioni lunghe trasmettono in streaming.** Lanciare un rail o generare una spec restituisce subito il controllo e termina in background; il tuo assistente può "tenerlo d'occhio" e riferirti quando si conclude.
|
|
71
|
+
- **Sicurezza.** L'MCP usa un proprio token di accesso, separato da tutto il resto, e ascolta soltanto sulla tua macchina (loopback). Puoi copiare o rigenerare quel token in qualsiasi momento dal pannello.
|
|
72
|
+
- **Non esposto (v1).** Per sicurezza, alcune capacità ad alto rischio sono volutamente escluse: eseguire comandi shell nel terminale, il browser integrato, la modifica dei file nell'app e l'installazione dei prerequisiti di sistema. Tutto ciò che *gestisce* Specrails è disponibile; l'accesso diretto alla macchina no.
|
|
73
|
+
|
|
74
|
+
Puoi disattivare l'MCP in qualsiasi momento dallo stesso pannello — il tuo assistente perde semplicemente l'accesso e nient'altro cambia.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# 任意の AI から Specrails を操作する(MCP サーバー)
|
|
2
|
+
|
|
3
|
+
Specrails は、[Model Context Protocol](https://modelcontextprotocol.io) を話す任意の AI アシスタント(Claude Desktop、Claude Code、Cursor、Cline、あるいは自作のエージェント)に対して、**自分自身**を公開できます。これをオンにしてアシスタントを Specrails に向ければ、チャットするだけでアプリ全体を操作できます。たとえば *「プロジェクト一覧を見せて」「API プロジェクトにソーシャルログインのスペックを作って」「レール 0 を起動して、終わったら教えて」「今週はいくら使った?」* といった具合です。あなたがあちこちクリックする代わりに、アシスタントが裏側で Specrails のツールを呼び出します。
|
|
4
|
+
|
|
5
|
+
これは、プラグインや「My approved MCPs」機能とは逆方向の働きをします。それらは Specrails が*ほかの* MCP サーバーを*使う*ためのものですが、こちらは他のアプリに **Specrails** を使わせるためのものです。
|
|
6
|
+
|
|
7
|
+
## オンにする
|
|
8
|
+
|
|
9
|
+
これは**デフォルトでオフ**です。**Settings ▸ MCP** を開いて **Enable MCP** を切り替えてください。それだけです — サーバーは即座に起動し、再起動は不要です。
|
|
10
|
+
|
|
11
|
+
外部の AI がどんな操作をできるかは、一連の権限ティアで*あなた*がコントロールできます。
|
|
12
|
+
|
|
13
|
+
| ティア | 許可される内容 | デフォルト |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Read**(読み取り) | プロジェクト、スペック、ジョブ、アナリティクスなどの一覧表示と確認 | 常時オン(MCP が有効なとき) |
|
|
16
|
+
| **Write**(書き込み) | スペックの作成・編集、設定やレール構成の変更 | オフ — 任意で有効化 |
|
|
17
|
+
| **AI-spawn**(AI 起動) | AI を走らせて**お金がかかる**操作(レールの起動、スペックの生成、チャットターンの送信) | オフ — 任意で有効化 |
|
|
18
|
+
| **Destructive**(破壊的操作) | プロジェクト/スペック/ジョブの削除、実行中の作業の停止 | オフ — 任意で有効化 |
|
|
19
|
+
|
|
20
|
+
無効なティアに該当する操作をアシスタントが試みると、Specrails はそれを拒否し、どのティアをオンにすればよいかを明確なメッセージで知らせます。ですから、まずは読み取り専用から始め、必要なものだけをぴったり開放できます。
|
|
21
|
+
|
|
22
|
+
## アシスタントを接続する
|
|
23
|
+
|
|
24
|
+
パネルには、そのまま貼り付けられる構成ブロックが表示されます。最もシンプルで汎用的な方法は、同梱の**ブリッジ**(`specrails-mcp`)を使うことです。アシスタントがこれを実行し、ブリッジがあなたに代わって Specrails に中継します。ブリッジはアクセストークンをローカルで読み取るので、**トークンがアシスタントの設定に現れることはありません**。
|
|
25
|
+
|
|
26
|
+
Claude Desktop や Cursor のようなクライアントでは、設定は次のようになります。
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "mcpServers": { "specrails": { "command": "specrails-mcp" } } }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
リモートの HTTP MCP サーバーに対応しているクライアントなら、代わりにパネルのトークンを使って `http://127.0.0.1:4200/api/mcp` を直接指すこともできます。
|
|
33
|
+
|
|
34
|
+
接続が完了すると、アシスタントにはアプリ全体をカバーする約 **18 個のツール**が見えるようになります — プロジェクト、スペック、レールとジョブ、チャット/Explore、エージェント、プラグイン、Jira、ループ、コードエクスプローラー、アナリティクス、設定など。さらに、最初に読み込む組み込みの**ガイド**ツールも含まれているので、あなたが何も説明しなくても、アシスタントは Specrails の仕組みを理解できます。
|
|
35
|
+
|
|
36
|
+
## これで何ができるか
|
|
37
|
+
|
|
38
|
+
アシスタントを接続したあとの、いくつかのレシピを紹介します。まずは **Read**(読み取り)をオンにして始め、実際に作業を作成・起動させたくなったら **Write**(書き込み)と **AI-spawn**(AI 起動)をオンにしてください。
|
|
39
|
+
|
|
40
|
+
**ほかのツールにある作業をスペックに変える。** アシスタントが GitHub、Jira、Gmail、Slack にも接続されていれば、その作業をあなたの代わりに Specrails へ持ち込めます。
|
|
41
|
+
> *「今週の 'bug' ラベルの付いた未解決の GitHub Issue を取り込んで、API プロジェクトにそれぞれスペックを作って、起動して。」*
|
|
42
|
+
>
|
|
43
|
+
> *「最新の顧客フィードバックのメールを読んで、テーマごとにまとめて、テーマごとにスペックを 1 つずつ作って。」*
|
|
44
|
+
|
|
45
|
+
**夜通しのオートパイロット。** アプリをトレイに置いたまま走らせておけば、戻ってきたときにはレポートができています。
|
|
46
|
+
> *「アイデアが 12 個あります。それぞれをスペックにして、レールで 3 つずつ起動して、すべてのジョブを見守って、明日になったら何が完了して、何が失敗して、いくらかかったかをまとめて教えて。」*
|
|
47
|
+
|
|
48
|
+
**Destructive**(破壊的操作)をオフにしておけば、何ひとつ削除することなく一晩中ビルドを続けられます。
|
|
49
|
+
|
|
50
|
+
**すべてのプロジェクトをまたいで。** ダッシュボードだけでは単独でできないことです。
|
|
51
|
+
> *「私のプロジェクトを全部チェックして。バックログにスペックがあるのにレールが 1 つも動いていないものを教えて、それぞれで最も優先度の高いものを 1 つ起動して。」*
|
|
52
|
+
|
|
53
|
+
**コーディング中も手を止めずに。** エディタからでも音声でも、ウィンドウを切り替えずに Specrails を操作できます。
|
|
54
|
+
> *「チケット #42 のためにレール 0 を Opus で ultracode モードで起動して、終わったら教えて。」*
|
|
55
|
+
|
|
56
|
+
**コストと履歴について尋ねる。** あなたのアナリティクスを、普通の言葉で。
|
|
57
|
+
> *「今週、AI に一番お金を使ったのはどこ? プロジェクト別とモデル別で。最もコストのかかったチケットを 5 つ見せて。」*
|
|
58
|
+
|
|
59
|
+
**毎日のスタンドアップ。**
|
|
60
|
+
> *「私のスタンドアップを書いて。昨日どのレールが走って、何が完了して、何が失敗して、合計コストはいくらか — Slack にそのまま貼れる箇条書きで。」*
|
|
61
|
+
|
|
62
|
+
**コードを理解する。** エディタは不要です。
|
|
63
|
+
> *「チケット #38 がどのファイルに触れたか教えて。それぞれ何が変わったかを 1 行で要約して。」*
|
|
64
|
+
|
|
65
|
+
アシスタントはまず組み込みのガイドを読むので、ツールやスペックの名前をあなたが指定する必要はめったにありません — 望む結果を伝えれば、アシスタントが呼び出しを組み立ててくれます。
|
|
66
|
+
|
|
67
|
+
## 知っておきたいこと
|
|
68
|
+
|
|
69
|
+
- **Specrails が起動している必要があります。** MCP サーバーはアプリの内部に存在するため、アシスタントが到達できるのは Specrails が開いている間だけです。トレイのおかげで、ウィンドウを閉じてもバックグラウンドで動き続けます — 実際に停止させるには、トレイ(Mac のメニューバー/Windows のシステムトレイ)から **Exit** を選ぶ必要があります。
|
|
70
|
+
- **長い操作はストリームされます。** レールの起動やスペックの生成はすぐに戻り、バックグラウンドで完了します。アシスタントはそれを「見守り」、決着したときに報告してくれます。
|
|
71
|
+
- **セキュリティ。** MCP は他のすべてとは分離された専用のアクセストークンを使い、あなた自身のマシン上(ループバック)でのみ待ち受けます。このトークンはパネルからいつでもコピー、または再生成できます。
|
|
72
|
+
- **公開されていないもの(v1)。** 安全のため、いくつかの高リスクな機能は意図的に除外されています。ターミナルでのシェルコマンド実行、組み込みブラウザ、アプリ内でのファイル編集、システム前提条件のインストールなどです。Specrails を*管理する*ものはすべて利用できますが、マシンへの生のアクセスはできません。
|
|
73
|
+
|
|
74
|
+
MCP は同じパネルからいつでも無効にできます — アシスタントはアクセスを失うだけで、それ以外は何も変わりません。
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Controlar o Specrails a partir de qualquer IA (servidor MCP)
|
|
2
|
+
|
|
3
|
+
O Specrails pode expor-se **a si próprio** a qualquer assistente de IA que fale o [Model Context Protocol](https://modelcontextprotocol.io) — Claude Desktop, Claude Code, Cursor, Cline ou o seu próprio agente. Ative-o, aponte o seu assistente para o Specrails e poderá conduzir a app inteira conversando: *"lista os meus projetos", "cria uma spec para login social no projeto da API", "lança o rail 0 e avisa-me quando terminar", "quanto gastei esta semana?"*. O seu assistente invoca as ferramentas do Specrails nos bastidores em vez de ser você a clicar por toda a parte.
|
|
4
|
+
|
|
5
|
+
Este é o sentido oposto das funcionalidades de plugins e "Os meus MCPs aprovados": essas permitem que o Specrails *use* outros servidores MCP; esta permite que outras apps usem o **Specrails**.
|
|
6
|
+
|
|
7
|
+
## Como ativar
|
|
8
|
+
|
|
9
|
+
Está **desativado por predefinição**. Abra **Definições ▸ MCP** e ligue o **Enable MCP**. É só isso — o servidor arranca imediatamente, sem reiniciar.
|
|
10
|
+
|
|
11
|
+
Mantém o controlo *do que* uma IA externa pode fazer através de um conjunto de níveis de permissão:
|
|
12
|
+
|
|
13
|
+
| Nível | O que permite | Predefinição |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Leitura** | Listar e inspecionar projetos, specs, trabalhos, análises… | Sempre ativo (quando o MCP está ativado) |
|
|
16
|
+
| **Escrita** | Criar e editar specs, alterar definições e configuração de rails | Desativado — ativação opcional |
|
|
17
|
+
| **Invocação de IA** | Ações que correm uma IA e **custam dinheiro** (lançar um rail, gerar uma spec, enviar um turno de chat) | Desativado — ativação opcional |
|
|
18
|
+
| **Destrutivo** | Eliminar projetos/specs/trabalhos, parar trabalho em curso | Desativado — ativação opcional |
|
|
19
|
+
|
|
20
|
+
Se o seu assistente tentar algo abrangido por um nível desativado, o Specrails recusa com uma mensagem clara que lhe diz qual o nível a ativar. Assim, pode começar apenas em modo de leitura e abrir exatamente aquilo de que precisa.
|
|
21
|
+
|
|
22
|
+
## Ligar o seu assistente
|
|
23
|
+
|
|
24
|
+
O painel mostra um bloco de configuração pronto a colar. O caminho mais simples e universal é a **ponte** (bridge) incorporada (`specrails-mcp`): o seu assistente executa-a e ela retransmite para o Specrails por si. A ponte lê o token de acesso localmente, por isso **o token nunca aparece na configuração do seu assistente**.
|
|
25
|
+
|
|
26
|
+
Num cliente como o Claude Desktop ou o Cursor, a configuração tem este aspeto:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "mcpServers": { "specrails": { "command": "specrails-mcp" } } }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Os clientes que suportam servidores MCP HTTP remotos podem, em alternativa, apontar diretamente para `http://127.0.0.1:4200/api/mcp` com o token do painel.
|
|
33
|
+
|
|
34
|
+
Uma vez ligado, o seu assistente vê cerca de **18 ferramentas** que cobrem a app inteira — projetos, specs, rails e trabalhos, chat/Explore, agentes, plugins, Jira, loops, o explorador de código, análises, definições — mais uma ferramenta de **guia** incorporada que lê primeiro, para que perceba como o Specrails funciona sem que lhe explique seja o que for.
|
|
35
|
+
|
|
36
|
+
## O que pode fazer com ele
|
|
37
|
+
|
|
38
|
+
Algumas receitas assim que o seu assistente estiver ligado. Comece com a **Leitura** ativa e, depois, ligue a **Escrita** e a **Invocação de IA** quando quiser que ele crie e lance trabalho de verdade.
|
|
39
|
+
|
|
40
|
+
**Transforme em specs o trabalho das suas outras ferramentas.** Se o seu assistente também tiver o GitHub, o Jira, o Gmail ou o Slack ligados, ele pode trazer esse trabalho para o Specrails por si:
|
|
41
|
+
> *"Pega nas issues abertas do GitHub desta semana com a etiqueta 'bug', cria uma spec para cada uma no projeto da API e lança-as."*
|
|
42
|
+
>
|
|
43
|
+
> *"Lê os meus emails de feedback de clientes mais recentes, agrupa-os por tema e cria uma spec por tema."*
|
|
44
|
+
|
|
45
|
+
**Piloto automático durante a noite.** Deixe-o a correr com a app no tabuleiro (tray) e volte para encontrar um relatório:
|
|
46
|
+
> *"Aqui estão 12 ideias. Transforma cada uma numa spec, lança-as três de cada vez pelos rails, vigia todos os trabalhos e amanhã dá-me um resumo do que terminou, do que falhou e do que custou."*
|
|
47
|
+
|
|
48
|
+
Mantenha o **Destrutivo** desativado e ele pode trabalhar a noite toda sem nunca eliminar nada.
|
|
49
|
+
|
|
50
|
+
**Em todos os seus projetos.** Algo que o painel não faz por si só:
|
|
51
|
+
> *"Verifica todos os meus projetos. Diz-me quais têm specs no backlog e nenhum rail a correr, e arranca o de prioridade mais alta em cada um."*
|
|
52
|
+
|
|
53
|
+
**Sem usar as mãos enquanto programa.** Conduza o Specrails a partir do seu editor ou por voz, sem trocar de janela:
|
|
54
|
+
> *"Lança o rail 0 em modo ultracode com o Opus para o ticket #42 e avisa-me quando estiver pronto."*
|
|
55
|
+
|
|
56
|
+
**Pergunte sobre custos e histórico.** As suas análises, em linguagem simples:
|
|
57
|
+
> *"Onde gastei mais em IA esta semana, por projeto e por modelo? Mostra-me os cinco tickets mais caros."*
|
|
58
|
+
|
|
59
|
+
**O seu standup diário.**
|
|
60
|
+
> *"Escreve o meu standup: que rails correram ontem, o que terminou, o que falhou, o custo total — em tópicos prontos a colar no Slack."*
|
|
61
|
+
|
|
62
|
+
**Perceba o código.** Sem precisar de editor:
|
|
63
|
+
> *"Que ficheiros é que o ticket #38 tocou? Resume numa linha o que mudou em cada um."*
|
|
64
|
+
|
|
65
|
+
Como o seu assistente lê primeiro o guia incorporado, raramente precisa de nomear ferramentas ou specs — descreva o resultado e ele descobre as chamadas certas.
|
|
66
|
+
|
|
67
|
+
## Algumas coisas a saber
|
|
68
|
+
|
|
69
|
+
- **O Specrails tem de estar a correr.** O servidor MCP vive dentro da app, por isso o seu assistente só lhe consegue chegar enquanto o Specrails está aberto. Graças ao tabuleiro (tray), fechar a janela mantém-no a correr em segundo plano — só o **Exit** a partir do tabuleiro (barra de menus no Mac / área de notificação no Windows) é que efetivamente o para.
|
|
70
|
+
- **As ações longas transmitem em fluxo.** Lançar um rail ou gerar uma spec devolve resultado de imediato e termina em segundo plano; o seu assistente pode "vigiá-lo" e relatar quando estabilizar.
|
|
71
|
+
- **Segurança.** O MCP usa o seu próprio token de acesso, separado de tudo o resto, e escuta apenas na sua própria máquina (loopback). Pode copiar ou regenerar esse token a qualquer momento a partir do painel.
|
|
72
|
+
- **Não exposto (v1).** Por segurança, algumas capacidades de risco elevado são deliberadamente deixadas de fora: correr comandos de shell no terminal, o browser embutido, a edição de ficheiros dentro da app e a instalação de pré-requisitos do sistema. Tudo o que *gere* o Specrails está disponível; o acesso direto à máquina não está.
|
|
73
|
+
|
|
74
|
+
Pode desativar o MCP a qualquer momento a partir do mesmo painel — o seu assistente simplesmente perde o acesso, e mais nada muda.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# 从任意 AI 操控 Specrails(MCP 服务器)
|
|
2
|
+
|
|
3
|
+
Specrails 可以把**自己**暴露给任何会说 [Model Context Protocol](https://modelcontextprotocol.io) 的 AI 助手——Claude Desktop、Claude Code、Cursor、Cline,或者你自己的 agent。打开这个功能,把你的助手指向 Specrails,你就能靠聊天来驱动整个应用:*「列出我的项目」「在 API 项目里为社交登录创建一份规格」「启动 rail 0,跑完了告诉我」「我这周花了多少钱?」*。你的助手会在幕后调用 Specrails 的工具,而不用你点来点去。
|
|
4
|
+
|
|
5
|
+
这和插件以及「My approved MCPs」功能的方向正好相反:那些功能是让 Specrails 去*使用*别的 MCP 服务器;而这个功能是让别的应用来使用 **Specrails**。
|
|
6
|
+
|
|
7
|
+
## 打开它
|
|
8
|
+
|
|
9
|
+
它**默认是关闭的**。打开 **Settings ▸ MCP**,把 **Enable MCP** 拨开。就这样——服务器会立即启动,无需重启。
|
|
10
|
+
|
|
11
|
+
通过一组权限层级,你可以始终掌控外部 AI 能透过它做*哪些*事:
|
|
12
|
+
|
|
13
|
+
| 层级 | 它允许什么 | 默认 |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Read** | 列出并查看项目、规格、任务、分析数据等等…… | 始终开启(在 MCP 启用时) |
|
|
16
|
+
| **Write** | 创建和编辑规格、修改设置与 rail 配置 | 关闭——需手动开启 |
|
|
17
|
+
| **AI-spawn** | 会运行 AI 并**产生费用**的操作(启动一条 rail、生成一份规格、发送一次聊天) | 关闭——需手动开启 |
|
|
18
|
+
| **Destructive** | 删除项目 / 规格 / 任务,停止正在运行的工作 | 关闭——需手动开启 |
|
|
19
|
+
|
|
20
|
+
如果你的助手试图做某个被禁用层级所涵盖的事,Specrails 会拒绝,并给出一条清晰的提示,告诉你该打开哪个层级。所以你可以先从只读开始,再精确地放开你需要的部分。
|
|
21
|
+
|
|
22
|
+
## 连接你的助手
|
|
23
|
+
|
|
24
|
+
面板会显示一段可直接粘贴的配置块。最简单、最通用的方式是使用内置的**桥接**(`specrails-mcp`):你的助手运行它,由它代你转发到 Specrails。这个桥接会在本地读取访问令牌,所以**令牌绝不会出现在你助手的配置里**。
|
|
25
|
+
|
|
26
|
+
在像 Claude Desktop 或 Cursor 这样的客户端里,配置看起来是这样:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "mcpServers": { "specrails": { "command": "specrails-mcp" } } }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
支持远程 HTTP MCP 服务器的客户端,则可以直接指向 `http://127.0.0.1:4200/api/mcp`,并配上面板里的令牌。
|
|
33
|
+
|
|
34
|
+
一旦连上,你的助手会看到大约 **18 个工具**,覆盖整个应用——项目、规格、rail 和任务、聊天 / Explore、agent、插件、Jira、loop、代码浏览器、分析、设置——外加一个内置的**指南(guide)**工具,它会先读这个工具,从而无需你解释任何东西就能理解 Specrails 是怎么运作的。
|
|
35
|
+
|
|
36
|
+
## 你能用它做些什么
|
|
37
|
+
|
|
38
|
+
连上助手后,这里有几个上手的小配方。先打开 **Read**,等你真想让它创建并启动工作时,再打开 **Write** 和 **AI-spawn**。
|
|
39
|
+
|
|
40
|
+
**把你其他工具里的工作变成规格。** 如果你的助手还连着 GitHub、Jira、Gmail 或 Slack,它就能替你把这些工作搬进 Specrails:
|
|
41
|
+
> *「把本周打了 'bug' 标签的开放 GitHub issue 拿过来,在 API 项目里为每个创建一份规格,然后启动它们。」*
|
|
42
|
+
>
|
|
43
|
+
> *「读一下我最近的客户反馈邮件,按主题分组,每个主题创建一份规格。」*
|
|
44
|
+
|
|
45
|
+
**通宵自动驾驶。** 让应用待在托盘里跑着,回来时就能拿到一份报告:
|
|
46
|
+
> *「这里有 12 个点子。把每个变成一份规格,在 rail 上每次三个地启动它们,盯着每一个任务,明天给我一份总结:哪些完成了、哪些失败了、各花了多少钱。」*
|
|
47
|
+
|
|
48
|
+
只要让 **Destructive** 保持关闭,它就能跑一整夜而绝不会删掉任何东西。
|
|
49
|
+
|
|
50
|
+
**横跨你所有的项目。** 这是 dashboard 自己做不到的事:
|
|
51
|
+
> *「检查我所有的项目。告诉我哪些在 backlog 里有规格却没有 rail 在跑,并在每个项目里启动优先级最高的那一个。」*
|
|
52
|
+
|
|
53
|
+
**写代码时不用动手。** 从你的编辑器里或用语音来驱动 Specrails,无需切换窗口:
|
|
54
|
+
> *「用 Opus、以 ultracode 模式在 rail 0 上为任务 #42 启动一条 rail,跑完了告诉我。」*
|
|
55
|
+
|
|
56
|
+
**询问费用和历史。** 用大白话查你的分析数据:
|
|
57
|
+
> *「我这周在 AI 上花得最多的是哪里,按项目、按模型分别列出来?给我看最贵的五个任务。」*
|
|
58
|
+
|
|
59
|
+
**你的每日站会。**
|
|
60
|
+
> *「帮我写站会汇报:昨天哪些 rail 跑了、哪些完成了、哪些失败了、总花费多少——做成可以直接粘进 Slack 的要点列表。」*
|
|
61
|
+
|
|
62
|
+
**读懂代码。** 不需要编辑器:
|
|
63
|
+
> *「任务 #38 改动了哪些文件?用一句话总结每个文件改了什么。」*
|
|
64
|
+
|
|
65
|
+
因为你的助手会先读那份内置指南,所以你很少需要点名具体的工具或规格——描述你想要的结果,它就能算出该调用哪些工具。
|
|
66
|
+
|
|
67
|
+
## 几点须知
|
|
68
|
+
|
|
69
|
+
- **Specrails 必须在运行。** MCP 服务器活在应用内部,所以只有在 Specrails 开着的时候,你的助手才能连上它。多亏了托盘,关掉窗口它仍会在后台运行——只有从托盘(Mac 菜单栏 / Windows 系统托盘)选择 **Exit**,才会真正把它停掉。
|
|
70
|
+
- **长任务会流式返回。** 启动一条 rail 或生成一份规格会立即返回,并在后台完成;你的助手可以「盯着」它,等它尘埃落定再回来报告。
|
|
71
|
+
- **安全。** MCP 使用它自己专属的访问令牌,与其他一切都分开,并且只监听你自己的机器(本地回环)。你随时可以从面板里复制或重新生成那个令牌。
|
|
72
|
+
- **未暴露的部分(v1)。** 出于安全考虑,有几项高风险能力被刻意排除在外:在终端里执行 shell 命令、内嵌浏览器、应用内文件编辑,以及安装系统先决条件。一切*管理* Specrails 的能力都开放可用;对机器的原始访问则不开放。
|
|
73
|
+
|
|
74
|
+
你随时可以从同一个面板禁用 MCP——你的助手只是会失去访问权,其余一切照旧。
|