Token导航 LogoToken导航

MCP Server · 运维云端

Frama C MCP Server

面向Frama-C的MCP服务器,支持AI代理执行C程序形式验证,包括抽象解释(EVA)、演绎证明(WP)和ACSL注解推理。

未说明官方级别未说明来源级核验工具 15
Rust云端部署Docker

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
lihaokun
提供方
lihaokun

工具数量

15

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

2

仓库热度

收录来源

1 个

MCP World

选型结论

Frama C MCP Server 属于运维云端类 MCP Server,公开资料标注 15 个工具,通过传输方式未标注接入,客户端适配情况以官方文档为准,没有现成的安装命令;接入前要先准备 会话凭据。

分类

运维云端

传输方式

未说明

认证方式

会话凭据

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 15 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

frama-c-mcp服务器

一 主控程序 服务器 Frama-C,使AI代理能够执行C程序形式化验证——抽象解释(EVA)、演绎证明(WP)和ACSL注释推理。

面向 Frama-C 的 主控程序 服务器,让 AI 智能体能够执行 C 程序形式验证——抽象解释 (EVA)、演绎证明 (WP) 和 ACSL 注解推理。

Architecture / 架构

AI Agent  Rust Server  Frama-C Server
                              rmcp 0.16                      -server-socket
                              15 tools                       EVA / WP / CIL
                              session state                  200+ server requests

Rust进程桥接了两个协议:

  • 上游(MCP):JSON-RPC通过stdio,由 rmcp --官方Rust MCP SDK
  • 下游(Frama-C):Unix Socket上的自定义二进制协议(相同协议 伊维特 使用)

Rust 进程桥接两个协议:

  • 上游 (MCP):JSON-RPC over stdio,由 rmcp(官方 Rust MCP SDK)处理
  • 下游 (Frama-C):自定义二进制协议 over Unix Socket(与 伊维特 使用相同协议)

MCP Tools / MCP 工具

Core Analysis / 核心分析

ToolDescription说明
reload_projectLoad/reload C source files. Reparses AST and refreshes all cached state.加载/重载 C 源文件。重新解析 AST 并刷新所有缓存状态。
run_evaRun EVA abstract interpretation. Finds potential runtime errors.运行 EVA 抽象解释。发现潜在运行时错误(除零、缓冲区溢出等)。
run_wpRun WP deductive verification on specified functions.对指定函数运行 WP 演绎证明,验证 ACSL 契约正确性。
get_verification_statusGet comprehensive status: property counts by category, EVA/WP state.获取综合验证状态:属性按类别统计、EVA/WP 分析状态。

Querying Results / 查询结果

ToolDescription说明
get_eva_alarmsList EVA alarms, filterable by function/kind/status.列出 EVA 报警,可按函数/类型/状态过滤。
get_eva_valueQuery EVA value range at a program point.查询程序点的 EVA 值域。
get_wp_goalsList WP proof goals with status (VALID/NORESULT/UNKNOWN).列出 WP 证明目标及状态。
get_current_annotationsList ACSL annotations on a function with verification status.列出函数的 ACSL 注解及其验证状态。

Navigation / 导航

ToolDescription说明
get_function_infoSource location, signature, and annotated declaration.函数源码位置、签名和带注解的声明。
get_callgraphCompute and return the function call graph.计算并返回函数调用图。
find_callersFind all callers of a function (requires EVA).查找函数的所有调用者(需先运行 EVA)。
trace_call_chainMulti-level call chain traversal (callers or callees).多层调用链追踪(向上/向下)。
lookup_symbolLook up a function or global variable by name.按名称查找函数或全局变量。

Compound / 组合工具

ToolDescription说明
investigate_alarmDeep investigation: value ranges, callers, annotations in one call.深度调查报警:值域、调用者、注解一次返回。
suggest_verification_planAnalyze current state and suggest next actions.分析当前状态并建议下一步操作。

Quick Start / 快速上手

Prerequisites / 前置条件

  • Frama-C >=31.0(镓)
  • 《铁锈》(2021年版)
  • OCaml>=4.14,不透明

Build / 构建

cargo build --release

Usage / 使用

# 1. Start a Frama-C server / 启动 Frama-C 服务器
frama-c your_program.c -server-socket /tmp/frama-c.sock

# 2. Start the MCP server / 启动 MCP 服务器
./target/release/frama-c-mcp-server --socket /tmp/frama-c.sock

克劳德桌面配置/克劳德桌面配置

Add to / 添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "frama-c": {
      "command": "/path/to/frama-c-mcp-server",
      "args": ["--socket", "/tmp/frama-c.sock"]
    }
  }
}

Iterative Verification Workflow / 迭代验证工作流

此服务器支持的主要用例:

本服务器支持的核心使用场景:

1. Agent receives a C file              智能体接收 C 文件
2. reload_project                      → 加载到 Frama-C
3. run_eva                             → 发现潜在运行时错误
4. get_eva_alarms                      → 查看除零、越界等报警
5. investigate_alarm                   → 深入分析报警根因
6. Agent writes ACSL annotations         智能体编写 ACSL 注解消除报警
7. reload_project                      → 重新解析修改后的文件
8. run_wp                              → 证明注解正确
9. get_wp_goals                        → 确认所有目标 VALID

这个循环——EVA发现问题,代理注入ACSL,WP证明正确性——在 test_iterative_workflow.

这个循环——EVA 发现问题、智能体注入 ACSL、WP 证明正确性——已在 test_iterative_workflow 中端到端验证。

Testing / 测试

# Unit tests (no server needed) / 单元测试(无需服务器)
cargo test --lib

# Offline integration tests / 离线集成测试
cargo test --test integration_test -- test_function_not_found test_state_invalidation \
  test_update_functions_empty_clears_cache test_connect_bad_socket

# Live integration tests (each needs its own Frama-C server)
# 在线集成测试(每个测试需要独立的 Frama-C 服务器实例)
frama-c test/test_abs.c -server-socket /tmp/frama-c-test.sock
cargo test test_full_workflow -- --nocapture

frama-c test/test_comprehensive.c -server-socket /tmp/frama-c-test-comp.sock
cargo test test_comprehensive -- --nocapture

frama-c test/test_iterative_raw.c -server-socket /tmp/frama-c-test-iter.sock
cargo test test_iterative -- --nocapture
SuiteTestsDescription / 说明
Unit tests28Codec, state management, callgraph queries / 编解码、状态管理、调用图查询
Offline integration4State invalidation, error handling / 状态失效、错误处理
test_full_workflow14 stepsPhase 1: basic 8-tool workflow / 基础 8 工具工作流
test_phase2_workflow13 stepsPhase 2: globals, callgraph, multi-function WP / 全局变量、调用图、多函数 WP
test_comprehensive19 stepsAll 15 tools against Safe Buffer Module / 全部 15 工具综合测试
test_iterative_workflow5 phasesRaw C → EVA → inject ACSL → reload → WP / 裸 C → EVA → 注入 ACSL → 重载 → WP

Project Structure / 项目结构

src/
├── main.rs                 # CLI entry point / 入口
├── lib.rs                  # Library root / 库根
├── state.rs                # Session state / 会话状态(函数、全局变量、调用图缓存)
├── error.rs                # Error types / 错误类型
├── frama_c/
│   ├── client.rs           # Frama-C client (GET/SET/EXEC/POLL)
│   ├── codec.rs            # Wire protocol codec / 协议编解码(S/L 长度前缀分帧)
│   └── transport.rs        # Unix socket transport / Unix Socket 传输层
└── mcp/
    ├── server.rs           # 15 MCP tool implementations / 15 个 MCP 工具实现
    └── types.rs            # Tool parameter types / 工具参数类型

test/                       # C files for integration tests / 集成测试用 C 文件
tests/integration_test.rs   # Integration tests / 集成测试
docs/                       # Architecture, design, test reports / 架构、设计、测试报告
experiments/                # OCaml↔Rust FFI experiments (completed) / FFI 实验(已完成)

Technical Notes / 技术要点

Frama-C Server Protocol / Frama-C 服务器协议:自定义二进制协议(不是JSON-RPC)。命令: GET/SET/EXEC/POLL/SHUTDOWN.框架: S+3六角形或 L+7十六进制长度前缀。 SET 和 EXEC 已排队--必须使用 POLL loop. Same protocol Ivette (Frama-C's official GUI) uses. / 自定义二进制协议(非 JSON-RPC)。SET 和 EXEC 为队列式——需 POLL 轮询。与 Ivette(官方 GUI)使用相同协议。

AST Reload / AST 重载:需要重新分析文件 setFiles([]) → setFiles(files) → compute.直接 setFiles(same_value) 由于Frama-C的状态依赖系统,这是不可行的。这与Ivette的相匹配 reparseFiles() implementation. / 文件重新解析需要 setFiles([]) → setFiles(files) → compute 三步。直接 setFiles(同值) 是空操作。这与 Ivette 的 reparseFiles() 实现一致。

WP Markers / WP 标记: startProofs 需要PVDecl标记(#v)不是AST。Decl(#F).必须致电 printDeclaration 首先在服务器的表中注册标记。 / startProofs 需要 PVDecl 标记(#v),非 AST.Decl(#F)。必须先调用 printDeclaration 注册标记。

许可证

麻省理工学院

工具与能力

工具数量

15

资源数量

0

提示词数量

0

能力标签

形式验证Rust本地部署C程序分析抽象解释演绎证明ACSL推理

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

看服务状态

查询容器、日志和监控指标,定位异常。

执行部署变更

在权限范围内触发发布、回滚和环境切换。

核对资源用量

汇总用量,找出闲置和超额的部分。

选择建议

值得选的地方

  • 工具数量 15 个,一次接入能覆盖的操作比单点工具更全。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 需要自备会话凭据,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在运维云端场景里让模型直接调用外部能力的人。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 暂时拿不到会话凭据的人。
  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Frama C MCP Server

MCP World · 本页

15未说明未标注1 个2026-05-17
Ui Tars Desktop 8a825770

MCP World

0stdio有1 个2026-05-17
Elie222 MCP

MCP World

0未说明未标注1 个2026-05-17
Arizeai Phoenix MCP

MCP World

0stdio有3 个2026-05-17
Unity MCP 87ee506e

MCP World

42HTTP有2 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Frama C MCP Server 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Frama C MCP Server 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Frama C MCP Server 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Frama C MCP Server 需要 API Key 吗?

公开资料标注的认证方式是会话凭据,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Frama C MCP Server 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP