Documentation menu
MCP server
Connect Claude, ChatGPT, Codex, Cursor or another AI assistant to Placestack over the Model Context Protocol.
Connect
The server is at https://mcp.placestack.com/mcp and uses OAuth. Your assistant opens a browser for you to sign in with your Placestack account. It has the same access as you, and its lookups count toward your organization’s usage.
claude mcp add --transport http placestack https://mcp.placestack.com/mcpRun /mcp in Claude Code to sign in.
codex mcp add placestack --url https://mcp.placestack.com/mcp
codex mcp login placestackThe second command opens your browser to sign in.
Add Placestack as a custom connector:
- Go to Customize > Connectors and click +.
- Choose Add custom connector.
- Enter
https://mcp.placestack.com/mcpas the server URL and click Add. - Click Connect and sign in with your Placestack account.
On a Claude Team or Enterprise plan, an owner adds the connector once under Organization settings > Connectors. Each member then connects and signs in with their own Placestack account.
Go to Settings, then Apps and Connectors, and turn on developer mode under Advanced settings. Create a connector with https://mcp.placestack.com/mcp as the URL and OAuth as the authentication, then sign in when asked.
Add this to ~/.cursor/mcp.json, then sign in from the MCP section of Cursor’s settings.
{
"mcpServers": {
"placestack": {
"url": "https://mcp.placestack.com/mcp"
}
}
}Add a remote MCP server with the URL https://mcp.placestack.com/mcp over Streamable HTTP. Your client needs to support OAuth, and it opens a browser for you to sign in.
Once connected, your assistant can use Placestack’s tools, prompts in your client’s slash menu, and a usage guide. See Available tools.
Connect an autonomous agent
Agents that run without a person to sign in, such as scheduled jobs and pipelines, use an API key. Create a key under API keys, then send it in the Authorization header as a bearer token. The agent acts as your organization, not as a person, and its calls count toward your organization’s usage.
from claude_agent_sdk import ClaudeAgentOptions, query
options = ClaudeAgentOptions(
mcp_servers={
"placestack": {
"type": "http",
"url": "https://mcp.placestack.com/mcp",
"headers": {"Authorization": f"Bearer {os.environ['PLACESTACK_API_KEY']}"},
}
},
allowed_tools=["mcp__placestack__*"],
)
async for message in query(prompt="Who owns 100 Main St in Raleigh NC?", options=options):
print(message)import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Who owns 100 Main St in Raleigh NC?",
options: {
mcpServers: {
placestack: {
type: "http",
url: "https://mcp.placestack.com/mcp",
headers: { Authorization: `Bearer ${process.env.PLACESTACK_API_KEY}` },
},
},
allowedTools: ["mcp__placestack__*"],
},
})) {
console.log(message);
}from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp
async with MCPServerStreamableHttp(
name="placestack",
params={
"url": "https://mcp.placestack.com/mcp",
"headers": {"Authorization": f"Bearer {os.environ['PLACESTACK_API_KEY']}"},
},
) as placestack:
agent = Agent(name="Researcher", mcp_servers=[placestack])
result = await Runner.run(agent, "Who owns 100 Main St in Raleigh NC?")
print(result.final_output)import { Agent, MCPServerStreamableHttp, run } from "@openai/agents";
const placestack = new MCPServerStreamableHttp({
name: "placestack",
url: "https://mcp.placestack.com/mcp",
requestInit: { headers: { Authorization: `Bearer ${process.env.PLACESTACK_API_KEY}` } },
});
try {
await placestack.connect();
const agent = new Agent({ name: "Researcher", mcpServers: [placestack] });
const result = await run(agent, "Who owns 100 Main St in Raleigh NC?");
console.log(result.finalOutput);
} finally {
await placestack.close();
}import { createMCPClient } from "@ai-sdk/mcp";
import { generateText } from "ai";
const placestack = await createMCPClient({
transport: {
type: "http",
url: "https://mcp.placestack.com/mcp",
headers: { Authorization: `Bearer ${process.env.PLACESTACK_API_KEY}` },
},
});
try {
const { text } = await generateText({
model: "anthropic/claude-opus-5.5",
tools: await placestack.tools(),
prompt: "Who owns 100 Main St in Raleigh NC?",
});
console.log(text);
} finally {
await placestack.close();
}Install langchain[mcp] 1.4 or later for Python, or @langchain/mcp-adapters 2.0 or later for TypeScript.
from fastmcp.client import Client
from langchain.agents import create_agent
from langchain.mcp import MCPAdapter
async with MCPAdapter(Client("https://mcp.placestack.com/mcp", auth=os.environ["PLACESTACK_API_KEY"])) as placestack:
agent = create_agent("claude-opus-5-5", await placestack.list_tools())
result = await agent.ainvoke(
{"messages": [{"role": "user", "content": "Who owns 100 Main St in Raleigh NC?"}]}
)import { MCPAdapter } from "@langchain/mcp-adapters";
import { createAgent } from "langchain";
const placestack = new MCPAdapter({
servers: {
placestack: {
url: "https://mcp.placestack.com/mcp",
headers: { Authorization: `Bearer ${process.env.PLACESTACK_API_KEY}` },
},
},
});
try {
const agent = createAgent({ model: "claude-opus-5-5", tools: await placestack.listTools() });
const result = await agent.invoke({
messages: [{ role: "user", content: "Who owns 100 Main St in Raleigh NC?" }],
});
console.log(result.messages.at(-1)?.text);
} finally {
await placestack.close();
}Add an MCP Client Tool to your AI Agent node. Set its endpoint to https://mcp.placestack.com/mcp and its transport to HTTP Streamable. Under Authentication, choose Bearer Auth and create a credential with your API key as the token.