Semble
Fast code search for agents that returns the relevant code instead of grep-and-read loops, aiming to use far fewer tokens. Includes an MCP server.
Test results
Last passed 2026-10-22Server package tested: semble 0.7.0 (uv, Python 3.12.15; resolved 2026-10-22)
Direct and key dependencies as resolved: anyio 4.15.1 · mcp 2.3.0 · model2vec 0.10.0 · numpy 2.5.4 · orjson 3.13.0 · pathspec 1.1.1 · pydantic 2.14.1 · pydantic_core 2.50.1 · questionary 2.1.1 · semble-grammars 0.1.2 · sse-starlette 3.5.0 · starlette 1.9.0 · tqdm 4.70.1 · typing_extensions 4.16.0 · uvicorn 0.54.0 · vicinity 0.4.6
All 51 resolved dependencies
annotated-types==0.8.0
anyio==4.15.1
attrs==26.1.0
cffi==2.1.1
click==8.5.0
cloudpickle==3.1.2
cryptography==50.0.2
filelock==4.2.4
fsspec==2026.9.0
h11==0.16.0
hf-xet==1.7.0
httpcore2==2.16.0
httpx2==2.16.0
huggingface_hub==2.2.0
idna==3.20
Jinja2==3.1.6
joblib==1.6.0
jsonschema==4.26.0
jsonschema-specifications==2025.9.1
MarkupSafe==3.0.4
mcp==2.3.0
mcp-types==2.3.0
model2vec==0.10.0
numpy==2.5.4
opentelemetry-api==1.45.1
orjson==3.13.0
packaging==26.3
pathspec==1.1.1
prompt_toolkit==3.0.53
pycparser==3.12
pydantic==2.14.1
pydantic_core==2.50.1
PyJWT==2.15.1
python-multipart==0.0.32
PyYAML==6.0.3
questionary==2.1.1
referencing==0.37.0
rpds-py==2026.9.1
safetensors==0.8.0
semble-grammars==0.1.2
sse-starlette==3.5.0
starlette==1.9.0
tokenizers==0.23.3
tqdm==4.70.1
tree-sitter==0.26.0
truststore==0.10.5
typing-inspection==0.4.4
typing_extensions==4.16.0
uvicorn==0.54.0
vicinity==0.4.6
wcwidth==0.9.3Captured with: uvx --from semble[mcp] python (importlib.metadata in the same uvx env; equivalent to uv pip freeze).
Full result per app: Does it work with Claude Code? · Does it work with Cursor? · Does it work with Claude Desktop? · Does it work with ChatGPT (Codex)?
Real test
PassedOne run from our records. When two runs share a date, we show a failure if there is one.
- Client
- Claude Desktop · Claude Desktop 2.37337.1 (Linux beta, Electron 44.7.0)
- Date
- Oct 22, 2026
- The task we gave
Using only the semble MCP tools, look at the code repository at /workspace/timmy/harness/sandbox/coderepo. Find which file defines the function compute_total and which other file calls it. Reply with both file names.
- What it promised
- details not recorded for this run
- What happened
2 tool calls recorded. The names were not stored on this run.
Tool result
{"content": [{"text": "{\"query\": \"compute_total function definition\", \"results\": [{\"file_path\": \"utils.py\", \"start_line\": 1, \"end_line\": 4, \"score\": 0.019672131147540985, \"content\": \"from billing import compute_total\\n\\ndef format_receipt(prices):\\n return f\\\"Total: {compute_total(prices, 0.08)}\\\"\"}, {\"file_path\": \"billing.py\", \"start_line\": 1, \"end_line\": 4, \"score\": 0.01935483870967742, \"content\": \"def compute_total(prices, tax_rate):\\n \\\"\\\"\\\"Return the total of prices plus tax.\\\"\\\"\\\"\\n subtotal = sum(prices)\\n return round(subtotal * (1 + tax_rate), 2)\"}]}", "type": "text"}], "isError": false, "structuredContent": {"result": "{\"query\": \"compute_total function definition\", \"results\": [{\"file_path\": \"utils.py\", \"start_line\": 1, \"end_line\": 4, \"score\": 0.019672131147540985, \"content\": \"from billing import compute_total\\n\\ndef format_receipt(prices):\\n return f\\\"Total: {compute_total(prices, 0.08)}\\\"\"}, {\"file_path\": \"billing.py\", \"start_line\": 1, \"end_line\": 4, \"score\": 0.01935483870967742, \"content\": \"def compute_total(prices, tax_rate):\\n \\\"\\\"\\\"Return the total of prices plus tax.\\\"\\\"\\\"\\n subtotal = sum(prices)\\n return round(subtotal * (1 + tax_rate), 2)\"}]}"}}Agent reply
Defined in: billing.py; Called from: utils.py (inside format_receipt, which calls compute_total(prices, 0.08))- Verdict
- Passed
Install
claude mcp add semble -- uvx --from semble[mcp] sembleRun in your terminal. This exact command is what our harness runs in Claude Code; see the results above.
{
"mcpServers": {
"semble": {
"command": "uvx",
"args": [
"--from",
"semble[mcp]",
"semble"
]
}
}
}Save as .cursor/mcp.json. This exact config is what our harness runs in Cursor; see the results above.
{
"mcpServers": {
"semble": {
"command": "uvx",
"args": [
"--from",
"semble[mcp]",
"semble"
]
}
}
}Add to claude_desktop_config.json and restart Claude Desktop. Tested on the Linux beta; see the results above.
[mcp_servers.semble]
command = "uvx"
args = ["--from", "semble[mcp]", "semble"]Add to ~/.codex/config.toml (shared by the ChatGPT (Codex) CLI and the ChatGPT desktop app; Codex runs inside the ChatGPT desktop app). Tested with the ChatGPT (Codex) CLI bundled in the ChatGPT desktop app; see the results above.
Not connecting? Troubleshooting: Claude Code · Cursor · Claude Desktop · ChatGPT (Codex)
Test history
| Date | Check | Result | Versions tested |
|---|---|---|---|
| 2026-10-22 | Protocol (direct stdio) | Protocol: starts, 2 tools listed | semble 0.7.0 · server reported v0.7.0 |
| 2026-10-22 | Claude Code | Passed install, connect, tools, agent task | Claude Code 2.1.296 · semble 0.7.0 |
| 2026-10-22 | Cursor | Passed install, connect, tools, agent task | Cursor CLI 2026.10.19-6bbf2c4 · semble 0.7.0 |
| 2026-10-22 | Claude Desktop | Passed install, connect, tools, agent task | Claude Desktop 2.37337.1 (Linux beta, Electron 44.7.0) · semble 0.7.0 |
| 2026-10-22 | ChatGPT (Codex) | Passed install, connect, tools, agent task | Codex CLI 0.162.0-alpha.17.2 · semble 0.7.0 |
Tools seen by our harness (2)
searchfind_related