@silicaos/mcp
v0.2.1
Published
Silica MCP server — operate on a Silica workspace as a Yjs peer from any MCP-compatible client (Claude Code, Cursor, etc.)
Maintainers
Readme
@silicaos/mcp
Model Context Protocol server for Silica. Lets Claude Code (and any MCP client) operate on a Silica workspace as a Yjs peer — features, tasks, slot docs, activity notes.
Install in any project
Once you've signed in to the Silica desktop app at least once, register the server in your project's MCP config:
{
"mcpServers": {
"silica": {
"command": "npx",
"args": ["-y", "@silicaos/mcp"]
}
}
}Locations:
- Claude Code:
~/.claude.jsontop-levelmcpServers(global) or<repo>/.mcp.json(per-repo) - Cursor:
~/.cursor/mcp.jsonor<repo>/.cursor/mcp.json - Any other MCP-compatible client: see its docs for the equivalent file
No cwd, no monorepo checkout, no per-project install. npx pulls the bundle and runs it.
One-command setup
Even faster than hand-editing config files: from inside a target repo,
npx -y @silicaos/mcp installThis will:
- Pick (or prompt for) which workspace to bind this directory to
- Detect Claude Code (
.claude/) and Cursor (.cursor/) and merge thesilicaentry into.mcp.jsonand/or.cursor/mcp.json - Drop a
.silica.jsonso the MCP can resolve the workspace fast - Register the directory with your workspace so the desktop app sees it
- Append a Silica block to
AGENTS.md(only if the file exists)
Options:
| Flag | Effect |
|---|---|
| --workspace ws_xxx | Pin a specific workspace_id |
| --client claude\|cursor\|all | Restrict which client configs get touched |
| --global | Write to ~/.claude.json (Claude Code) / ~/.cursor/mcp.json (Cursor) instead of per-repo |
| --no-agents-md | Skip the AGENTS.md append |
| --force | Overwrite an existing .silica.json |
| --dry-run | Compute changes, print diff, write nothing |
Reverse with:
npx -y @silicaos/mcp uninstallAuthentication
The server reads your Clerk JWT from ~/.config/silica/credentials, written by the Silica desktop app on every successful sign-in. If the file is missing or expired, sign in to the desktop app again to refresh it.
Workspace resolution
In order of priority:
SILICA_WORKSPACE_IDenvironment variable.silica.jsonat the project root containing{ "workspace_id": "ws_..." }- Auto-detect: matches
cwdagainst thelocal_pathof any directory connected to one of your workspaces (set via Settings → Connected directories in the desktop app)
Tools
list_features({ in_motion?: boolean })— list features in the workspacecreate_feature({ title })— create a featurelist_tasks({ feature_id })— list tasks for a featurecreate_task({ feature_id, title, description? })— append a taskcomplete_task({ task_id, completed? })— toggle completionread_slot({ slot_id })— read a slot doc as Markdownupdate_slot({ slot_id, markdown })— replace a slot doc (V1: lossy on rich structure; high-fidelity edits live in the desktop TipTap editor)append_note({ feature_id, text })— append an activity entry
V1 limitations
- Token expiry: the server reads the token at connect; if a long session outlives the JWT, the WS client auto-reconnects on close. If
~/.config/silica/credentialsitself goes stale, sign in to the desktop app again. - Slot serialization: Markdown round-trip loses some rich-text structure. Use the desktop editor for fidelity-critical edits.
Developing in this monorepo
For working on the MCP server itself:
pnpm --filter @silicaos/mcp dev # run from source via tsx
pnpm --filter @silicaos/mcp build # bundle to dist/ with tsup
pnpm --filter @silicaos/mcp typecheck # tsc --noEmitIf you want to point Claude Code at the in-repo source (instead of npm), register:
{
"mcpServers": {
"silica-dev": {
"command": "pnpm",
"args": ["--silent", "--filter", "@silicaos/mcp", "dev"],
"cwd": "/absolute/path/to/Silica"
}
}
}Publishing
The package is published from dist/. prepublishOnly builds. Workflow:
cd apps/mcp
pnpm version patch # or minor / major
pnpm publish --access publicTag-based CI publish is TBD.
