MCP服务根据什么来生成查询语句

想请教一下MCP根据什么来生成SQL(查询)语句。

我举个例子:

检查scxx这个数据库中是否有备注是“科技创新”的表,如果有,归纳总结

因为我的数据库表名无规则的随机字符串,只能依赖表的描述comments来告知LLM(或MCP),然后我发现生成了一个错误的SQL:

参数: {"query": "SELECT table_name, comments FROM information_schema.tables WHERE table_schema = 'scxx' AND (table_name LIKE '%科技创新%') OR comments LIKE '%科技创新%';"}

然后报错:

SQL 错误 [1054] [42S22]: Unknown column ‘comments’ in ‘where clause’

所以我现在面临的困境是:
1. 数据库表名无意义,没法用
2. 数据库表comment写点内容但是不能直接生成正确的SQL

求助,谢!

1 个赞

实际实验下来,如果在system prompt中写一点示例SQL,或者说明,还是能够很好的查出来的。但是没办法原生直查comment好像(如上,语法报错)。这差不多可以解燃眉之急。

1 个赞

MCP服务的SQL是大模型生成的,可以通过添加系统提示的方式来改善SQL生成,比如“首先,列出你需要查询的表和字段。然后,确定查询条件。最后,编写 SQL 语句”

1 个赞

关键是我觉得我的prompt已经很清晰了,用户侧应该只能写到这个程度了吧,所以我才猜测MCP是不是还是本身还要优化一次?

谢谢

检查scxx这个数据库中是否有备注是“科技创新”的表,如果有,归纳总结

学习总结经验 :+1: :+1: :+1: