Skip to content

Commit f5be8e2

Browse files
committed
feat: langgraph stdio demo works now
1 parent 4397df0 commit f5be8e2

1 file changed

Lines changed: 24 additions & 22 deletions

File tree

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,47 @@
1+
# src/langgraph_stdio_demo.py
2+
13
import asyncio
24
import os
35
from dotenv import load_dotenv
6+
47
from langchain_mcp_adapters.client import MultiServerMCPClient
58
from langgraph.prebuilt import create_react_agent
69
import openai
710

8-
# Load .env file
911
load_dotenv()
1012
openai.api_key = os.getenv("OPENAI_API_KEY")
1113

1214
async def main():
1315
client = MultiServerMCPClient({
14-
"math": {
15-
"command": "python",
16-
"args": ["src/demo_server.py"],
17-
"transport": "stdio"
16+
"syncable_cli": {
17+
# Adjust this path if needed—just needs to point
18+
# at your compiled mcp-stdio binary.
19+
"command": "../rust-mcp-server-syncable-cli/target/release/mcp-stdio",
20+
"args": [], # no extra args
21+
"transport": "stdio", # stdio transport
1822
}
1923
})
2024

2125
tools = await client.get_tools()
22-
print(f"Fetched {len(tools)} tools from MCP server.")
23-
for tool in tools:
24-
print(f"- {tool.name}")
26+
print(f"Fetched {len(tools)} tools:")
27+
for t in tools:
28+
print(f"{t.name}")
2529

2630
agent = create_react_agent("openai:gpt-4o", tools)
2731

28-
prompts = [
29-
("about_info", "Call the 'about_info' tool."),
30-
("analysis_scan", "Call the 'analysis_scan' tool on path '../' with display 'matrix'."),
31-
("security_scan", "Call the 'security_scan' tool on path '../'."),
32-
("dependency_scan", "Call the 'dependency_scan' tool on path '../'.")
32+
tests = [
33+
("about_info", "Call the 'about_info' tool."),
34+
("analysis_scan", "Call 'analysis_scan' on path '../' with display 'matrix'."),
35+
("security_scan", "Call 'security_scan' on path '../'."),
36+
("dependency_scan","Call 'dependency_scan' on path '../'."),
3337
]
3438

35-
for tool_name, prompt in prompts:
36-
print(f"\nInvoking agent to call '{tool_name}'...")
37-
response = await agent.ainvoke({
38-
"messages": [
39-
{"role": "user", "content": prompt}
40-
]
39+
for name, prompt in tests:
40+
print(f"\n--- {name}{prompt}")
41+
resp = await agent.ainvoke({
42+
"messages": [{"role": "user", "content": prompt}]
4143
})
42-
print(f"Result for '{tool_name}':")
43-
print(response)
44+
print(resp)
4445

45-
asyncio.run(main())
46+
if __name__ == "__main__":
47+
asyncio.run(main())

0 commit comments

Comments
 (0)