MCP安全系列之缺乏日志审计"

admin 2026-10-16 13:43:37 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

MCP安全系列之缺乏日志审计

原创

小枣信安
小枣信安

小枣信安

2026年10月14日 10:18
北京

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

介绍

这一项是关于缺乏审计的,相当于MCP的运行没有日志审计,事后无法定位和溯源,所以本篇我们演示一下如何给MCP去记录日志情况。

MCP日志记录

比较原始的方法就是在开发MCP服务的代码中,添加日志记录代码,比如通过logger去记录,但这种方式有几个弊端,一个是开发时会导致代码冗余,要想记录的详细,需要添加很多logger代码。另一个是这种日志即使保存下来后,也可能去查看或者定位。

这里采用langfuse平台来演示,langfuse是一个开源的LLMOps平台,即大模型应用可观测平台,它可以记录Agent完整会话中的每一步,比如大模型调用情况、工具调用情况、输入输出情况等等。

首先安装langfuse,这里通过docker安装,从github下载源码后,直接运行:

docker compose up -d

它会自动拉取相关镜像并启动,启动后浏览器访问3000端口进入langfuce。

准备好langfuce后,我们还是通过CherryStudio来测试MCP,MCP服务代码如下,这是没有记录日志功能的代码:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP(\"Test\")

@mcp.tool()
def helloworld(username: str) -> str:
    \"\"\"根据传入的用户名来打印友好提示语\"\"\"
    return f\"你好,{username}\"

if __name__ == \"__main__\":
    mcp.run()

当我们想把MCP和langfuse打通,则需要在MCP代码中把langfuse加进去,对上面的代码进行修改,具体作用见注释:

import os
from pathlib import Path

from dotenv import load_dotenv
from langfuse import get_client, observe
from mcp.server.fastmcp import FastMCP

# 加载.env文件,该文件配置了langfuse的key,有了key才能和langfuse交互
load_dotenv(Path(__file__).with_name(\".env\"))

mcp = FastMCP(\"Test\")

@mcp.tool()
# 主要加的就是这行代码,加到函数上,其中name代表在langfuse中显示日志时,这个日志名称是什么,as_type是说这个函数是属于Agent调用工具类型,langfuse显示日志时会显示工具的图标,因为langfuse观测面板有多种观测对象,比如推理过程、代码执行等等,工具调用就是其中一种
@observe(
    name=\"helloworld\",
    as_type=\"tool\"
)
def helloworld(username: str) -> str:
    \"\"\"根据传入的用户名来打印友好提示语\"\"\"
    return f\"你好,{username}\"

if __name__ == \"__main__\":
    mcp.run()

最后还少个.env文件,内容如下:

LANGFUSE_PUBLIC_KEY=pk-lf-xxxxxxxxxxxxx
LANGFUSE_SECRET_KEY=sk-lf-xxxxxxxxxxxxx
LANGFUSE_BASE_URL=http://localhost:3000

其中key要去langfuse平台获取,回到langfuse,创建个项目,在该项目的设置-API KEYs下,点击创建key即可。

一切准备好后,回到Cherrystudio去调用工具进行测试:

此时在langfuse的tracing下可以看到日志记录:

总结

MCP记录日志还有很多方式,也有很多平台,不止局限于langfuse,可根据自己情况进行选择。

小枣信安:专注AI安全,包括但不限于大模型安全、智能体安全、机器人安全、AI赋能网络安全等,欢迎一起学习。

MCP安全系列之缺乏日志审计" 网络安全文章

MCP安全系列之缺乏日志审计"

本文针对MCP服务缺乏日志审计的问题,提出使用开源平台langfuse记录MCP运行日志。通过docker安装langfuse,在MCP工具函数上添加@observe装饰器并配置.env文件,即可在平台查看工具调用及输入输出等完整会话记录。文章提供了具体代码示例和操作步骤,并指出还有其他日志记录方案可选。
工资到账119587.68元,爱你字节!" 网络安全文章

工资到账119587.68元,爱你字节!"

本文为AI大模型工程师培训课程软文,以字节员工高薪案例为引,宣传AI岗位薪资红利,推广《AI大模型工程师培养计划》,承诺保就业薪资并展示学员案例,引导扫码咨询报名。内容以营销推广为主,缺乏技术深度,属于商业广告。
CNVD漏洞周报2026年第39、40期" 网络安全文章

CNVD漏洞周报2026年第39、40期"

CNVD漏洞周报2026年第39、40期报告了866个信息安全漏洞,其中高危漏洞428个,中危漏洞372个,低危漏洞66个。报告重点分析了Oracle、Ivanti、Ubiquiti、Tenda等厂商的产品漏洞,并提醒用户及时更新补丁以防止安全事件。
“银狐”木马专项——恶意域名及恶意IP(六)" 网络安全文章

“银狐”木马专项——恶意域名及恶意IP(六)"

国家互联网应急中心披露银狐木马专项打击行动进展,公布近期控制规模最大的10个恶意IP及关联域名,归属地主要分布于中国香港、中国台湾、韩国等地。报告提供排查方法,包括检查浏览器历史、DNS请求、可疑程序及网络连接等,并给出处置建议,如更新IOC、隔离感染终端、加强钓鱼防范,并征集相关线索。
评论:0   参与:  0