sqlserver-mcp-tools 0.1.3__tar.gz → 0.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (16) hide show
  1. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/PKG-INFO +1 -1
  2. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/pyproject.toml +1 -1
  3. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/mcp_sqlserver/http_server.py +36 -1
  4. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/sqlserver_mcp_tools.egg-info/PKG-INFO +1 -1
  5. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/LICENSE +0 -0
  6. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/README.md +0 -0
  7. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/setup.cfg +0 -0
  8. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/mcp_sqlserver/__init__.py +0 -0
  9. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/mcp_sqlserver/connection.py +0 -0
  10. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/mcp_sqlserver/server.py +0 -0
  11. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/mcp_sqlserver/tools.py +0 -0
  12. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/sqlserver_mcp_tools.egg-info/SOURCES.txt +0 -0
  13. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/sqlserver_mcp_tools.egg-info/dependency_links.txt +0 -0
  14. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/sqlserver_mcp_tools.egg-info/entry_points.txt +0 -0
  15. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/sqlserver_mcp_tools.egg-info/requires.txt +0 -0
  16. {sqlserver_mcp_tools-0.1.3 → sqlserver_mcp_tools-0.1.4}/src/sqlserver_mcp_tools.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlserver-mcp-tools
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: Servidor MCP (Model Context Protocol) para SQL Server com controle de permissões e modo somente-leitura
5
5
  Author: hlgurgel
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sqlserver-mcp-tools"
7
- version = "0.1.3"
7
+ version = "0.1.4"
8
8
  description = "Servidor MCP (Model Context Protocol) para SQL Server com controle de permissões e modo somente-leitura"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -35,15 +35,50 @@ class _StreamableHTTPASGIApp:
35
35
  await self.session_manager.handle_request(scope, receive, send)
36
36
 
37
37
 
38
+ class _HealthCheckMiddleware:
39
+ """Responde 200 OK a um GET simples no /mcp (sem Accept text/event-stream).
40
+
41
+ Clientes como o Claude Desktop validam a URL com um GET simples (como um
42
+ navegador). O transport Streamable HTTP rejeita esse GET com 406, fazendo o
43
+ cliente concluir que "nenhum servidor respondeu". Este middleware intercepta
44
+ esses GETs e devolve um health check JSON, deixando passar apenas GETs que
45
+ de fato querem abrir um stream SSE (Accept: text/event-stream).
46
+ """
47
+
48
+ def __init__(self, app):
49
+ self.app = app
50
+
51
+ async def __call__(self, scope, receive, send):
52
+ if (
53
+ scope["type"] == "http"
54
+ and scope["method"] == "GET"
55
+ and scope["path"] == "/mcp"
56
+ ):
57
+ headers = {k.decode().lower(): v.decode() for k, v in scope["headers"]}
58
+ accept = headers.get("accept", "")
59
+ if "text/event-stream" not in accept:
60
+ body = b'{"status":"ok"}'
61
+ await send({
62
+ "type": "http.response.start",
63
+ "status": 200,
64
+ "headers": [[b"content-type", b"application/json"]],
65
+ })
66
+ await send({"type": "http.response.body", "body": body})
67
+ return
68
+ await self.app(scope, receive, send)
69
+
70
+
38
71
  def criar_app():
39
72
  """Monta a aplicacao Starlette com o transporte Streamable HTTP em /mcp."""
40
73
  from starlette.applications import Starlette
74
+ from starlette.middleware import Middleware
41
75
  from starlette.routing import Route
42
76
 
43
- session_manager = StreamableHTTPSessionManager(app=servidor)
77
+ session_manager = StreamableHTTPSessionManager(app=servidor, json_response=True)
44
78
 
45
79
  return Starlette(
46
80
  routes=[Route("/mcp", endpoint=_StreamableHTTPASGIApp(session_manager))],
81
+ middleware=[Middleware(_HealthCheckMiddleware)],
47
82
  lifespan=lambda app: session_manager.run(),
48
83
  )
49
84
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlserver-mcp-tools
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: Servidor MCP (Model Context Protocol) para SQL Server com controle de permissões e modo somente-leitura
5
5
  Author: hlgurgel
6
6
  License-Expression: MIT