MCP server · Org-owned · Audited from source
Serena MCP server
by oraios/serenaNOASSERTION licenceAudited 20 Sep 2026 · source b86c316461b7
Is it safe? No — BLOCK, grade F (51/100). No tools were found in its source. The audit recorded 30 findings (0 critical, 5 high, 6 medium, 19 low). Maintainer's description: A powerful MCP toolkit for coding, providing semantic retrieval and editing capabilities - the IDE for your agent
Cite
Cite this page
ModelsAtlas. “Serena MCP server (oraios/serena)”. Retrieved 20 Sep 2026. https://modelsatlas.com/mcp/oraios/serena
Why this is BLOCK. The audit found 0 critical and 5 high findings; the most severe is Code injection at src/serena/hooks.py:213. Each finding is listed below with its file and line.
Why this page is still public. People search for this server by name. Hiding it would leave them with the README's word alone; here they see what the code does. We list it so you can decide, and we do not show connect commands for BLOCK servers.
Trust audit
Audit 0.4.1 · full source read 20 Sep 2026
30 findings, listed below with the file and line each was found on. Grade A needs a sandboxed behavioural run too; this audit read the source only.
What the source does
- FilesystemDeclared9 observations
- NetworkDeclared6 observations
- ShellDeclared14 observations
- DependenciesNot pinnedSome ranges float
- SecretsNone foundNo keys in source
Findings (30)
Sorted by severity · the 25 most severe of 30 are listed
HIGHCode injectioncode.deserialize · src/serena/hooks.py:213
return pickle.load(f)
- Why
- deserialises untrusted bytes into live objects
- Fix
- use json or yaml.safe_load
HIGHCode injectioncode.deserialize · src/serena/project_server.py:277
return pickle.loads(response.content)
- Why
- deserialises untrusted bytes into live objects
- Fix
- use json or yaml.safe_load
HIGHCode injectioncode.deserialize · src/serena/util/yaml.py:76
commented_map: CommentedMap | None = yaml.load(f)
- Why
- deserialises untrusted bytes into live objects
- Fix
- use json or yaml.safe_load
HIGHCode injectioncode.eval_exec · src/serena/repl/repl.py:354
exec(compile(ast.Module(body=statements, type_ignores=[]), self.SOURCE_NAME, "exec"), namespace)
- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
HIGHCode injectioncode.eval_exec · src/serena/repl/repl.py:356
return eval(compile(ast.Expression(body=trailing_expression), self.SOURCE_NAME, "eval"), namespace)
- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
MEDIUMInventory / provenanceinv.binary · resources/jetbrains-marketplace-button.cdr
jetbrains-marketplace-button.cdr
- Why
- a compiled or binary member cannot be reviewed from source
- Fix
- ship source, or explain the binary in the README
MEDIUMInventory / provenanceinv.binary · resources/serena-block-diagram.afdesign
serena-block-diagram.afdesign
- Why
- a compiled or binary member cannot be reviewed from source
- Fix
- ship source, or explain the binary in the README
MEDIUMInventory / provenanceinv.binary · resources/serena-icons.cdr
serena-icons.cdr
- Why
- a compiled or binary member cannot be reviewed from source
- Fix
- ship source, or explain the binary in the README
MEDIUMInventory / provenanceinv.binary · resources/serena-logo.cdr
serena-logo.cdr
- Why
- a compiled or binary member cannot be reviewed from source
- Fix
- ship source, or explain the binary in the README
MEDIUMInventory / provenanceinv.binary · resources/serena-mac-dock-icon.cdr
serena-mac-dock-icon.cdr
- Why
- a compiled or binary member cannot be reviewed from source
- Fix
- ship source, or explain the binary in the README
MEDIUMNetwork egressnet.raw_ip · src/serena/dashboard.py:1187
url = f"http://127.0.0.1:{port}/heartbeat"- Why
- No further detail recorded for this rule.
- Fix
- —
LOWCode injectioncode.deserialize · test/serena/test_hooks.py:972
return pickle.load(f)
- Why
- deserialises untrusted bytes into live objects
- Fix
- use json or yaml.safe_load
LOWCode injectioncode.deserialize · test/serena/test_hooks.py:1199
assert pickle.load(f).n_recent_grep_uses == 0
- Why
- deserialises untrusted bytes into live objects
- Fix
- use json or yaml.safe_load
LOWInsecure cryptocrypto.weak_hash · src/serena/util/text_utils.py:540
return hashlib.sha1(matched_text.encode("utf-8")).hexdigest()[: cls._DIGEST_LEN]- Why
- No further detail recorded for this rule.
- Fix
- —
LOWInsecure cryptocrypto.weak_hash · src/solidlsp/language_servers/clangd_language_server.py:101
return hashlib.md5(f.read()).hexdigest()
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWInsecure cryptocrypto.weak_hash · src/solidlsp/language_servers/eclipse_jdtls.py:725
return hashlib.md5(ws_hash_input).hexdigest()
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWInsecure cryptocrypto.weak_hash · src/solidlsp/ls.py:218
self._content_hash = hashlib.md5(self.contents.encode(self.encoding)).hexdigest()
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWInsecure cryptocrypto.weak_hash · test/solidlsp/java/test_jdtls_path_resolution.py:552
expected = hashlib.md5(self.REPO.encode()).hexdigest()
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · test/serena/test_memories_manager.py:416
fs_manager.get_memory_file_path("../../etc/passwd")- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · test/solidlsp/pascal/test_pascal_auto_update.py:171
member = tarfile.TarInfo(name="subdir/../../etc/passwd")
- Why
- No further detail recorded for this rule.
- Fix
- —
Tools it exposes
None declared in source
No tools were found in the source, so we cannot say what this server exposes.
Safer alternatives
langchain-ai/mcpdoc
Expose llms-txt to IDEs for development
staticpayload/oh-my-codex
oh-my-codex (omx) — Orchestration layer for OpenAI Codex CLI. Async Claude Code delegation (no timeouts), structured workflows (autopilot, TDD, code review, planning), persistent state & memory. Like oh-my-zsh but for Codex.
sixhq/overture
Overture is an open-source, locally running web interface delivered as an MCP (Model Context Protocol) server that visually maps out the execution plan of any AI coding agent as an interactive flowchart/graph before the agent begins writing code.
Audit history
- ✕BLOCK F 51 / 100
Source changed, verdict held ·
b86c316461b7 - ✕BLOCK F 51 / 100
First audit ·
e27094f193bc
README badge
Badges show the current verdict, BLOCK included
A badge cannot be hidden by the maintainer while the verdict is BLOCK. Fix the findings, push, and the re-audit updates it.
Questions about Serena MCP server
What is the Serena MCP server?
Is Serena safe to connect to an agent?
What credentials does Serena need?
How does Serena run?
How current is this page?
I already installed Serena. What should I do?
Can the verdict change?
Sources
- oraios/serena on GitHub — the source we read, its licence, stars and activityObserved · 20 Sep 2026
- ModelsAtlas trust audit — BLOCK verdict for commit b86c316461b7Observed · 20 Sep 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What is the Serena MCP server?
- Is Serena safe to connect to an agent?
- What credentials does Serena need?