Knowledge Graph MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FASTMCP_HOST | No | Bind address for the HTTP transport. Use '0.0.0.0' inside Docker/Render, or '127.0.0.1' for local HTTP. | |
| FASTMCP_PORT | No | Port for the HTTP transport when running locally over HTTP (e.g., '8000'). | |
| KG_GRAPH_PATH | No | Path to a different Turtle/RDF knowledge graph file. Optional; defaults to data/knowledge_graph.ttl. | |
| MCP_CLIENT_ID | No | OAuth client ID; must match the connector config exactly. Optional; required if OAuth is enabled. | |
| MCP_TRANSPORT | No | Enables the remote transport (streamable HTTP). Set to 'http' for remote deployment. | |
| MCP_SERVER_URL | No | Public HTTPS URL without '/mcp'; required for OAuth discovery. Optional; required if OAuth is enabled. | |
| MCP_CLIENT_SECRET | No | OAuth client secret / access token; must match the connector. Optional; required if OAuth is enabled. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_graph_schemaA | Describe the knowledge graph's classes, properties, and namespace. Call this before writing a raw SPARQL query with run_sparql_query, or to understand what fields are available on accounts and contacts. |
| get_graph_statsA | Return basic statistics about the loaded knowledge graph (triple/entity counts). |
| list_accountsA | List enterprise accounts in the knowledge graph, optionally filtered. Args: industry: Case-insensitive substring match on industry (optional). tier: Exact match on account tier, e.g. "Strategic", "Enterprise", "Mid-Market" (optional). region: Exact match on region code, e.g. "NA", "EMEA", "APAC" (optional). min_health_score: Only return accounts with healthScore >= this value (optional, defaults to 0 i.e. no filtering). |
| search_accountsA | Search accounts by a keyword matched against name, industry, or account owner. Args: keyword: Free-text keyword to search for (case-insensitive substring match). |
| get_accountA | Get full details for a single account, including its contacts. Args: account: The account identifier (e.g. "acct-atlasforge"), or a name/substring to look up (e.g. "AtlasForge" or "atlasforge manufacturing"). include_contacts: Whether to also list contacts linked to this account (optional, defaults to True). |
| list_contacts_for_accountA | List contacts (people) who work at a given account. Args: account: The account identifier (e.g. "acct-atlasforge") or a name/substring (e.g. "AtlasForge"). role: Optional exact match on contact role, e.g. "Economic Buyer", "Champion", "Influencer", "User". |
| search_contactsA | Search contacts by keyword matched against name, job title, or account name. Args: keyword: Free-text keyword to search for (case-insensitive substring match). role: Optional exact match on contact role, e.g. "Economic Buyer", "Champion", "Influencer", "User". |
| get_contactA | Get full details for a single contact. Args: contact: The contact identifier (e.g. "contact-adriana-koll"), or a name/substring to look up (e.g. "Adriana Koll" or "koll"). |
| run_sparql_queryA | Run a read-only SPARQL SELECT or ASK query directly against the knowledge graph. Use this for questions the higher-level account/contact tools can't answer,
e.g. joins, aggregations, or custom filters. The graph uses the Only SELECT and ASK queries are permitted; INSERT/DELETE/DROP/LOAD/CREATE
are rejected. Args: query: The SPARQL query text, e.g. "SELECT ?name ?arrUsd WHERE { ?a a crm:Account ; crm:name ?name ; crm:arrUsd ?arrUsd . } ORDER BY DESC(?arrUsd) LIMIT 5" |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| usage_guide | Usage guide for the Knowledge Graph MCP server. Describes the CRM-style account/contact domain and recommended tool workflows. |
TDQS
Scored across 9 tools
search_accounts (keyword) vs list_accounts (structured filters) both return account lists but the descriptions clarify the distinct filtering modes. Similarly search_contacts vs list_contacts_for_account are differentiated by scope. run_sparql_query has clear escape-hatch positioning relative to the higher-level tools.
All nine tools follow a consistent snake_case verb_noun pattern (get_graph_schema, search_accounts, list_accounts, get_contact, run_sparql_query, etc.). No mixed conventions or vague verbs.
Nine tools is well-scoped for a read-only CRM knowledge graph: two meta tools, three account tools, three contact tools, and a raw query escape hatch. Each earns its place.
Account and contact lifecycles are well covered for reading (list/search/get for both, plus schema, stats, and a raw SPARQL escape hatch for aggregations/joins). The surface is read-only by design, so no create/update/delete, and a bulk list-all-contacts view is missing but reachable via search_contacts or SPARQL.