Skip to main content
Glama
pitchmuc

Knowledge Graph MCP Server

by pitchmuc

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FASTMCP_HOSTNoBind address for the HTTP transport. Use '0.0.0.0' inside Docker/Render, or '127.0.0.1' for local HTTP.
FASTMCP_PORTNoPort for the HTTP transport when running locally over HTTP (e.g., '8000').
KG_GRAPH_PATHNoPath to a different Turtle/RDF knowledge graph file. Optional; defaults to data/knowledge_graph.ttl.
MCP_CLIENT_IDNoOAuth client ID; must match the connector config exactly. Optional; required if OAuth is enabled.
MCP_TRANSPORTNoEnables the remote transport (streamable HTTP). Set to 'http' for remote deployment.
MCP_SERVER_URLNoPublic HTTPS URL without '/mcp'; required for OAuth discovery. Optional; required if OAuth is enabled.
MCP_CLIENT_SECRETNoOAuth 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 crm: prefix (http://example.org/crm#) for all classes and properties — call get_graph_schema() first to see available classes and properties.

Only SELECT and ASK queries are permitted; INSERT/DELETE/DROP/LOAD/CREATE are rejected. PREFIX crm: <http://example.org/crm#> is available automatically but may also be declared explicitly.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
usage_guide Usage guide for the Knowledge Graph MCP server. Describes the CRM-style account/contact domain and recommended tool workflows.

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues