Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.
An agent can reach Little Spaces in two ways: through hooks that setup installs on your computer, or through Little Spaces’ MCP server. Both let an agent report and get your answers. The difference is that hooks know about a session without the agent doing anything, while the MCP server only knows what the agent chooses to tell it.
Hooks are small commands that an app runs by itself at moments in a session: when it starts, when you send a message, when a turn ends, when it closes. The prompt on the Agents page installs Little Spaces’ hooks in each app on your computer, in that app’s own user-level files.
MCP (the Model Context Protocol) is a standard way for an AI app to use tools from a server. An app connected to Little Spaces’ MCP server gets tools such as report_activity and get_answers, and uses them when it decides to.
Session shows under Runs (running, waiting, stalled, ended)
Yes, automatically, from the app’s own events.
Only if the agent sends its own liveness signals (signal_run). Reports alone appear in Activity.
Told how to report
Yes, by the text each session gets when it starts.
Only by the server’s instructions and tool descriptions, so it depends on the agent reading them.
Reports and asks
Yes (spaces report).
Yes (report_activity).
Gets your answers
Brought to the session by its hooks, at the end of a turn or with your next message, depending on the app. An idle Claude Code session can be woken. Pi and OpenCode v2 are built to be woken too, but this hasn’t yet been seen working in a real session.
Only when the agent next calls get_answers. It can’t be woken.
Reminded of open asks when you send a message
Yes, in apps whose hooks see your messages.
No, though its tool descriptions tell it to report when you answer in the session.
Nudged when it seems to wait on you without asking
Yes, in Claude Code and Codex.
No.
Reads activity and asks questions about it
Yes (spaces activity, spaces ask).
Yes (get_activity, ask_work).
Works on to-dos you’ve approved
No. The hooks’ sign-in can only read and report.
Yes, if you allow Work on tasks you’ve approved when you approve it.
Identity
One per computer, such as “Hooks on laptop”. Each report says which app sent it.
One per connection, so each app you connect is an agent of its own.
Where it works
Agents on a Mac or Linux computer you control.
Anywhere, including hosted assistants with nothing to install.
The MCP server is at https://api.littlespaces.dev/mcp, the URL the Agents page shows under Connect a hosted assistant. Add it once per app on each computer. For example:
claude mcp add --transport http little-spaces https://api.littlespaces.dev/mcp
The app registers itself and opens an approval page in your browser. There you name the agent and decide whether it may Work on tasks you’ve approved, which is on by default; turn it off for an agent that should only report and ask you questions. Then choose Allow. The app stores and renews its own credentials.Sign-in can’t start inside a non-interactive session, so run the login once in a terminal.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Little Spaces","description":"Little Spaces shows what your coding agents are doing and what they need from you, in one place.","colors":{"primary":"#127a5b","light":"#4cc39b","dark":"#0e6b50"},"logo":{"light":"https://mintcdn.com/littlespaces/FIhPI55jDA-G_nCb/logo/light.svg?fit=max\u0026auto=format\u0026n=FIhPI55jDA-G_nCb\u0026q=85\u0026s=a71097828083bb8e2af31423726e242c","dark":"https://mintcdn.com/littlespaces/FIhPI55jDA-G_nCb/logo/dark.svg?fit=max\u0026auto=format\u0026n=FIhPI55jDA-G_nCb\u0026q=85\u0026s=ea2ac3cb5b5c11a4a78b0bb6e98aab6f"},"favicon":"https://mintcdn.com/littlespaces/FIhPI55jDA-G_nCb/favicon.svg?fit=max\u0026auto=format\u0026n=FIhPI55jDA-G_nCb\u0026q=85\u0026s=c9e5d6b1f12e90707efe99b01a32c833","navbar":{"links":[],"primary":{"type":"button","label":"Sign in","href":"https://littlespaces.dev"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"littlespaces","hasAudioNarration":false,"actualSubdomain":"littlespaces","customDomains":[],"gitSource":{"type":"artifacts","owner":"prod","repo":"6ae45862187ae8fd10dd999f","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"","_id":"6ae458a1bbaa0c5261bb1cf7"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae492a7dd29f540f3532532","collectionId":"6c2640f2-4189-4e27-844b-f7c2b643cb16","liveDeploymentHistoryId":"6ae492a7dd29f540f3532532","schemaVersion":"v3"},"entitlements":{},"buildId":"6ae494ec9dfdf0efb936d9c7","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Reference","count":4},{"language":"default","tag":"Connecting agents","count":3},{"language":"default","tag":"How it works","count":3},{"language":"default","tag":"Get started","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"connecting-agents/hooks-vs-mcp","slug":"/connecting-agents/hooks-vs-mcp","pageMetadata":{"title":"Hooks or MCP: two ways to connect an agent","sidebarTitle":"Hooks or MCP","description":"Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.","keywords":["hooks","MCP","Model Context Protocol","connect","identity","runs"],"href":"/connecting-agents/hooks-vs-mcp"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`An agent can reach Little Spaces in two ways: through `,_jsx(_components.strong,{children:`hooks`}),` that setup installs on your computer, or through Little Spaces’ `,_jsx(_components.strong,{children:`MCP server`}),`. Both let an agent report and get your answers. The difference is that hooks know about a session without the agent doing anything, while the MCP server only knows what the agent chooses to tell it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-two-words`,children:`The two words`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Hooks`}),` are small commands that an app runs by itself at moments in a session: when it starts, when you send a message, when a turn ends, when it closes. The prompt on the `,_jsx(_components.strong,{children:`Agents`}),` page installs Little Spaces’ hooks in each app on your computer, in that app’s own user-level files.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`MCP`}),` (the Model Context Protocol) is a standard way for an AI app to use tools from a server. An app connected to Little Spaces’ MCP server gets tools such as `,_jsx(_components.code,{children:`report_activity`}),` and `,_jsx(_components.code,{children:`get_answers`}),`, and uses them when it decides to.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-they-compare`,children:`How they compare`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`Hooks (the Agents page prompt)`}),_jsx(_components.th,{children:`MCP server`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Session shows under Runs`}),` (running, waiting, stalled, ended)`]}),_jsx(_components.td,{children:`Yes, automatically, from the app’s own events.`}),_jsxs(_components.td,{children:[`Only if the agent sends its own liveness signals (`,_jsx(_components.code,{children:`signal_run`}),`). Reports alone appear in Activity.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Told how to report`})}),_jsx(_components.td,{children:`Yes, by the text each session gets when it starts.`}),_jsx(_components.td,{children:`Only by the server’s instructions and tool descriptions, so it depends on the agent reading them.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Reports and asks`})}),_jsxs(_components.td,{children:[`Yes (`,_jsx(_components.code,{children:`spaces report`}),`).`]}),_jsxs(_components.td,{children:[`Yes (`,_jsx(_components.code,{children:`report_activity`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Gets your answers`})}),_jsx(_components.td,{children:`Brought to the session by its hooks, at the end of a turn or with your next message, depending on the app. An idle Claude Code session can be woken. Pi and OpenCode v2 are built to be woken too, but this hasn’t yet been seen working in a real session.`}),_jsxs(_components.td,{children:[`Only when the agent next calls `,_jsx(_components.code,{children:`get_answers`}),`. It can’t be woken.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Reminded of open asks when you send a message`})}),_jsx(_components.td,{children:`Yes, in apps whose hooks see your messages.`}),_jsx(_components.td,{children:`No, though its tool descriptions tell it to report when you answer in the session.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Nudged when it seems to wait on you without asking`})}),_jsx(_components.td,{children:`Yes, in Claude Code and Codex.`}),_jsx(_components.td,{children:`No.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Reads activity and asks questions about it`})}),_jsxs(_components.td,{children:[`Yes (`,_jsx(_components.code,{children:`spaces activity`}),`, `,_jsx(_components.code,{children:`spaces ask`}),`).`]}),_jsxs(_components.td,{children:[`Yes (`,_jsx(_components.code,{children:`get_activity`}),`, `,_jsx(_components.code,{children:`ask_work`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Works on to-dos you’ve approved`})}),_jsx(_components.td,{children:`No. The hooks’ sign-in can only read and report.`}),_jsxs(_components.td,{children:[`Yes, if you allow `,_jsx(_components.strong,{children:`Work on tasks you’ve approved`}),` when you approve it.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Identity`})}),_jsx(_components.td,{children:`One per computer, such as “Hooks on laptop”. Each report says which app sent it.`}),_jsx(_components.td,{children:`One per connection, so each app you connect is an agent of its own.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Where it works`})}),_jsx(_components.td,{children:`Agents on a Mac or Linux computer you control.`}),_jsx(_components.td,{children:`Anywhere, including hosted assistants with nothing to install.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`when-to-use-which`,children:`When to use which`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use hooks`}),` for any coding agent on your own computers. It is the default: you get each session under Runs, and your answers delivered.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use MCP`}),` for a `,_jsx(_components.a,{href:`/connecting-agents/hosted-assistants`,children:`hosted assistant`}),`, or for an app that needs an identity of its own or permission to work on to-dos you’ve approved.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Connecting one app both ways gives it two identities. Its MCP reports then don’t join the session its hooks created under Runs.`})}),`\n`,_jsx(Heading,{level:`2`,id:`connect-an-app-over-mcp`,children:`Connect an app over MCP`}),`\n`,_jsxs(_components.p,{children:[`The MCP server is at `,_jsx(_components.code,{children:`https://api.littlespaces.dev/mcp`}),`, the URL the `,_jsx(_components.strong,{children:`Agents`}),` page shows under `,_jsx(_components.strong,{children:`Connect a hosted assistant`}),`. Add it once per app on each computer. For example:`]}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Claude Code`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`claude`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --transport`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` little-spaces`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.littlespaces.dev/mcp`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Codex`,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` little-spaces`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.littlespaces.dev/mcp`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` little-spaces`})]}),`\n`]})})})]}),`\n`,_jsxs(_components.p,{children:[`The app registers itself and opens an approval page in your browser. There you name the agent and decide whether it may `,_jsx(_components.strong,{children:`Work on tasks you’ve approved`}),`, which is on by default; turn it off for an agent that should only report and ask you questions. Then choose `,_jsx(_components.strong,{children:`Allow`}),`. The app stores and renews its own credentials.`]}),`\n`,_jsx(_components.p,{children:`Sign-in can’t start inside a non-interactive session, so run the login once in a terminal.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Hooks or MCP: two ways to connect an agent","sidebarTitle":"Hooks or MCP","description":"Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.","keywords":["hooks","MCP","Model Context Protocol","connect","identity","runs"],"href":"/connecting-agents/hooks-vs-mcp"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The two words","slug":"the-two-words","depth":2,"children":[]},{"title":"How they compare","slug":"how-they-compare","depth":2,"children":[]},{"title":"When to use which","slug":"when-to-use-which","depth":2,"children":[]},{"title":"Connect an app over MCP","slug":"connect-an-app-over-mcp","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"littlespaces","siteName":"Little Spaces","title":"Hooks or MCP: two ways to connect an agent - Little Spaces","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T12:50:50.421Z","originalFileLocation":"connecting-agents/hooks-vs-mcp.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Little Spaces\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Hooks or MCP: two ways to connect an agent - Little Spaces\">\u003cmeta data-mint-head property=\"og:description\" content=\"Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Little Spaces\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://littlespaces.mintlify.app/_mintlify/api/og/v2?division=Connecting+agents\u0026amp;title=Hooks+or+MCP%3A+two+ways+to+connect+an+agent\u0026amp;description=Compare+the+two+ways+to+connect+an+agent+to+Little+Spaces%2C+hooks+installed+on+your+computer+and+the+remote+MCP+server%2C+and+choose+the+right+one+for+each+app.\u0026amp;theme=65d4444ba4e4b19ed60f3be7\u0026amp;signature=5c89c43ea13c4242254f6522d6a5521ca2e36c693ff331922279a22d817c6f32\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Hooks or MCP: two ways to connect an agent - Little Spaces\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://littlespaces.mintlify.app/_mintlify/api/og/v2?division=Connecting+agents\u0026amp;title=Hooks+or+MCP%3A+two+ways+to+connect+an+agent\u0026amp;description=Compare+the+two+ways+to+connect+an+agent+to+Little+Spaces%2C+hooks+installed+on+your+computer+and+the+remote+MCP+server%2C+and+choose+the+right+one+for+each+app.\u0026amp;theme=65d4444ba4e4b19ed60f3be7\u0026amp;signature=5c89c43ea13c4242254f6522d6a5521ca2e36c693ff331922279a22d817c6f32\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/littlespaces/weUOyW_YSXsm9R6f/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Little Spaces\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#127a5b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/connecting-agents/hooks-vs-mcp.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://littlespaces.mintlify.app/#organization\",\"name\":\"Little Spaces\",\"url\":\"https://littlespaces.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/littlespaces/FIhPI55jDA-G_nCb/logo/light.svg?fit=max\u0026auto=format\u0026n=FIhPI55jDA-G_nCb\u0026q=85\u0026s=a71097828083bb8e2af31423726e242c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://littlespaces.mintlify.app#website\",\"name\":\"Little Spaces\",\"url\":\"https://littlespaces.mintlify.app\",\"publisher\":{\"@id\":\"https://littlespaces.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp#webpage\",\"url\":\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp\",\"name\":\"Hooks or MCP: two ways to connect an agent\",\"description\":\"Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.\",\"dateModified\":\"2026-10-30T12:50:50.421Z\",\"isPartOf\":{\"@id\":\"https://littlespaces.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Little Spaces\",\"item\":\"https://littlespaces.mintlify.app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hooks or MCP: two ways to connect an agent\",\"item\":\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp#article\",\"headline\":\"Hooks or MCP: two ways to connect an agent\",\"name\":\"Hooks or MCP: two ways to connect an agent\",\"description\":\"Compare the two ways to connect an agent to Little Spaces, hooks installed on your computer and the remote MCP server, and choose the right one for each app.\",\"url\":\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp\",\"mainEntityOfPage\":{\"@id\":\"https://littlespaces.mintlify.app/connecting-agents/hooks-vs-mcp#webpage\"},\"dateModified\":\"2026-10-30T12:50:50.421Z\",\"keywords\":\"hooks, MCP, Model Context Protocol, connect, identity, runs\",\"publisher\":{\"@id\":\"https://littlespaces.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://littlespaces.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Little Spaces\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Little Spaces","nav":{"global":null,"pages":[{"group":"Get started","pages":[{"title":"Little Spaces: see what your coding agents need from you","sidebarTitle":"Introduction","href":"/index"},{"title":"Get started with Little Spaces","sidebarTitle":"Quickstart","href":"/quickstart"}]},{"group":"How it works","pages":[{"title":"Reports and asks: how agents tell you what they need","sidebarTitle":"Reports and asks","href":"/how-it-works/reports-and-asks"},{"title":"Inbox, Map and Activity: where you see your agents","sidebarTitle":"Inbox, Map and Activity","href":"/how-it-works/views"},{"title":"Answer your agents' asks from Little Spaces or the session","sidebarTitle":"Answering asks","description":"Answer an agent's questions and approvals in the Little Spaces inbox or in its own session, follow your answer on its way, and see how GitHub closes asks.","href":"/how-it-works/answering-asks"}]},{"group":"Connecting agents","pages":[{"title":"Hooks or MCP: two ways to connect an agent","sidebarTitle":"Hooks or MCP","href":"/connecting-agents/hooks-vs-mcp"},{"title":"Agents that Little Spaces setup connects","sidebarTitle":"Supported agents","description":"The coding agents that Little Spaces setup connects on Mac and Linux, what works in each, any one-time step, and how your answers reach each one.","href":"/connecting-agents/supported-agents"},{"title":"Connect a hosted assistant to Little Spaces over MCP","sidebarTitle":"Hosted assistants","href":"/connecting-agents/hosted-assistants"}]},{"group":"Reference","pages":[{"title":"The spaces command: set up, update and remove Little Spaces","sidebarTitle":"The spaces command","href":"/reference/spaces-command"},{"title":"Report fields: what an agent sends to Little Spaces","sidebarTitle":"Report fields","href":"/reference/report-fields"},{"title":"What Little Spaces collects from your agents","sidebarTitle":"Privacy and data","href":"/reference/privacy"},{"title":"Troubleshoot Little Spaces setup, runs and answers","sidebarTitle":"Troubleshooting","href":"/reference/troubleshooting"}]}]},"title":"Hooks or MCP: two ways to connect an agent - Little Spaces","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}