Skip to content

Commit 6689978

Browse files
committed
Add tool to get the MCP server
1 parent e86c1f4 commit 6689978

5 files changed

Lines changed: 64 additions & 0 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kind: Enhancement or New Feature
2+
body: Add new tool to get the MCP server version
3+
time: 2025-06-04T16:27:49.547265+02:00

src/dbt_mcp/mcp/server.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from dbt_mcp.config.config import load_config
1818
from dbt_mcp.dbt_cli.tools import register_dbt_cli_tools
1919
from dbt_mcp.discovery.tools import register_discovery_tools
20+
from dbt_mcp.meta.tools import register_meta_tools
2021
from dbt_mcp.remote.tools import register_remote_tools
2122
from dbt_mcp.semantic_layer.tools import register_sl_tools
2223
from dbt_mcp.tracking.tracking import UsageTracker
@@ -90,6 +91,9 @@ async def call_tool(
9091
async def create_dbt_mcp():
9192
dbt_mcp = DbtMCP(usage_tracker=UsageTracker(), name="dbt", lifespan=app_lifespan)
9293

94+
logger.info("Registering meta tools")
95+
register_meta_tools(dbt_mcp)
96+
9397
if config.semantic_layer_config:
9498
logger.info("Registering semantic layer tools")
9599
register_sl_tools(dbt_mcp, config.semantic_layer_config)

src/dbt_mcp/meta/tools.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import logging
2+
from importlib.metadata import version
3+
4+
from mcp.server.fastmcp import FastMCP
5+
6+
from dbt_mcp.prompts.prompts import get_prompt
7+
8+
9+
logger = logging.getLogger(__name__)
10+
11+
12+
def register_meta_tools(dbt_mcp: FastMCP) -> None:
13+
14+
@dbt_mcp.tool(description=get_prompt("meta/get_dbt_mcp_server_version"))
15+
def get_dbt_mcp_server_version() -> str:
16+
return version("dbt-mcp")
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
this tool returns the current version of the dbt MCP server

tests/unit/meta/test_tools.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import unittest
2+
from unittest.mock import MagicMock, patch
3+
4+
from dbt_mcp.meta.tools import register_meta_tools
5+
6+
7+
class TestMetaTools(unittest.TestCase):
8+
def test_get_dbt_mcp_server_version(self):
9+
# Create a mock FastMCP
10+
mock_fastmcp = MagicMock()
11+
12+
# Capture the registered tools
13+
tools = {}
14+
15+
# Patch the tool decorator to capture functions
16+
def mock_tool_decorator(**kwargs):
17+
def decorator(func):
18+
tools[func.__name__] = func
19+
return func
20+
return decorator
21+
22+
mock_fastmcp.tool = mock_tool_decorator
23+
24+
# Register the tools
25+
register_meta_tools(mock_fastmcp)
26+
27+
# Test the get_dbt_mcp_server_version function
28+
with patch('dbt_mcp.meta.tools.version') as mock_version:
29+
mock_version.return_value = "1.0.0"
30+
result = tools["get_dbt_mcp_server_version"]()
31+
32+
# Verify the version function was called with correct package name
33+
mock_version.assert_called_once_with("dbt-mcp")
34+
35+
# Verify the result
36+
self.assertEqual(result, "1.0.0")
37+
38+
39+
if __name__ == "__main__":
40+
unittest.main()

0 commit comments

Comments
 (0)