Compare commits
2 Commits
2a60de1bf1
...
v1.2.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
| d540105d09 | |||
| d40ae0b238 |
@@ -252,11 +252,18 @@ def create_app(config: Config):
|
|||||||
|
|
||||||
def _print_mcp_config(external_port: int, tokens: list) -> None:
|
def _print_mcp_config(external_port: int, tokens: list) -> None:
|
||||||
"""Print Claude Code MCP configuration."""
|
"""Print Claude Code MCP configuration."""
|
||||||
|
# Use GRIST_MCP_URL if set, otherwise fall back to localhost
|
||||||
|
base_url = os.environ.get("GRIST_MCP_URL")
|
||||||
|
if base_url:
|
||||||
|
sse_url = f"{base_url.rstrip('/')}/sse"
|
||||||
|
else:
|
||||||
|
sse_url = f"http://localhost:{external_port}/sse"
|
||||||
|
|
||||||
print()
|
print()
|
||||||
print("Claude Code MCP configuration (copy-paste to add):")
|
print("Claude Code MCP configuration (copy-paste to add):")
|
||||||
for t in tokens:
|
for t in tokens:
|
||||||
config = (
|
config = (
|
||||||
f'{{"type": "sse", "url": "http://localhost:{external_port}/sse", '
|
f'{{"type": "sse", "url": "{sse_url}", '
|
||||||
f'"headers": {{"Authorization": "Bearer {t.token}"}}}}'
|
f'"headers": {{"Authorization": "Bearer {t.token}"}}}}'
|
||||||
)
|
)
|
||||||
print(f" claude mcp add-json grist-{t.name} '{config}'")
|
print(f" claude mcp add-json grist-{t.name} '{config}'")
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from grist_mcp.session import SessionTokenManager
|
|||||||
PROXY_DOCUMENTATION = {
|
PROXY_DOCUMENTATION = {
|
||||||
"description": "HTTP proxy API for bulk data operations. Use request_session_token to get a short-lived token, then call the proxy endpoint directly from scripts.",
|
"description": "HTTP proxy API for bulk data operations. Use request_session_token to get a short-lived token, then call the proxy endpoint directly from scripts.",
|
||||||
"endpoint": "POST /api/v1/proxy",
|
"endpoint": "POST /api/v1/proxy",
|
||||||
|
"endpoint_note": "The full URL is returned in the 'proxy_url' field of request_session_token response",
|
||||||
"authentication": "Bearer token in Authorization header",
|
"authentication": "Bearer token in Authorization header",
|
||||||
"request_format": {
|
"request_format": {
|
||||||
"method": "Operation name (required)",
|
"method": "Operation name (required)",
|
||||||
@@ -88,11 +89,12 @@ PROXY_DOCUMENTATION = {
|
|||||||
import requests
|
import requests
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# Use token and proxy_url from request_session_token response
|
||||||
token = sys.argv[1]
|
token = sys.argv[1]
|
||||||
host = sys.argv[2]
|
proxy_url = sys.argv[2]
|
||||||
|
|
||||||
response = requests.post(
|
response = requests.post(
|
||||||
f'{host}/api/v1/proxy',
|
proxy_url,
|
||||||
headers={'Authorization': f'Bearer {token}'},
|
headers={'Authorization': f'Bearer {token}'},
|
||||||
json={
|
json={
|
||||||
'method': 'add_records',
|
'method': 'add_records',
|
||||||
|
|||||||
Reference in New Issue
Block a user