mcp__unison__ucm_findLABSCO SUMMARY
The generic command tool is the reason this ages well.
Alongside the named tools there is one that passes any UCM command straight through, so a command the wrapper does not know about still works — at the cost of you needing to know the syntax, since errors are returned as UCM produced them. Point UCM at the same codebase from a terminal and you can watch what the assistant is doing rather than inferring it from tool output.
What it is
A Haskell MCP server that speaks to UCM, Unison's codebase manager, so an assistant can work in a Unison codebase directly. Because Unison stores code by content hash rather than in files, the usual read-and-edit approach does not apply — every operation here goes through UCM.
What you get
- Working with definitions —
mcp__unison__ucm_findto search,mcp__unison__ucm_viewfor source,mcp__unison__ucm_addfor new ones,mcp__unison__ucm_updatefor existing,mcp__unison__ucm_delete,mcp__unison__ucm_lsto list a namespace mcp__unison__ucm_runto evaluate an expression, andmcp__unison__ucm_testwhich generatesscratch.uwhen it is missingmcp__unison__ucm_dependenciesto show what a definition depends on- Projects and branches —
mcp__unison__ucm_list_projects,mcp__unison__ucm_switch_project,mcp__unison__ucm_project_create,mcp__unison__ucm_list_branches,mcp__unison__ucm_switch_branch,mcp__unison__ucm_branch_create,mcp__unison__ucm_merge - Libraries —
mcp__unison__ucm_lib_install,mcp__unison__ucm_share_installfor a specific version from Unison Share, andmcp__unison__ucm_share_search, which reports library information rather than performing a real search mcp__unison__ucm_commandas an escape hatch that runs any UCM command with its arguments, so commands added to UCM later still work — errors come back from UCM unchanged
Requirements
Unison installed and ucm on your PATH — brew install unisonweb/unison/unison-language on macOS. Building needs Haskell Stack; clone the repository and stack build, then find the binary with stack path --local-install-root. Register it with claude mcp add unison <YOUR_PATH_TO_BINARY_UNISON_MCP_SERVER> <YOUR_PATH_TO_UNISON_PROJECT> — the project directory is an argument, not an environment variable. To work in the same codebase from a terminal at the same time, start UCM with ucm --codebase <YOUR_PATH_TO_UNISON_MCP_SERVER>/.unison. MIT.
Setup effort
Build from source — git clone https://github.com/mizchi/unison-mcp.git
USE CASES
Finding out how something is defined
Search for the name, view the source, and read what it depends on without leaving the conversation.
Writing and checking a new function
Add the definition, evaluate an expression against it, and run the tests.
Working on a change in isolation
Create a branch, make the updates there, and merge when it holds together.
Pulling in a library
Install it, then list the lib namespace to see what names it brought with it.
Running a UCM command with no wrapper
Pass the command and arguments straight through when the named tools do not cover it.
20 tools
Listed in project docs. Your client may show a different list.
mcp__unison__ucm_addmcp__unison__ucm_runmcp__unison__ucm_viewmcp__unison__ucm_updatemcp__unison__ucm_lsmcp__unison__ucm_deletemcp__unison__ucm_testmcp__unison__ucm_dependenciesmcp__unison__ucm_list_projectsmcp__unison__ucm_switch_projectmcp__unison__ucm_project_createmcp__unison__ucm_list_branchesmcp__unison__ucm_switch_branchmcp__unison__ucm_branch_createmcp__unison__ucm_mergemcp__unison__ucm_lib_installmcp__unison__ucm_share_searchmcp__unison__ucm_share_installmcp__unison__ucm_commandBEFORE YOU INSTALL
What to know first
Tools you get
20 tools named in the project's documentation. The mcp__unison__ prefix in the documentation comes from registering the server as unison; the tool names themselves look like ucm_find. Every tool needs a working ucm on PATH.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/mizchi/unison-mcp.git
cd unison-mcp
stack build
stack path --local-install-root
claude mcp add unison <YOUR_PATH_TO_BINARY_UNISON_MCP_SERVER> <YOUR_PATH_TO_UNISON_PROJECT>MCP Clients
Claude Desktop
{
"mcpServers": {
"unison": {
"command": "<YOUR_PATH_TO_UNISON_MCP_SERVER>/.stack-work/install/.../bin/unison-mcp-server-exe",
"args": [
"<YOUR_PATH_TO_UNISON_PROJECT>"
]
}
}
}Claude Code
claude mcp add unison <YOUR_PATH_TO_BINARY_UNISON_MCP_SERVER> <YOUR_PATH_TO_UNISON_PROJECT>