Serena
BLOCKgrade F · trust 51/100A powerful MCP toolkit for coding, providing semantic retrieval and editing capabilities - the IDE for your agent
agentaiai codingclaudeclaude codecodexidejetbrainsOverview
From the repository's own README, as read at the audited commit.
<p align="center" style="text-align:center;"> <img src="resources/serena-logo.svg#gh-light-mode-only" style="width:500px"> <img src="resources/serena-logo-dark-mode.svg#gh-dark-mode-only" style="width:500px"></p><h3 align="center"> The IDE for Your Coding Agent</h3><div align="center"> <a href="https://discord.com/invite/cVUNQmnV4r"><img src="https://img.shields.io/badge/discord-join-5865F2?style=flat-square&labelColor=0a0e14&logo=discord&logoColor=5865F2" alt="discord"></a> <a href="https://github.com/oraios/serena/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-GPL--3.0--or--later-b0e8ff?style=flat-square&labelColor=0a0e14" alt="license: GPL-3.0-or-later"></a></div><br>* Serena provides essential **semantic code retrieval, editing, refactoring and debugging tools** that are akin to an IDE's capabilities, operating at the symbol level and exploiting relational structure.* It integrates with any client/LLM via the model context protocol (**MCP**). Serena's **agent-first tool design** involves robust high-level abstractions, distinguishing it fromapproaches that rely on low-level concepts like line numbers or primitive search patterns.Practically, this means that your agent operates **faster, more efficiently and more reliably**, especially in larger andmore complex codebases.> [!IMPORTANT]> Do not install Serena via an MCP or plugin marketplace! They contain outdated and suboptimal installation commands. > Instead, follow our [Quick Start](#quick-start) instructions.## Quick Demohttps://github.com/user-attachments/assets/8d11646e-b80e-4723-b9d7-32d6101b5f58:tv: Longer video: [Introduction to Serena in 5 Minutes (YouTube)](https://www.youtube.com/watch?v=5QN7gN1KYLA)## What Our "End Users" SayWhile it is humans who download and set up Serena, our end users are essentially AI agents.As the ones actually applying Serena's tools, they are in the best position to evaluate Serena.We crafted an unbiased evaluation prompt that leads the agent to p
Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add serena-agent -- uvx serena-agent==1.5.3
Details
- Source
- oraios/serena
- npm
vue-calculator-test-fixture@1.0.0- PyPI
test-project- Transports
- stdio · streamable-http
- Credentials it reads
GITHUB_TOKENINTELEPHENSE_LICENSE_KEY- Tools
- Registered at runtime; the list could not be read from source.
- License
- NOASSERTION
- Stars
- 29,543 · pushed 0d ago
Trust audit
Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (9 observation(s))
- Network
- declared (6 observation(s))
- Shell
- declared (14 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
return pickle.load(f)
return pickle.loads(response.content)
commented_map: CommentedMap | None = yaml.load(f)
exec(compile(ast.Module(body=statements, type_ignores=[]), self.SOURCE_NAME, "exec"), namespace)
return eval(compile(ast.Expression(body=trailing_expression), self.SOURCE_NAME, "eval"), namespace)
jetbrains-marketplace-button.cdr
serena-block-diagram.afdesign
serena-icons.cdr
serena-logo.cdr
serena-mac-dock-icon.cdr
url = f"http://127.0.0.1:{port}/heartbeat".syncCommitId.remote
.syncCommitId.this
.bsl-language-server.json
.luaurc
.Rbuildignore
return pickle.load(f)
assert pickle.load(f).n_recent_grep_uses == 0
return hashlib.sha1(matched_text.encode("utf-8")).hexdigest()[: cls._DIGEST_LEN]return hashlib.md5(f.read()).hexdigest()
return hashlib.md5(ws_hash_input).hexdigest()
self._content_hash = hashlib.md5(self.contents.encode(self.encoding)).hexdigest()
expected = hashlib.md5(self.REPO.encode()).hexdigest()
fs_manager.get_memory_file_path("../../etc/passwd")member = tarfile.TarInfo(name="subdir/../../etc/passwd")
Gates applied: no_behavioural_pass.
Audited 2026-09-18 · audit v0.4.0 · source sha e27094f193bc · full audit: observations/trust-audit/mcp-server/oraios__serena.json · Report an issue or request a re-scan
Audit history
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-18 | e27094f193bc | BLOCK | F | 51 | first audit |
Alternatives
Other servers in the same categories, safer ones first.
Questions
What is the Serena MCP server?
A powerful MCP toolkit for coding, providing semantic retrieval and editing capabilities - the IDE for your agent
Is Serena safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (51/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does Serena need?
It reads GITHUB_TOKEN and INTELEPHENSE_LICENSE_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Serena run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as vue-calculator-test-fixture at 1.0.0.
How current is this page?
The grade is for one exact copy of the source (e27094f193bc), read on 2026-09-18. The repository is watched and re-audited when it changes.
Provenance: OBSERVED · read 2026-09-18 · job trust-audit-2026-09-18